一、标签语言特点
1.1
空标签: br hr
UI标签 : input,table
控制标签: if foreach
数据标签: out
1.2标准/普通标签
<开始标签>标签体</结束标签>
<a></a>
<开始标签 属性名="属性值"></结束标签>
<a href = ""></a>
空/单标签
<开始标签/>
<br/>
二、标签生命周期
三、自定义标签的开发及使用步骤
3.1步骤:
第一步:创建一个标签助手类(继承BodyTagSupport)。
标签属性必须助手类的属性对应、且要提供对应get/set方法。
第二步:创建标签库描述文件(tld),添加自定义标签的配置。
注:tld文件必须保存到WEB-INF目录或其子目录。
第三步:在JSP通过taglib指令导入标签库描述文件,并通过指定后缀访问此自定义标签。
标签助手类三个重写方法 return 后面的返回值
public class zhanghao extends BodyTagSupport{ @Override public int doStartTag() throws JspException { // TODO Auto-generated method stub return super.doStartTag(); } @Override public int doAfterBody() throws JspException { // TODO Auto-generated method stub return super.doAfterBody(); } @Override public int doEndTag() throws JspException { // TODO Auto-generated method stub return super.doEndTag(); } }
3.自定义标签的开发 :
配置属性:
<?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"> <description>JSTL 1.1 core library</description> <display-name>JSTL core</display-name> <tlib-version>1.1</tlib-version> <short-name>k</short-name> <uri>/Java2EE_jsp/WebContent/WEB-INF/kun.tld</uri> <validator> <description> Provides core validation features for JSTL tags. </description> <validator-class> org.apache.taglibs.standard.tlv.JstlCoreTLV </validator-class> </validator> <tag> <!-- 标签库的名字 --> <name>demo1</name> <!-- 该标签对应的助手类 --> <tag-class>com.xuayhui.tag.DemoTag</tag-class> <!-- 代表是一个JSP标签 --> <body-content>JSP</body-content> <attribute> <!-- 该自定义JSP标签的属性名称 --> <name>var</name> <!-- 该属性是否必填 --> <required>false</required> <!-- 该属性值是否支持表达式 --> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>if</name> <tag-class>com.xuayhui.tag.Iftag</tag-class> <body-content>JSP</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>set</name> <tag-class>com.xuayhui.tag.SetTag</tag-class> <body-content>JSP</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>out</name> <tag-class>com.xuayhui.tag.OutTag</tag-class> <body-content>JSP</body-content> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
步骤2:
帮助类
/** * 助手类 * @author 86155 */ public class DemoTag extends BodyTagSupport{ @Override public int doStartTag() throws JspException { System.out.println("===================doStartTag================="); return EVAL_BODY_INCLUDE; } @Override public int doAfterBody() throws JspException { System.out.println("===================doAfterBody================="); return super.doAfterBody(); // return EVAL_BODY_AGAIN; //return SKIP_PAGE; } @Override public int doEndTag() throws JspException { System.out.println("===================doEndTag================="); return super.doEndTag(); // return SKIP_PAGE; }
步骤3:
编写.tid文件
<?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"> <description>JSTL 1.1 core library</description> <display-name>JSTL core</display-name> <tlib-version>1.1</tlib-version> <short-name>k</short-name> <uri>/Java2EE_jsp/WebContent/WEB-INF/kun.tld</uri> <validator> <description> Provides core validation features for JSTL tags. </description> <validator-class> org.apache.taglibs.standard.tlv.JstlCoreTLV </validator-class> </validator> <tag> <!-- 标签库的名字 --> <name>demo1</name> <!-- 该标签对应的助手类 --> <tag-class>com.xuayhui.tag.DemoTag</tag-class> <!-- 代表是一个JSP标签 --> <body-content>JSP</body-content> <attribute> <!-- 该自定义JSP标签的属性名称 --> <name>var</name> <!-- 该属性是否必填 --> <required>false</required> <!-- 该属性值是否支持表达式 --> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>if</name> <tag-class>com.xuayhui.tag.Iftag</tag-class> <body-content>JSP</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>set</name> <tag-class>com.xuayhui.tag.SetTag</tag-class> <body-content>JSP</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>out</name> <tag-class>com.xuayhui.tag.OutTag</tag-class> <body-content>JSP</body-content> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>