前言:给大家讲解JSP标签
码字不易,点个关注
转载请说明!
开发工具:eclipse
思维导图:
目录
1.标签语言的特点
1.形式:<开始标签 属性="属性值">标签体</结束标签>
2.分类(冒号后面是相关例子):
①.空标签: br、hr
②.ui标签:input、table
③.控制标签:if、foreach
④.数据标签:set标签、out标签
2.自定义标签的步骤
1.助手类(继承BodyTagSupport)
2.标签库描述文件(tld);(tld文件必须保存到WEB-INF目录或其子目录)
3.JSP通过taglib指令导入标签库
标签库描述文件
<?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>hpw 1.1 core library</description>
<display-name>hpw core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>hpw</short-name>
<uri>http://jsp.veryedu.cn</uri>
<tag>
<name>opp</name>
<tag-class>com.hpw.tag.IfTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<!-- 自定义标签的成员变量名称 -->
<name>test1</name>
<!-- 该成员变量是否必传 -->
<required>true</required>
<!-- 是否支持El表达式 -->
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
4.JSP通过taglib指令导入标签库
<%@taglib prefix="pw" uri="http://jsp.veryedu.cn" %>
<body>
<pw:Dome1>dome1</pw:Dome1>
</body>
3.生命周期
3.1标签开发场景
1.doStartTag...skipBody...doEndTag
2.doStartTag...EVAL_BODY_INCLUDE...doAfterBody...EVAL_PAGE...doEndTag
3.doStartTag...EVAL_BODY_INCLUDE...doAfterBody...EVAL_BODY_AGAIN... doAfterBody...EV AL_BODY_AGAIN(N次)...doEndTag
3.2返回值
SKIP_BODY:跳过主体
EVAL_BODY_INCLUDE:计算标签主体内容并输出
EVAL_BODY_AGAIN:再计算主体一次
EVAL_PAGE:计算页面的后续部分
SKIP_PAGE:跳过页面的后续部分
public class Dome1 extends BodyTagSupport {
@Override
public int doStartTag() throws JspException {
System.out.println("Demo1_doStartTag进来了");
return SKIP_BODY;
}
@Override
public int doEndTag() throws JspException {
System.out.println("Demo1_doEndTag进来了");
return super.doEndTag();
}
}
public class Dome2 extends BodyTagSupport{
@Override
public int doStartTag() throws JspException {
System.out.println("Dome1_doStartTag进来了");
// return super.doStartTag();
return EVAL_BODY_INCLUDE;
}
@Override
public int doAfterBody() throws JspException {
System.out.println("Dome2_doAfterBody进来了");
return EVAL_PAGE;
}
@Override
public int doEndTag() throws JspException {
System.out.println("Dome3_doEndTag进来了");
return super.doEndTag();
}
}
public class Dome3 extends BodyTagSupport{
@Override
public int doStartTag() throws JspException {
System.out.println("Dome3_doStartTag进来了");
// return super.doStartTag();
return EVAL_BODY_INCLUDE;
}
@Override
public int doAfterBody() throws JspException {
System.out.println("Dome3_doAfterBody进来了");
return EVAL_BODY_AGAIN;
}
@Override
public int doEndTag() throws JspException {
System.out.println("Dome3_doEndTag进来了");
return super.doEndTag();
}
}
4.实例
需要导的包
标签库描述文件
<?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>hpw 1.1 core library</description>
<display-name>