Jsp页面中通过xml语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执行相应的Java代码
例子:实现在页面输出一个指定范围的随机数
标签:<ct:random min="1" max="100"/>
第一步:编写标签类:
实现标签类的方法有很多,最简单的方法是从javax.servlet.jsp.tagext.TagSupport类继承
java代码:
package com.test.mytag
public calss RandomTag extends TagSupport{
private int min=0;//标签中的属性min,默认值设置为0
private int max=Integer.MAX_VALUE;//标签中的属性max,默认值设置为int类型的最大值
public void setMin(int min){
this.min=min;
}
public void setMax(int max){
this.max=max
}
public int doStartTag()throws JspException{
try{
Random random=new Random();
int result=min+random.nextInt(max-min);
pageContext.getOut().write(String.valueOf(result));
//输出随机数,pageContext变量是在TagSupport类中定义的一个类变量,该变量通过TagSupport类中的
//setPageContext方法赋值,setPageContext方法是在Tag接口中定义的,
//而TagSupport实现了Tag接口的setPageContet方法,
//Servlet容器在调用doStartTag方法前会先调用setPageContext方法
}catch(IOException e){
System.out.println("error!");
}
//TagSupport类的doStartTag方法默认返回SKIP_BODY,表示忽略自定义标签体
return super.doStartTag();
}
}
第二步:
编写标签库描述符文件(TLD文件)
要想自定义标签正常工作,必须在TLD文件中对该标签进行配置:
在WEB-INF目录中建一个jsp-taglib.tld文件,内容如下:
<?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/web-jsptaglibrary_2.0.xsd" version="2.0">
<description>自定义标签库</descrption>
<tlib-version>1.1</tlib-version>
<short-name>ct</short-name><!--标签前缀-->
<uri>http://www.javaeye.net</uri>
<taglib>
<tag>
<desrption>产生一个指定范围的随机数</desrption>
<name>random</name>
<tag-class>com.test.mytag.RandomTag</tag-class>
<body-content>empty</body-content><!--表示标签体类型不支持标签体-->
<attribute>
<name>min</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>max</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>