JSP开发过程中,JSTL,Struts2Tag不能满足要求时,程序员可以根据自己的要求,定制标签。
1、定义一个类继承TagSupport,并实现类中的两个方法,doStartTag()、doEndTag()。doStartTag()中可以通过pageContext获取八大内置对象。
public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); try { out.print("Welcome"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //EVAL_BODY_INCLUDE 不忽略标签体 //SKIP_BODY 忽略标签体 return EVAL_BODY_INCLUDE;//忽略标签体 } public int doEndTag() throws JspException { return EVAL_PAGE;//保留标签后面的内容 }2、在WEB-INF下配置tld文件
<?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>zmh</short-name> <uri>/zmh-tag</uri> <tag> <name>test</name> //标签名 <tag-class>tag.MyTag</tag-class> //标签定义的类 <body-content>empty</body-content> //标签体是否有内容,如果不忽略,写JSP </tag> </taglib>
3、在页面引用
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/zmh-tag" prefix="zmh"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <zmh:test /> </body> </html>
当然我们也可以给标签增加属性,大致和上面差不多,其tld配置如下,如下图
标签属性对应自定义类中的属性
doStartTag()方法如下
那么我们在页面就可以使用
然后页面就会显示:Welcome北京欢迎你。
以上是自己对自定义标签的总结,注意这个tld配置文件是放到WEB-INF下的。