JSP 定制标签
来源:互联网 发布:上海交通大学知乎 编辑:程序博客网 时间:2024/05/16 04:42
一 标签库的使用举例
对于我们自定义标签,一定要继承javax.servlet.jsp.tagext.TagSupport类,或者是javax.servlet.jsp.tagext.BodyTagSupport类,根据实际需要,重写其doStartTag、doEndTag方法,一般没有循环需要的话,对于其doAfterBodyTag方法不必实现,示例如下:
- public class TimerTag extends TagSupport{
- private long start;
- private long end;
- public int doStartTag(){
- start = System.currentTimeMillis();
- return EVAL_BODY_INCLUDE;
- }
- public int doEndTag() throws JspTagException{
- end = System.currentTimeMillis();
- long elapsed = end - start;
- try{
- JspWriter out = pageContext.getOut();
- out.println("running time:" + elapsed + " ms");
- }catch (Exception e){
- throw new JspTagException(e);
- }
- return EVAL_PAGE;
- }
- }
创建TLD文件,它是一个标准的XML文件,示例如下:
- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
- <taglib>
- <tlib-version>1.0</tlib-version>
- <jsp-version>1.2</jsp-version>
- <short-name>util</short-name>
- <uri>http://www.ych.com/util</uri>
- <!--OutputTag-->
- <tag>
- <name>util</name>
- <tag-class>com.ych.TimerTag</tag-class>
- <body-content>JSP</body-content><!-- Empty:cannot contain other contents;JSP:can contain jsp code -->
- <attribute>
- <name>timer</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
创建JSP页面,使用标签库,如下:
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <%@taglib prefix="util" uri="http://www.ych.com/util"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>title</title>
- </head>
- <body>
- <util:timer> hahaha</util:timer>
- </body>
- </html>
以上就是自定义标签库的基本用法,运行之后会在页面上输出运行时间。
二 TagSupport工作流程
SKIP_BODY 表示不用处理标签体,直接调用doEndTag()方法。
SKIP_PAGE 忽略标签后面的JSP内容。
EVAL_PAGE 处理标签后,继续处理JSP后面的内容。
EVAL_BODY_BUFFERED 表示需要处理标签体。
EVAL_BODY_INCLUDE 表示需要处理标签体,但绕过setBodyContent()和doInitBody()方法
EVAL_BODY_AGAIN 对标签体循环处理。
注:继承TagSupport 和继承BodyTagSupport 的区别在于后者能够对标签内的内容进行处理,其处理流程如下:
三 常用开源标记库
JSTL,Jakarta Taglibs,Display Tag
0 0
- jsp 定制标签
- JSP定制标签库
- JSP 定制标签
- jsp定制分页标签
- JSP编写定制标签
- JSP编写定制标签之处理属性
- JSP编写定制标签之管理标签主体
- 与JSTL以及其他JSP定制标签一起使用JSF
- 用 jsp 定制标签创建超连接的方法(一)
- 用jsp定制标签创建超连接的方法(二)
- BodyContent揭秘及定制复杂的JSP标签
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- eXtremeComponents(简称ec)是一系列提供高级显示的开源JSP定制标签
- 线性判别分析(Linear Discriminant Analysis)
- LeetCode OJ算法题(十九):Remove Nth Node From End of List
- spring mvc 和 mybatis整合,简单的入门实例
- VB.NET利用正则表达式巧妙限制字符输入
- Eclipse debug ‘Source not found’
- JSP 定制标签
- android TextView实现实现跑马灯效果,并监听滚动完成动作。
- POJ 1094:Sorting It All Out:拓扑排序的较为繁琐的逻辑变形
- Key Task
- 数据结构 BFS遍历树
- 独立成分分析(Independent Component Analysis)
- (最大流) poj3436 ACM Computer Factory
- 怎么查别人qq登陆记录
- java的junit测试