基于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
先添加一个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; } (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐