加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

基于JSP 自定义标签使用示例介绍

发布时间:2023-07-13 15:05:35 所属栏目:教程 来源:
导读:添加JSP自定义标签:

先添加一个tld文件到WEB-INF文件夹中

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in
添加JSP自定义标签:
 
先添加一个tld文件到WEB-INF文件夹中
 
<?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 web-jsptaglibrary_2_0.xsd"
 
version="2.0">
 
<description>myTag</description>
 
<display-name>JSTL core</display-name>
 
<tlib-version>1.0</tlib-version>
 
<short-name>cnweb</short-name>
 
<uri>http://www.cnweb.cn</uri>
 
<tag><!-- 一个tag标签对应一个自定义tag标签类 -->
 
<description>MyTag</description>
 
<name>when</name>
 
<tag-class>cn.example.when</tag-class>
 
<body-content>scriptless</body-content>
 
<attribute>
 
<name>test</name>
 
<required>true</required>
 
<rtexprvalue>true</rtexprvalue>
 
</attribute>
 
</tag>
 
</taglib>
 
引用规则:
 
<%@ taglib uri="http://www.cnweb.cn" prefix="cnweb"%>
 
定义错误处理页面:
 
<error-page>
 
<exception-type>java.lang.Exception</exception-type>
 
<location>/errors/error.jsp</location>
 
</error-page>
 
<error-page>
 
<error-code>404</error-code>
 
<location>/errors/error1.jsp</location>
 
</error-page>
 
自定义标签执行流程:
 
SimpleTagSupport
 
/* Jsp引擎遇到简单类,实例化该类;
 
* 调用setJspContext,把页面pageContext传递给标签处理类;
 
* 调用setParent把父标传递进去,如果没有,传递null
 
* 调用setJspBody方法,把封装了标签体JspFragment传递给标签处理器类
 
* 执行页面中的自定义标签,doTag()方法;-->执行完成,销毁对象
 
*/
 
JspFragment jf = this.getJspBody();
 
jf.invoke(this.getJspContext().getOut());//如果不显示则不进行处理
 
--------------------------------------------------------------------
 
public class tagShowOrNot extends TagSupport {
 
public int doStartTag() throws JspException {
 
return Tag.EVAL_BODY_INCLUDE;//显示body
 
//return Tag.SKIP_BODY;//隐藏body
 
//Tag.EVAL_PAGE;//显示page
 
//Tag.SKIP_PAGE;//隐藏page
 
}}
 
TagSupport
 
/*编写一个实现TagSupport的类;
 
*在tld文件中对标签处理器类进行描述(tld文件的位置:WEB-INF下)
 
*在jsp页面中导入和使用标签
 
*
 
*jsp执行过程中遇到自定义标签时,先实例化该类;
 
*然后执行方法:setPageContext()-->setParent()-->doStartTag()
 
*如果有标签体,一般会执行标签体;doEndTag()-->整个标签执行完后一般会执行:release()
 
*
 
*控制整个jsp页面是否执行;
 
*控制jsp页面某一部分内容是否执行;
 
*控制jsp页面内容重复执行;
 
*修改jsp页面内容输出;
 
*/
 
//该方法在执行标签体后,执行doEndTag()方法之前执行,直到该方法返回IterationTag.SKIP_BODY;
 
public int doAfterBody() throws JspException {
 
time--;
 
System.out.println("重复" + time);
 
if (time > 0) {
 
return IterationTag.EVAL_BODY_AGAIN;
 
} else
 
return IterationTag.SKIP_BODY;
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!