首页 > 代码库 > Jsp自定义Tag

Jsp自定义Tag

自定义Tag标签,继承SimpleTagSupport实现,位于javax.servlet.jsp.tagext

Maven dependency

<dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version></dependency>

实际场景很少使用,主要学习java实现自定义标签的思想

 

执行自定义标签中内容代码位于doTag方法内

而SimpleTageSupport类具有一些方法:

JspContext getJspContext()

   JspContext通过方法 getOut(),获得JspWriter。JspWriter的print()方法可以将内容写入到Jsp页面中。

   JspContext通过getAttribute() setAttribute()设置获取JspTag作用域或其他作用域的Attribute值。

 

JspTag getParent(),可以通过该方法获得父标签内容。通过获取父标签和子标签内容可以组合出各种复杂功能的Jsp Tag。如If While 的分支选择Tag。

 

JspFragment getJspBody(), 获得标签体。JspFragment.invoke(Writer writer), 将标签内容写入Writer。如果writer为null, 标签体内容如普通jsp页面输出。

 

需先定义tld文件

<?xml version="1.0" encoding="GBK" ?>  <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 web-jsptaglibrary_2_0.xsd"  version="2.0">  <tlib-version>1.0</tlib-version>  <short-name>mytaglib</short-name>  <uri>http://domain/mytaglib</uri>  <tag>      <name>helloWorld</name>      <tag-class>mypackage.HelloWorldTag</tag-class>      <body-content>empty</body-content>      <attribute>          <name>content</name>          <required>true</required>          <fragment>true</fragment>      </attribute>  </tag>  <tag>      <name>iterator</name>      <tag-class>mypackage.iteratorTag</tag-class>      <body-content>scriptless</body-content>      <attribute>          <name>collection</name>          <required>true</required>          <fragment>true</fragment>      </attribute>      <attribute>          <name>item</name>          <required>true</required>          <fragment>true</fragment>      </attribute>  </tag>  

是用前使用TagLib指令导入

<%@ taglib uri="WEB-INF/tlds/mytag.tld" prefix="mytag" %>

 

 

 

Jsp自定义Tag