欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自定义简单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>
相关标签: 自定义jsp标签