jsp自定义标签初探
jsp自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。简化jsp页面,提高代码的复用性。
实现自定义标签需要:①标签处理类 ②tld标签配置文件
第一:标签处理类
标签处理类用于处理标签背后的逻辑操作以及生成页面元素,可通过继承TagSupport或者最新的SimpleTagSupport类来实现一个简单的标签处理类,重写其中的方法即可
TagSupport:包含doStartTag、doEndTag、doAfterBody方法。
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页
doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。
预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.
SimpleTagSupport:仅包含doTag方法,没有返回值
public class MldTag extends SimpleTagSupport { String color; public void setColor(String color) { this.color = color; } @Override public void doTag() throws JspException, IOException { if(color==null) color = "yellow"; String html = "<button style='background:"+color+"'>颜色</button>"; JspWriter out = getJspContext().getOut(); out.print(html); } }
第二:tld标签配置文件
tld配置文件默认放在WEB-INF下,此时不需要在web.xml下配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>this is my first tag</short-name>
//页面引用时的uri <%@ taglib uri="/mldTags" prefix="t" %>
<uri>/mldTags</uri>
<tag>
//标签引用时的名字 <t:mld/>
<name>mld</name>
<tag-class>org.mld.tags.MldTag</tag-class>
<body-content>empty</body-content>
//标签上可以添加的属性
<attribute>
<name>color</name>
</attribute>
</tag>
</taglib>
若tld没有在WEB-INF下,需要在web.xml下配置

在web.xml中加入如下内容:
<jsp-config> <taglib>
//页面引用时的uri <%@ taglib uri="/mldTags" prefix="t" %> <taglib-uri>/mldTags</taglib-uri>
//tld文件路径 <taglib-location>/test/tlds/mld.tld</taglib-location> </taglib> </jsp-config>
第三:页面调用
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/mldTags" prefix="t" %> <!DOCTYPE> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <t:mld color="green"/> </body> </html>
这样遍可以通过属性在页面上创建一个简单的按钮了,效果如下:

jsp自定义标签初探先写到这里,下班吃饭

浙公网安备 33010602011771号