自定義標籤,使用SimpleTag接口
第一步 要創建自定義的JSP標籤,你首先必須創建處理標籤的Java類。寫個自己的標籤類
MyTag.java
package cn.test.tag;
import java.io.IOException;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.SimpleTag;
/**
* 自定義標籤
* @author hp
*
*/
public class MyTag implements SimpleTag{
private PageContext pageContext;
private JspFragment body;
/**
* 所有的set方法 都會在 doTag 方法之前被tomcat 調用
* dotag中 就可以使用tomcat 傳遞過來的對象了
*/
@Override
public void doTag() throws JspException, IOException {
pageContext.getOut().print("Hello Tag!");
}
@Override
public JspTag getParent() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setJspBody(JspFragment jspBody) {
this.body=jspBody;
}
@Override
public void setJspContext(JspContext context) {
this.pageContext=(PageContext) context;
}
@Override
public void setParent(JspTag parent) {
// TODO Auto-generated method stub
}
}
在配置tld文件
tld目錄
.tld文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>xiaoquan</short-name>
<uri>http://www.xiaoquan.cn/tags/1.0</uri>
<tag>
<name>myTag</name>
<tag-class>cn.test.tag.MyTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
使用標籤 在需要的頁面裏面導入標籤
<%@ taglib prefix="xiaoquan" uri="/WEB-INF/tlds/xiaoquan-tag.tld"%>
將上面的指令寫在 jsp 中
運行效果
以上類有些複雜 可以使用SimpleTagSupport類
SimpleTagSupport 實現了simpleTag接口 它已經把所有的tomcat傳遞數據都保存起來了 而且還提供了get方法供子類使用
public class MyTag2 extends SimpleTagSupport{
@Override
public void doTag() throws JspException,IOException{
this.getJspConText().getOut().print("hello tag");
}
}