自定義標籤包括:空標籤、帶屬性的標籤、帶標籤體的標籤、嵌套標籤
製作自定義標籤的步驟:
第一步、實現SimpleTag接口或者繼承SimpleTagSupport類
實現SimpleTag代碼
public class HelloTag implements SimpleTag { /** * 執行標籤 */ @Override public void doTag() throws JspException, IOException { } @Override public JspTag getParent() { return null; } /** * 如果有標籤體,執行此代碼 */ @Override public void setJspBody(JspFragment jspFragment) { } /** * 標籤初始化 PageContext */ @Override public void setJspContext(JspContext jspContext) { } /** * 設置父標籤 */ @Override public void setParent(JspTag jspTag) { } }
tld文件內容
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>h</short-name> <uri>http://www.hdz.com/core</uri> <tag> <name>choose</name> <tag-class>com.hdz.tag.ChooseTag</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>when</name> <tag-class>com.hdz.tag.WhenTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>other</name> <tag-class>com.hdz.tag.OtherTag</tag-class> <body-content>scriptless</body-content> </tag> <function> <name>connact</name> <function-class>com.hdz.tag.MyFunction</function-class> <function-signature>java.lang.String connact(java.lang.String)</function-signature> </function> </taglib>
繼承SimpleTagSupport類
public class HelloSonTag extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { super.doTag(); } }
顯示標籤體內容
JspFragment jspFragment = getJspBody(); jspFragment.invoke(null);//參數爲空,輸出到網頁 StringWriter stringWriter = new StringWriter() JspFragment jspFragment = getJspBody(); jspFragment.invoke(stringWriter );//輸出到控制檯
主要對象
public void setJspContext(JspContext jspContext) { PageContext pageContext = jspContext;//初始化PageContext }