jsp自定义标签 TagSupport
定义最简单的标签
自定义标签采用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;
- }
- }
配置文件
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>
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的流程图
SKIP_BODY 表示不用处理标签体,直接调用doEndTag()方法。
SKIP_PAGE 忽略标签后面的JSP内容。
EVAL_PAGE 处理标签后,继续处理JSP后面的内容。
EVAL_BODY_BUFFERED 表示需要处理标签体。
EVAL_BODY_INCLUDE 表示需要处理标签体,但绕过setBodyContent()和doInitBody()方法
EVAL_BODY_AGAIN 对标签体循环处理。
jsp自定义标签 TagSupport相关推荐
- 如何使用jsp自定义标签 JspTag 使用入门
java开发中,sturts标签和c标签就是我们常用的两种标签,本文主要教大家如何定义自己的标签,已达到代码整合,公共化的目的.通过jsp自定义标签,可以将一个元素,或者一个表格,一个div甚至整个页 ...
- JSP自定义标签学习笔记
http://blog.csdn.net/liangbinny/article/details/6309893 本文是本人学习<JavaWeb学习>书籍所记下的学习笔记 一.概述 JSP ...
- JSP自定义标签开发入门
一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...
- html模板(base标签,meta标签,禁用浏览器缓存)+JSP自定义标签荔枝
[1]html模板 <html> <head><!-- base标签表示uri相对路径的基准路径 --><base href="http://loc ...
- jsp自定义标签(taglib)编写的原理和实现
jsp自定义标签(taglib)编写的原理和实现 转:http://www.javaeye.com/topic/157737 个tag就是一个普通的java类,它惟一特别之处是它必须继承TagSupp ...
- 浅谈JSP自定义标签实现过程
(一) 没有正文的JSP自定义标签实现 (1):定义JSP自定义标签处理类 import java.io.IOException; import java.util.Date; import java ...
- JSP自定义标签详解(1)
JSP自定义标签 自定义JSP标签概述 自定义JSP标签就是程序员定义的一种JSP标签,这种标签把那些信息显示逻辑封装在一个单独的Java类中,通过一个XML文件来描述它的使用.当页面中需要使用类似的 ...
- java标签uri,JSP自定义标签-定制URI
JSP自定义标签-定制URI 1 JSP自定义标签的定制URI 默认情况下JSP自定义标签的tld文件存放在WEB-INF目录下,但是我们可以使用自定义URI来改变tld文件存放的位置.重点是,需要在 ...
- java jsp 自定义标签_JSP自定义标签
在本章中,我们将讨论JSP中的自定义标签.自定义标签是用户定义的JSP语言元素.当包含自定义标签的JSP页面被转换成一个servlet时,标签被转换为一个名为标签处理程序的对象的操作. 然后,Web容 ...
最新文章
- 第九期直播|《深度相机与应用》精彩回顾
- Js + Css的msn式的popup提示窗口的实现
- StringTokenizer(字符串标记)
- [PY3]——内置数据结构(3)——字符串及其常用操作
- 使用CSS对页面加载的淡入效果
- python中的散点图代码-绘制python中的线和散点图
- 云炬60s看世界20211122
- OpenGL blending sort 混合排序(前后)的实例
- Android编译笔记四
- dbms_xplan.display_cursor 获取执行过的sql的执行计划
- Java JNI浅析(一)
- [Android] 开源View组件(一)
- [深入学习C#]LINQ查询表达式详解(2)——查询表达式的转换
- 每日一则----算法----二分查找法
- 只要学会这个PDF压缩方法,压缩PDF不再是难题
- 在Linux下进入目录,目录下创建、修改、删除文件所需权限
- 好的电子书资源——原创力文档
- 【Unity3D 问题总结】Failed to import package with error: Couldn‘t decompress package
- Initialization in《The Java® Virtual Machine Specification Java SE 7 Edition》
- 使用poi将数据库数据表中的数据导出成excel
热门文章
- NVIDIA Jetson tx2i 设置cuda10.2 _cudnn8.0, 安装 pyTorch
- STM32-I2C通信在AT24C02的应用
- 咆哮体---出师表!!!
- Stimulsoft Reports.JAVA 2022.4.5 Crack
- 洛谷 T244318 【图的存储】公路查询
- Redis学习(2):Jedis使用Redis示例
- Excel文件的解析
- 微信公众号获取用户头像昵称,用户信息
- 【python 视频爬虫】python下载头条视频
- TDK MPU9250的详细功能 替代方案ICM20948