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下的。