热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

本篇文章小编为大家介绍,基于JSP自定义标签使用实例介绍,需要的朋友参考下

添加JSP自定义标签:

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

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">

myTag
JSTL core
1.0
cnweb
http://www.cnweb.cn


MyTag
when
cn.example.when
scriptless

test
true
true



引用规则:
<%@ taglib uri="http://www.cnweb.cn" prefix="cnweb"%>

 定义错误处理页面:


java.lang.Exception
/errors/error.jsp


404
/errors/error1.jsp

自定义标签执行流程:

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


推荐阅读
author-avatar
雷宠专业摄影工作室
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有