自定义简单jsp标签
程序员文章站
2022-03-04 11:58:44
...
jstl四大标签库
核心标签库core
格式化标签库fmt
还有两种已经过时的标签库:数据库标签库sql和xml标签库xml
其中最常用的就是jstl的核心标签库core
自定义标签的步骤
1.创建标签处理类
2.创建tld文件,并对文件进行部署
首先javaweb提供了一个用于自定义标签的接口SimpleTag,该接口中定义了五个用于处理自定义标签的方法,这个接口与servlet接口类似,其中包含了setParent(JspTag),setJspBody(JspFragment),setJspContext(JspContext),doTag()这四个周期方法,doTag()方法会在三个set方法执行之后才会被tomcat调用,与servlet相同,这也是一个单例对象
与servlet相同,javaweb同样也提供了一个SimpleTagSupport来实现SimpleTag这个接口,SimpleTagSupport类中已经将SimpleTag接口中提供的抽象方法进行封装,用户在创建自定义标签处理类的时候直接继承该类,并书写相关的逻辑,便可完成简单的自定义标签处理类
创建一个类似<c:if test=""></c:if>功能的自定义标签
首先创建标签处理类,重写doTag()方法
MyIfTag.java
public class MyIfTag extends SimpleTagSupport{
private boolean test; //标签中的属性test
private void setTest(boolean test){
this.test = test;
}
@Override
public void doTag() throws JspException,IOException{
if(test) { //当传入的test为true时,执行标签体内容
this.getJspBody().invoke(this.getJspContext().getOut());
}
}
}
为保证客户端访问不到该tld文件,需在WEB-INF下创建tld文件
tld文件中配置
<tag>
<name>myIfTag</name> //自定义标签名称,类似if
<tag-class>自定义标签处理类的路径</tag-class>
<body-content>scriptless</body-content> //指定标签内容
</tag>
最后在jsp页面中直接导入标签库
<%@ taglib prefix="my" uri="工程中tld文件的路径"%>
jsp页面中引用自定义标签
<my:myIfTag test="true"> //当test属性值为true时,便执行标签体中的内容
${pageContext.getRequest().contextPath}
</my:myIfTag>
上一篇: 前端面试题