- 定义最简单的标签
- 自定义标签采用Default Adapter模式(缺省适配模式)
- Java代码
- //最简单的标签
- public class LangHuaTag extends TagSupport {
- private long startTime;
- private long endTime;
- public int doStartTag() throws JspException {
- startTime = System.currentTimeMillis();
- //表示定制标记里面有所包括的JSP页面
- return TagSupport.EVAL_BODY_INCLUDE;
- }
- public int doEndTag() throws JspException {
- endTime = System.currentTimeMillis();
- long elapsed = endTime - startTime;
- try {
- JspWriter out = pageContext.getOut();
- out.println("runtime is "+ elapsed);
- } catch (IOException e) {
- e.printStackTrace();
- }
- //表示JSP页面继续运行
- return TagSupport.EVAL_PAGE;
- }
- }
- //代属性的标签
- public class DateTag extends TagSupport {
- private String pattern = "yyyy-MM-dd hh:mm:ss";
- private Date date;
- //必须要有Set方法,因为是属性可以设值
- public void setPattern(String pattern) {
- this.pattern = pattern;
- }
- public void setDate(Date date) {
- this.date = date;
- }
- public int doEndTag() throws JspException {
- SimpleDateFormat sdf = new SimpleDateFormat(pattern);
- //如果没有就是当前时间
- if(date==null){
- date = new Date();
- }
- JspWriter out = pageContext.getOut();
- try {
- out.print(sdf.format(date));
- } catch (IOException e) {
- e.printStackTrace();
- }
- return TagSupport.EVAL_PAGE;
- }
- }
- /**
- * 循环输出
- * @author Administrator
- *
- */
- public class LoopTag extends TagSupport {
- private int times =0;
- //Set方法设值
- public void setTimes(int times) {
- this.times = times;
- }
- public int doStartTag() throws JspException {
- //表示定制标记里面有所包括的JSP页面
- return TagSupport.EVAL_BODY_INCLUDE;
- }
- public int doAfterBody() throws JspException {
- if(times>0){
- times--;
- //表示双从标签开始输入
- return TagSupport.EVAL_BODY_AGAIN;
- }
- //表示结束,忽略标签内部的内容
- return TagSupport.SKIP_BODY;
- }
- }
- //最简单的标签
- public class LangHuaTag extends TagSupport {
- private long startTime;
- private long endTime;
- public int doStartTag() throws JspException {
- startTime = System.currentTimeMillis();
- //表示定制标记里面有所包括的JSP页面
- return TagSupport.EVAL_BODY_INCLUDE;
- }
- public int doEndTag() throws JspException {
- endTime = System.currentTimeMillis();
- long elapsed = endTime - startTime;
- try {
- JspWriter out = pageContext.getOut();
- out.println("runtime is "+ elapsed);
- } catch (IOException e) {
- e.printStackTrace();
- }
- //表示JSP页面继续运行
- return TagSupport.EVAL_PAGE;
- }
- }
- //代属性的标签
- public class DateTag extends TagSupport {
- private String pattern = "yyyy-MM-dd hh:mm:ss";
- private Date date;
- //必须要有Set方法,因为是属性可以设值
- public void setPattern(String pattern) {
- this.pattern = pattern;
- }
- public void setDate(Date date) {
- this.date = date;
- }
- public int doEndTag() throws JspException {
- SimpleDateFormat sdf = new SimpleDateFormat(pattern);
- //如果没有就是当前时间
- if(date==null){
- date = new Date();
- }
- JspWriter out = pageContext.getOut();
- try {
- out.print(sdf.format(date));
- } catch (IOException e) {
- e.printStackTrace();
- }
- return TagSupport.EVAL_PAGE;
- }
- }
- /**
- * 循环输出
- * @author Administrator
- *
- */
- public class LoopTag extends TagSupport {
- private int times =0;
- //Set方法设值
- public void setTimes(int times) {
- this.times = times;
- }
- public int doStartTag() throws JspException {
- //表示定制标记里面有所包括的JSP页面
- return TagSupport.EVAL_BODY_INCLUDE;
- }
- public int doAfterBody() throws JspException {
- if(times>0){
- times--;
- //表示双从标签开始输入
- return TagSupport.EVAL_BODY_AGAIN;
- }
- //表示结束,忽略标签内部的内容
- return TagSupport.SKIP_BODY;
- }
- }
- 配置文件
- Xml代码
- <?xml version="1.0" encoding="UTF-8" ?>
- <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
- <tlib-version>1.0</tlib-version>
- <short-name>util</short-name>
- <uri>http://langhua.com/taglib/util</uri>
- <tag>
- <name>timer</name>
- <tag-class>com.langhua.tagsupport.LangHuaTag</tag-class>
- <body-content>JSP</body-content>
- <!-- JSP,empty表示能能包函内容的,scriptless,tagdependent -->
- </tag>
- <tag>
- <name>date</name>
- <tag-class>com.langhua.tagsupport.DateTag</tag-class>
- <body-content>empty</body-content>
- <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->
- <attribute>
- <!-- 标签名 -->
- <name>time</name>
- <!-- 是否为可选属性 -->
- <required>false</required>
- <!-- 是否接受JSP表达示计算结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <name>pattern</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- </tag>
- <tag>
- <name>loop</name>
- <tag-class>com.langhua.tagsupport.LoopTag</tag-class>
- <body-content>JSP</body-content>
- <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->
- <attribute>
- <!-- 标签名 -->
- <name>times</name>
- <!-- 是否为可选属性 -->
- <required>true</required>
- <!-- 是否接受JSP表达示计算结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
- <?xml version="1.0" encoding="UTF-8" ?>
- <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
- <tlib-version>1.0</tlib-version>
- <short-name>util</short-name>
- <uri>http://langhua.com/taglib/util</uri>
- <tag>
- <name>timer</name>
- <tag-class>com.langhua.tagsupport.LangHuaTag</tag-class>
- <body-content>JSP</body-content>
- <!-- JSP,empty表示能能包函内容的,scriptless,tagdependent -->
- </tag>
- <tag>
- <name>date</name>
- <tag-class>com.langhua.tagsupport.DateTag</tag-class>
- <body-content>empty</body-content>
- <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->
- <attribute>
- <!-- 标签名 -->
- <name>time</name>
- <!-- 是否为可选属性 -->
- <required>false</required>
- <!-- 是否接受JSP表达示计算结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <name>pattern</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- </tag>
- <tag>
- <name>loop</name>
- <tag-class>com.langhua.tagsupport.LoopTag</tag-class>
- <body-content>JSP</body-content>
- <!-- JSP,empty表示不能包函内容的,scriptless,tagdependent -->
- <attribute>
- <!-- 标签名 -->
- <name>times</name>
- <!-- 是否为可选属性 -->
- <required>true</required>
- <!-- 是否接受JSP表达示计算结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
- JSP页面
- Html代码
- <%@ taglib prefix="util" uri="http://langhua.com/taglib/util"%>
- <util:timer></util:timer>
- <util:loop times="3">
- <util:date pattern="yyyy-MM-dd" /><br/>
- </util:loop>
- <%@ taglib prefix="util" uri="http://langhua.com/taglib/util"%>
- <util:timer></util:timer>
- <util:loop times="3">
- <util:date pattern="yyyy-MM-dd" /><br/>
- </util:loop>
- TagSupport的流程图
- EVAL_BODY_INCLUDE 处理标记内容,并把这些内容写到输出流中doStartTag()
- SKIP_BODY 不处理标记内容doStartTag(),doAfterBody()
- EVAL_BODY_AGAIN 又重头处理doAfterBody()
- EVAL_PAGE 继续执行JSP里面的代码 doEndTag()
- SKIP_PAGE 不继续执行JSP里面的代码 doEndTag()
- [img]http://langhua9527.iteye.com/upload/attachment/77593/2ce5c561-a5ea-36d1-9082-25e62273dcb2.jpg[/img]
相关推荐
利用TagSupport创建自定义标签实现网页左侧菜单
利用TagSupport创建自定义标签实现网页左侧菜单
自订标签库--TagSupport详解
1 TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。 用TagSupport实现的标签,都可以用BodyTagSuppo
【电路设计实战】BUCK降压电路:从原理到PCB布局的降噪与效率优化
本文深入剖析了BUCK降压电路的工作原理,并针对其固有的开关噪声问题,提供了从核心元件选型到PCB布局的全面优化方案。文章重点探讨了电感、电容等关键元件的选型要点,强调了低ESR电容和肖特基二极管的重要性,并详细阐述了如何通过最小化功率回路、保护敏感信号线等PCB布局实战技巧,有效抑制噪声、提升效率与稳定性。
TagSupport标签的应用
在用Spring做开发的时候,可以自己写个标签来实现一些特殊的处理,比如说页面操作权限验证等。其实一个Tag对应着一个java类,该类继承了TagSupport(也可以扩展其他类来实现)。 TagSupport实现了Tag接口,该类提供了四个常用的方法 1) doStartTag(): jsp容器在解释jsp页面时,遇到自定义标签,会先建立一个便签处理对象,经过必要的处理之后,调用
ADS2019学习笔记:三、SPICE model导入
以BZX84-C33 SPICE model为例,学习如何在ADS2019中导入SPICE model。
LeRobot SO-ARM100 学习笔记(2) diffusion module
对 lerobot 中的 diffusion policy 进行基本的代码阅读
TagSupport 源码学习
java中自定义了一个SiteTag,用来做站点引用 Type Hierarchy 英 [ˈhaɪərɑ:ki] 类层次图如下 自顶向下进行分析 类 TagSupport 标签支持类,自定义Tag需要继承它实现 在javax.servlet.jsp.tagext下 public class TagSupport implements IterationTag, Seriali
Vim 入门到够用:Linux 文本编辑器的三种模式、常用操作与实战技巧
i 进入编辑模式Esc 退出编辑模式回到命令模式: 从命令模式进入底行模式编辑,不一定非得“打开就直接打字”。一旦你接受了“模式”这件事,后面很多操作都会顺起来。学 Vim,不要追求一次学全,先把“命令模式—编辑模式—底行模式”这条主线练熟。只要这条主线通了,后面的复制、删除、搜索、替换,都是顺手补上去的能力。
java taglib uri_jsp中自定义Taglib详解
一、自定义标签入门之无参数自定义标签1.开发自定义标签类当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标...
计算机视觉——多视图几何
多视图几何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 ...
ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南
本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。
TagSupport 类别
TagSupport 类别 如果在自订标签库时,并不需要对标签本体作处理,则您可以继承TagSupport类别,TagSupport类别实作了Tag与 IterationTag介面,IterationTag介面则是Tag介面的子介面,TagSupport类别替您预先实作了这两个介面中的方法,在继承TagSupport之后,您视需要来改写当中的一
47、利用组策略配置 Windows 防火墙与 IPsec 全解析
本文深入解析了如何利用组策略配置Windows防火墙与IPsec,涵盖防火墙规则基础、IPsec身份验证与加密机制、服务器和域隔离实现方法、WFAS中新旧IPsec规则的区别与配置流程,并详细说明了防火墙属性与规则的优先级计算方式。同时介绍了证书服务、EFS等未详述的安全功能及相关学习资源,帮助管理员通过组策略有效提升网络安全性。
TagSupport和BodyTagSupport的区别
一:TagSupport和BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互(交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容) 就用BodyTagSupport。但是BodyTagSupport可以实现TagSupport的所有方法因为其继承了...
Android Telephony主要模块及功能
Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
tagSupport类的学习
在上一篇自定义标签的文章中,讲到了自定标签的步骤,其中有一步是集成tagSupport。对tagSupport类也不是很熟悉,特此学习tagSupport,在此做下简要笔记。1. TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用 TagS
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
TagSupport doStartTag doEndTag
1 TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。 用TagSupport实现的标签,都可以用BodyTag
最新的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
TagSupport类的生命周期
TagSupport类的生命周期 它的生命周期各个阶段的具体执行过程如下: (1)当JSP容器在解释JSP页面时,如果遇到自定义标签的开始标记,将利用“标记处理类”建立一个“标记处理对象”。在建立“标记处理对象”的过程周中,JSP容器会回调setPageContext()方法,然后根据自定义标签的属性值来初始化“标签处理对象”的属性。 (2)接着JSP容器会运行doStartTag(
TagSupport与BodyTagSupport的区别
TagSupport与BodyTagSupport的区别TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。 用TagSupport实现的标签,都可以用BodyTagSupport来实...
BodyTagSupport 和TagSupport的区别
1. TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。 交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。 用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSuppor...
RequestContextAwareTag 自定义标签解决 TagSupport 不能进行 spring 的 bean 注入问题
在进行自定义标签时,使用TagSupport,不能进行 spring 的 bean 注入,当然,我们可以自己实现,但是 spring 框架不可能没有考虑到这一点,因此不使用TagSupport,而使用 spring 框架提供的 RequestContextAwareTag,进行自定义标签的开发,RequestContextAwareTag 实际上继承了TagSupport,对 TagSupport 进行了扩展,扩展后就可以通过 spring 的 RequestContext 获取 spring 的 b...

1万+



被折叠的 条评论
为什么被折叠?



