JSP自定义标签
简单标签,的开发我们只要实现Tag接口即可为了简单起见可以直接继承实现了此接口的TagSupport类
setPageContext() 将所在jsp页面的pageContext注入进来,目的是为了在后面的方法中可以访问到jsp页面对象的pageContext属性
setParent() 设置此标签的父标签
setAttribute() 将标签中的属性注入到此class的属性,不需要自己实现但要提供属性的get与set方法
doStartTag() 在开始标签属性设置后调用,如果返回SKIP_BODY则忽略标签之中的内容,如果返回EVAL_BODY_INCLUDE则将标签体的内容进行输出
doEndTag() 在结束标签之前调用,返回SKIP_PAGE跳过整个jsp页面后面的输出,返回EVAL_PAGE执行页面余下部分
release() 生命周期结束时调用
1 创建自定义标签类
public class showUserTag extends TagSupport{
private String userID;
@Override
public int doStartTag() throws JspException {
......
return EVAL_BODY_INCLUDE;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID= userID;
}
}
2 在WEB-INF创建标签库描述文件.tld(Tag Library Description)
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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">
<!--版本号-->
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>userInfo</short-name>
<uri>/someTaglib</uri>
<tag>
<!—指定标签名 -->
<name>showUser</name>
<!—指定标签类文件的全路径 -->
<tag-class>com.mytags.UserTag</tag-class>
<!--如果不需要标签体则设置empty,反之设定jsp -->
<body-content>jsp</body-content>
<!—设定属性(如果有的话) -->
<attribute>
<!—指定标签名 -->
<name>user</name>
<!—是否是必须,如果非必须没设置则为空 -->
<required>false</required>
<!—是否可在属性中使用表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
......
</tag>
</taglib>
3 配置web.xml
<jsp-config>
<taglib>
<taglib-uri>/someTaglib</taglib-uri>
<taglib-location>/WEB-INF/someTaglib.tld</taglib-location>
</taglib>
</jsp-config>
4 在需要使用此标签的jsp页面头部引入
<%@ taglib uri="/someTaglib" prefix="somePrrfix"%>