我自己的学习笔记
定制标记库-------
定制标记库的作用:增加表现层的处理能力,减少jsp文件中的java代码,定制标记库的作用类似:<jsp:useBean> <jsp:setProperty><jsp:g
etProperty>
定制一个标记库,需要一个标记库处理类,和用来描述这个标记的tld文件,这个tld文件实际上是一个xml文件,用来描述这个标记库所对应的标记处理类,以及其他的一些描述类的东西。
要定制标记库需要继承TagSupport类,这个类位于javax.servlet.jsp.tagext这个包中,在jsp中这个包里主要放一些处理标记库的类
定制标记库,需要重写doStartTag()这个方法,在开始执行这个标记库时将自动调用doStartTag这个方法,在这个标记结束时将自动调用doEndTag()方法。
如:package com.austit.tags;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class TimerTag extends TagSupport{
private static final long serialVersionUID = -4534299l;
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("runningtime:"+elapsed+"ms");
}catch (IOException e){
throw new JspTagException(e):
}
return EVAL_PAGE;
}
}
随后要写一个tld文件,用来描述这个标记库处理类。
在当前项目下的webroot目录下新建一个xml文件,但后缀不写成xml,而将后缀改为tld文件
在写这个tld文件时较容易出错,可以从tomcat webapps 目录下的examples中的jsp2项目中的tld文件的一些重要标记复制进来
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/nx/j2ee"
xmlnx:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/nx/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description> </description> //对当前定制标记库的一个描述
<tlib-version> </tlib-version>//是你自己设置的版本
<short-name> </short-name> //你的标记库使用时推荐的前最名称
<uri> </uri> //你定义的引用这个标记库的uri地址
<tag> //对你的标记库中的标记的说明
<decription> </description>//描述当前这个标记
<name> </name> //标记的名称,这个名称要出现在jsp代码中
<tag-class> </tag-class>//这个标记的标记处理类,要写全名
<body-content>[Jsp,empty,scriptless//指不能包含脚本代码,tagdependent]</body-content>//定义这个标记里包含的内容
</tag>
</taglib>
标记库的处理类中需要使用参数时可以用<attribute>这个标记来指定
<name>来指定这个参数名 <rtexprvalue>来指定这个参数是可以是jsp表达式,<required>类指定这个参数是否是必须的
在jsp页面中使用标记库的使用类似jstl标记库的使用类似
标记库打包:
可以将自己定制的标记库打包成jar文件,然后进行使用,在标记库打包成的jar文件中应该包含tld文件和标记库的处理类,其中标记库的描述性文件tld文件应该放在META-INF目录下
常用的开源标记库:
jstl
jakarta taglibs
display tag //分页显示 displaytag.sf.net 对数据进行分页 并进行表格输出