TagSupport使用入门

YOLOv8实战:液体泄漏检测模型训练与部署指南 目标检测是计算机视觉的核心任务之一,通过深度学习技术实现对图像中特定目标的定位与识别。YOLO系列算法因其出色的实时性能在工业检测领域广泛应用,其中YOLOv8通过改进网络结构和训练策略,在精度与速度间取得了更好平衡。本文以液体泄漏检测为应用场景,详细解析如何使用YOLOv8构建工业级检测系统,涵盖数据采集、模型训练、性能优化等关键技术环节。针对工业场景中的小目标检测难题,特别介绍了数据增强策略和模型压缩方法,并提供了完整的Python部署代码示例。通过结合TensorRT加速和边缘计算技术,该方案可广泛应 阅读详情



Java代码  收藏代码
  1. 定义最简单的标签   
  2. 自定义标签采用Default Adapter模式(缺省适配模式)   
  3. Java代码   
  4. //最简单的标签     
  5. public class LangHuaTag extends TagSupport {     
  6.     private long startTime;     
  7.     private long endTime;     
  8.          
  9.     public int doStartTag() throws JspException {     
  10.         startTime = System.currentTimeMillis();     
  11.         //表示定制标记里面有所包括的JSP页面     
  12.         return TagSupport.EVAL_BODY_INCLUDE;     
  13.     }     
  14.     public int doEndTag() throws JspException {     
  15.         endTime = System.currentTimeMillis();     
  16.         long elapsed = endTime - startTime;          
  17.         try {     
  18.             JspWriter out = pageContext.getOut();     
  19.             out.println("runtime is "+ elapsed);     
  20.         } catch (IOException e) {     
  21.             e.printStackTrace();     
  22.         }     
  23.         //表示JSP页面继续运行     
  24.         return TagSupport.EVAL_PAGE;     
  25.     }     
  26.          
  27. }     
  28. //代属性的标签     
  29. public class DateTag extends TagSupport {     
  30.     private String pattern = "yyyy-MM-dd hh:mm:ss";     
  31.     private Date date;     
  32.     //必须要有Set方法,因为是属性可以设值     
  33.     public void setPattern(String pattern) {     
  34.         this.pattern = pattern;     
  35.     }     
  36.          
  37.     public void setDate(Date date) {     
  38.         this.date = date;     
  39.     }     
  40.     
  41.     public int doEndTag() throws JspException {     
  42.         SimpleDateFormat sdf = new SimpleDateFormat(pattern);     
  43.         //如果没有就是当前时间     
  44.         if(date==null){     
  45.             date = new Date();     
  46.         }            
  47.         JspWriter out = pageContext.getOut();     
  48.         try {     
  49.             out.print(sdf.format(date));     
  50.         } catch (IOException e) {     
  51.             e.printStackTrace();     
  52.         }     
  53.         return TagSupport.EVAL_PAGE;     
  54.     }     
  55. }     
  56.     
  57. /**   
  58.  * 循环输出   
  59.  * @author Administrator   
  60.  *   
  61.  */    
  62. public class LoopTag extends TagSupport {     
  63.     private int times =0;     
  64.     //Set方法设值     
  65.     public void setTimes(int times) {     
  66.         this.times = times;     
  67.     }     
  68.          
  69.     public int doStartTag() throws JspException {     
  70.         //表示定制标记里面有所包括的JSP页面     
  71.         return TagSupport.EVAL_BODY_INCLUDE;     
  72.     }     
  73.          
  74.     public int doAfterBody() throws JspException {     
  75.         if(times>0){     
  76.             times--;     
  77.             //表示双从标签开始输入     
  78.             return TagSupport.EVAL_BODY_AGAIN;     
  79.         }        
  80.         //表示结束,忽略标签内部的内容     
  81.         return TagSupport.SKIP_BODY;     
  82.     }     
  83.          
  84. }    
  85.   
  86. //最简单的标签  
  87. public class LangHuaTag extends TagSupport {  
  88.     private long startTime;  
  89.     private long endTime;  
  90.       
  91.     public int doStartTag() throws JspException {  
  92.         startTime = System.currentTimeMillis();  
  93.         //表示定制标记里面有所包括的JSP页面  
  94.         return TagSupport.EVAL_BODY_INCLUDE;  
  95.     }  
  96.     public int doEndTag() throws JspException {  
  97.         endTime = System.currentTimeMillis();  
  98.         long elapsed = endTime - startTime;       
  99.         try {  
  100.             JspWriter out = pageContext.getOut();  
  101.             out.println("runtime is "+ elapsed);  
  102.         } catch (IOException e) {  
  103.             e.printStackTrace();  
  104.         }  
  105.         //表示JSP页面继续运行  
  106.         return TagSupport.EVAL_PAGE;  
  107.     }  
  108.       
  109. }  
  110. //代属性的标签  
  111. public class DateTag extends TagSupport {  
  112.     private String pattern = "yyyy-MM-dd hh:mm:ss";  
  113.     private Date date;  
  114.     //必须要有Set方法,因为是属性可以设值  
  115.     public void setPattern(String pattern) {  
  116.         this.pattern = pattern;  
  117.     }  
  118.       
  119.     public void setDate(Date date) {  
  120.         this.date = date;  
  121.     }  
  122.   
  123.     public int doEndTag() throws JspException {  
  124.         SimpleDateFormat sdf = new SimpleDateFormat(pattern);  
  125.         //如果没有就是当前时间  
  126.         if(date==null){  
  127.             date = new Date();  
  128.         }         
  129.         JspWriter out = pageContext.getOut();  
  130.         try {  
  131.             out.print(sdf.format(date));  
  132.         } catch (IOException e) {  
  133.             e.printStackTrace();  
  134.         }  
  135.         return TagSupport.EVAL_PAGE;  
  136.     }  
  137. }  
  138.   
  139. /** 
  140.  * 循环输出 
  141.  * @author Administrator 
  142.  * 
  143.  */  
  144. public class LoopTag extends TagSupport {  
  145.     private int times =0;  
  146.     //Set方法设值  
  147.     public void setTimes(int times) {  
  148.         this.times = times;  
  149.     }  
  150.       
  151.     public int doStartTag() throws JspException {  
  152.         //表示定制标记里面有所包括的JSP页面  
  153.         return TagSupport.EVAL_BODY_INCLUDE;  
  154.     }  
  155.       
  156.     public int doAfterBody() throws JspException {  
  157.         if(times>0){  
  158.             times--;  
  159.             //表示双从标签开始输入  
  160.             return TagSupport.EVAL_BODY_AGAIN;  
  161.         }     
  162.         //表示结束,忽略标签内部的内容  
  163.         return TagSupport.SKIP_BODY;  
  164.     }  
  165.       
  166. }  
  167.   
  168.   
  169.   
  170.   
  171. 配置文件   
  172. Xml代码   
  173. <?xml version="1.0" encoding="UTF-8" ?>    
  174. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"    
  175.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  176.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"    
  177.     version="2.0">    
  178.     <tlib-version>1.0</tlib-version>    
  179.     <short-name>util</short-name>    
  180.     <uri>http://langhua.com/taglib/util</uri>    
  181.     <tag>    
  182.         <name>timer</name>    
  183.         <tag-class>com.langhua.tagsupport.LangHuaTag</tag-class>    
  184.         <body-content>JSP</body-content>    
  185.         <!-- JSP,empty表示能能包函内容的,scriptless,tagdependent -->    
  186.     </tag>    
  187.          
  188.     <tag>    
  189.         <name>date</name>    
  190.         <tag-class>com.langhua.tagsupport.DateTag</tag-class>    
  191.         <body-content>empty</body-content>           
  192.         <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->    
  193.         <attribute>    
  194.             <!-- 标签名 -->    
  195.             <name>time</name>    
  196.             <!-- 是否为可选属性 -->    
  197.             <required>false</required>    
  198.             <!-- 是否接受JSP表达示计算结果 -->    
  199.             <rtexprvalue>true</rtexprvalue>    
  200.         </attribute>    
  201.         <attribute>    
  202.             <name>pattern</name>    
  203.             <required>true</required>    
  204.             <rtexprvalue>false</rtexprvalue>    
  205.         </attribute>    
  206.     </tag>    
  207.          
  208.     <tag>    
  209.         <name>loop</name>    
  210.         <tag-class>com.langhua.tagsupport.LoopTag</tag-class>    
  211.         <body-content>JSP</body-content>             
  212.         <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->    
  213.         <attribute>    
  214.             <!-- 标签名 -->    
  215.             <name>times</name>    
  216.             <!-- 是否为可选属性 -->    
  217.             <required>true</required>    
  218.             <!-- 是否接受JSP表达示计算结果 -->    
  219.             <rtexprvalue>true</rtexprvalue>    
  220.         </attribute>           
  221.     </tag>    
  222. </taglib>    
  223.   
  224. <?xml version="1.0" encoding="UTF-8" ?>  
  225. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  226.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  227.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  228.     version="2.0">  
  229.     <tlib-version>1.0</tlib-version>  
  230.     <short-name>util</short-name>  
  231.     <uri>http://langhua.com/taglib/util</uri>  
  232.     <tag>  
  233.         <name>timer</name>  
  234.         <tag-class>com.langhua.tagsupport.LangHuaTag</tag-class>  
  235.         <body-content>JSP</body-content>  
  236.         <!-- JSP,empty表示能能包函内容的,scriptless,tagdependent -->  
  237.     </tag>  
  238.       
  239.     <tag>  
  240.         <name>date</name>  
  241.         <tag-class>com.langhua.tagsupport.DateTag</tag-class>  
  242.         <body-content>empty</body-content>        
  243.         <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->  
  244.         <attribute>  
  245.             <!-- 标签名 -->  
  246.             <name>time</name>  
  247.             <!-- 是否为可选属性 -->  
  248.             <required>false</required>  
  249.             <!-- 是否接受JSP表达示计算结果 -->  
  250.             <rtexprvalue>true</rtexprvalue>  
  251.         </attribute>  
  252.         <attribute>  
  253.             <name>pattern</name>  
  254.             <required>true</required>  
  255.             <rtexprvalue>false</rtexprvalue>  
  256.         </attribute>  
  257.     </tag>  
  258.       
  259.     <tag>  
  260.         <name>loop</name>  
  261.         <tag-class>com.langhua.tagsupport.LoopTag</tag-class>  
  262.         <body-content>JSP</body-content>          
  263.         <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->  
  264.         <attribute>  
  265.             <!-- 标签名 -->  
  266.             <name>times</name>  
  267.             <!-- 是否为可选属性 -->  
  268.             <required>true</required>  
  269.             <!-- 是否接受JSP表达示计算结果 -->  
  270.             <rtexprvalue>true</rtexprvalue>  
  271.         </attribute>        
  272.     </tag>  
  273. </taglib>  
  274.   
  275.   
  276. JSP页面   
  277. Html代码   
  278. <%@ taglib prefix="util" uri="http://langhua.com/taglib/util"%>    
  279.     
  280. <util:timer></util:timer>    
  281. <util:loop times="3">    
  282.     <util:date pattern="yyyy-MM-dd" /><br/>    
  283. </util:loop>    
  284.   
  285. <%@ taglib prefix="util" uri="http://langhua.com/taglib/util"%>  
  286.   
  287. <util:timer></util:timer>  
  288. <util:loop times="3">  
  289.     <util:date pattern="yyyy-MM-dd" /><br/>  
  290. </util:loop>  
  291.   
  292. TagSupport的流程图   
  293.    
  294. EVAL_BODY_INCLUDE 处理标记内容,并把这些内容写到输出流中doStartTag()   
  295. SKIP_BODY 不处理标记内容doStartTag(),doAfterBody()   
  296. EVAL_BODY_AGAIN 又重头处理doAfterBody()   
  297. EVAL_PAGE 继续执行JSP里面的代码 doEndTag()   
  298. SKIP_PAGE 不继续执行JSP里面的代码 doEndTag()   
  299.   
  300. [img]http://langhua9527.iteye.com/upload/attachment/77593/2ce5c561-a5ea-36d1-9082-25e62273dcb2.jpg[/img]  
JSP自定义分页标签 extends TagSupport JSP自定义分页标签 extends TagSupport 多种分页风格无需额外资源,使用简单易懂:WebRoot/WEB-INF/tms-tags.tld 文件路径 立即下载

相关推荐

利用TagSupport创建自定义标签实现网页左侧菜单

利用TagSupport创建自定义标签实现网页左侧菜单

自订标签库--TagSupport详解

1 TagSupport与BodyTagSupport的区别  TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则就用BodyTagSupport。      交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。     用TagSupport实现的标签,都可以用BodyTagSuppo

1万+

【电路设计实战】BUCK降压电路:从原理到PCB布局的降噪与效率优化

本文深入剖析了BUCK降压电路的工作原理,并针对其固有的开关噪声问题,提供了从核心元件选型到PCB布局的全面优化方案。文章重点探讨了电感、电容等关键元件的选型要点,强调了低ESR电容和肖特基二极管的重要性,并详细阐述了如何通过最小化功率回路、保护敏感信号线等PCB布局实战技巧,有效抑制噪声、提升效率与稳定性。

weixin_29304021的博客 228

TagSupport标签的应用

在用Spring做开发的时候,可以自己写个标签来实现一些特殊的处理,比如说页面操作权限验证等。其实一个Tag对应着一个java类,该类继承了TagSupport(也可以扩展其他类来实现)。 TagSupport实现了Tag接口,该类提供了四个常用的方法 1)      doStartTag(): jsp容器在解释jsp页面时,遇到自定义标签,会先建立一个便签处理对象,经过必要的处理之后,调用

菜鸟博客 3159

ADS2019学习笔记:三、SPICE model导入

以BZX84-C33 SPICE model为例,学习如何在ADS2019中导入SPICE model。

qq_42945911的博客 6495

LeRobot SO-ARM100 学习笔记(2) diffusion module

对 lerobot 中的 diffusion policy 进行基本的代码阅读

mikhailbran的博客 1588

TagSupport 源码学习

java中自定义了一个SiteTag,用来做站点引用 Type Hierarchy 英 [ˈhaɪərɑ:ki] 类层次图如下 自顶向下进行分析 类 TagSupport 标签支持类,自定义Tag需要继承它实现 在javax.servlet.jsp.tagext下 public class TagSupport implements IterationTag, Seriali

当富网络 948

Vim 入门到够用:Linux 文本编辑器的三种模式、常用操作与实战技巧

i 进入编辑模式Esc 退出编辑模式回到命令模式: 从命令模式进入底行模式编辑,不一定非得“打开就直接打字”。一旦你接受了“模式”这件事,后面很多操作都会顺起来。学 Vim,不要追求一次学全,先把“命令模式—编辑模式—底行模式”这条主线练熟。只要这条主线通了,后面的复制、删除、搜索、替换,都是顺手补上去的能力。

Web安全工具库 803

java taglib uri_jsp中自定义Taglib详解

一、自定义标签入门之无参数自定义标签1.开发自定义标签类当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标...

weixin_29082143的博客 989

计算机视觉——多视图几何

多视图几何1.前言1.1 多视图几何概念2. 基本原理2.1 对极几何2.2 基础矩阵2.2.1 基础矩阵推导2.2.2 求解基础矩阵3. 实验过程3.1 实验数据准备3.2 实验代码3.3 实验结果及分析4. 实验中遇到的问题 1.前言 1.1 多视图几何概念 多视图几何是利用在不同视点所拍摄图像间的关系,来研究照相机之间或者特征之间关系的一门科学。 多视图几何(Multiple View ...

RuiMa的博客 7715

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

TagSupport 类别

TagSupport 类别 如果在自订标签库时,并不需要对标签本体作处理,则您可以继承TagSupport类别,TagSupport类别实作了Tag与 IterationTag介面,IterationTag介面则是Tag介面的子介面,TagSupport类别替您预先实作了这两个介面中的方法,在继承TagSupport之后,您视需要来改写当中的一

shichunle的专栏 783

47、利用组策略配置 Windows 防火墙与 IPsec 全解析

本文深入解析了如何利用组策略配置Windows防火墙与IPsec,涵盖防火墙规则基础、IPsec身份验证与加密机制、服务器和域隔离实现方法、WFAS中新旧IPsec规则的区别与配置流程,并详细说明了防火墙属性与规则的优先级计算方式。同时介绍了证书服务、EFS等未详述的安全功能及相关学习资源,帮助管理员通过组策略有效提升网络安全性。

onion的博客 103

TagSupport和BodyTagSupport的区别

一:TagSupport和BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互(交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容) 就用BodyTagSupport。但是BodyTagSupport可以实现TagSupport的所有方法因为其继承了...

qq_41017835的博客 232

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7727

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

tagSupport类的学习

在上一篇自定义标签的文章中,讲到了自定标签的步骤,其中有一步是集成tagSupport。对tagSupport类也不是很熟悉,特此学习tagSupport,在此做下简要笔记。1. TagSupport与BodyTagSupport的区别    TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用   TagS

zrzlxln的专栏 958

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TagSupport doStartTag doEndTag

1 TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。     用TagSupport实现的标签,都可以用BodyTag

Jenny的博客 797

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JSP/Servlet: TagSupport 类别

JSP/Servlet: TagSupport 类别如果在自订标签库时,并不需要对标签本体作处理,则您可以继承TagSupport类别,TagSupport类别实作了Tag与 IterationTag介面,IterationTag介面则是Tag介面的子介面,TagSupport类别替您预先实作了这两个介面中的方法,在继承TagSupport之后,您视需要来改写当中的一些方法(这是 Default

luoping2002123的专栏 425

TagSupport类的生命周期

TagSupport类的生命周期 它的生命周期各个阶段的具体执行过程如下: (1)当JSP容器在解释JSP页面时,如果遇到自定义标签的开始标记,将利用“标记处理类”建立一个“标记处理对象”。在建立“标记处理对象”的过程周中,JSP容器会回调setPageContext()方法,然后根据自定义标签的属性值来初始化“标签处理对象”的属性。 (2)接着JSP容器会运行doStartTag(

a1304317638的专栏 774

TagSupport与BodyTagSupport的区别

TagSupport与BodyTagSupport的区别TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。     交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。    用TagSupport实现的标签,都可以用BodyTagSupport来实...

苦茶的博客 236

BodyTagSupport 和TagSupport的区别

1. TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。    交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。 用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSuppor...

qq_42280372的博客 252

RequestContextAwareTag 自定义标签解决 TagSupport 不能进行 spring 的 bean 注入问题

在进行自定义标签时,使用TagSupport,不能进行 spring 的 bean 注入,当然,我们可以自己实现,但是 spring 框架不可能没有考虑到这一点,因此不使用TagSupport,而使用 spring 框架提供的 RequestContextAwareTag,进行自定义标签的开发,RequestContextAwareTag 实际上继承了TagSupport,对 TagSupport 进行了扩展,扩展后就可以通过 spring 的 RequestContext 获取 spring 的 b...

悟世君子的博客 793
上一篇: ibatis入门
下一篇: 自订标签库--TagSupport详解
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值