本文學習的目的,知道自定義標簽是如何實現的。做一個最簡單的自定義標簽<mytag:hello/>,效果是打印hello world!
1、編寫標簽處理類HelloTag(實現javax.servlet.jsp.tagext.Tag類)
package cn.itcast.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
public class HelloTag implements Tag {
private PageContext pageContext;
private Tag tag;
public int doEndTag() throws JspException {
try {
pageContext.getOut().print(/"hello world!/");
} catch (IOException e) {
e.printStackTrace();
}
return Tag.EVAL_PAGE;
}
public int doStartTag() throws JspException {
return Tag.SKIP_BODY;
}
public Tag getParent() {
return null;
}
public void release() {
}
public void setPageContext(PageContext arg0) {
this.pageContext = arg0;
}
public void setParent(Tag arg0) {
this.tag = arg0;
}
}
注意Tag中定義的幾個常量的含義(EVAL_PAGE,SKIP_BODY等)
2、編寫hellotag.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>tagSample</short-name>[Page]
<uri>/hellotag</uri>
<tag>
<name>hello</name>
<tag-class>cn.itcast.tag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
3、編寫測試jsp文件
<%@ page contentType=/"text/html; charset=GBK/" %>
<%@ page errorPage=/"error.jsp/" %>
<%@ taglib uri=/"/WEB-INF/hellotag.tld/" prefix=/"mytag/" %>
<html>
<head>
<title></title>
</head>
<body>
<mytag:hello/>
<mytag:hello>haha</mytag:hello>
</body>
</head>
測試結果應該是打印出兩個hello world!
標簽庫的優點
1、最大限度地消除jsp頁面中嵌入的java代碼
2、增強代碼擴展性、可讀性、代碼復用,簡化了jsp頁面編寫的工作量
新聞熱點
疑難解答