主页 > 知识库 > 基于JSP 自定义标签使用实例介绍

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

热门标签:电子围栏 科大讯飞语音识别系统 银行业务 团购网站 Linux服务器 Mysql连接数设置 服务器配置 阿里云

添加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;
}

您可能感兴趣的文章:
  • jsp简单自定义标签的forEach遍历及转义字符示例
  • JSP自定义标签获取用户IP地址的方法
  • jsp自定义标签技术(实现原理与代码以及平台搭建步骤)
  • JSP自定义标签Taglib实现过程重点总结
  • JSP 自定义标签之一 简单实例
  • JSP自定义标签rtexprvalue属性用法实例分析
  • JSP自定义标签-标签属性_动力节点Java学院整理

标签:萍乡 大理 枣庄 衢州 蚌埠 江苏 广元 衡水

巨人网络通讯声明:本文标题《基于JSP 自定义标签使用实例介绍》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266