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

 更新时间:2013年04月18日 12:02:48   作者:  
本篇文章小编为大家介绍,基于JSP 自定义标签使用实例介绍,需要的朋友参考下

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

相关文章

  • AJAX FCKEditor Rich Editor整合篇

    AJAX FCKEditor Rich Editor整合篇

    Rich Editor是我们在Web应用经常使用的一种客户端控件,目前网上开源的、收费的也比较多,在对网上各种富文本编辑器进行了一系列比较之后,我最终选择了FCKEditor
    2008-09-09
  • JSP使用ajaxFileUpload.js实现跨域问题

    JSP使用ajaxFileUpload.js实现跨域问题

    这篇文章主要介绍了JSP使用ajaxFileUpload.js实现跨域问题的相关内容,本文介绍非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-04-04
  • JSP模板应用指南(下)

    JSP模板应用指南(下)

    JSP模板应用指南(下)...
    2006-10-10
  • Java学习的捷径

    Java学习的捷径

    Java学习的捷径...
    2006-10-10
  • JSP自定义标签Taglib实现过程重点总结

    JSP自定义标签Taglib实现过程重点总结

    Taglib指令,其实就是定义一个标签库以及自定义标签的前缀,其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,感兴趣的朋友可以了解下,或许对你学习jsp有所帮助
    2013-02-02
  • Java下使用Oracle存储过程(详解)

    Java下使用Oracle存储过程(详解)

    其实,这篇短文,我早就应该写了。因为,java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。
    2008-09-09
  • JDBC连接Access数据库的几种方式介绍

    JDBC连接Access数据库的几种方式介绍

    前几天老师让作几个JSP连接数据库的例子,而且连接的数据库是Access数据库,对于这个数据库自己也不是太了解,后来了解到学习JDBC的时候,连接access是很方便的,很容易的,但是在连接的时候也出现了问题,但是还是解决了
    2013-05-05
  • JSP通用高大上分页代码(超管用)

    JSP通用高大上分页代码(超管用)

    这篇文章主要介绍了JSP通用高大上分页代码(超管用)的相关资料,需要的朋友可以参考下
    2016-01-01
  • 实例讲解JSP获取ResultSet结果集中的数据的方法

    实例讲解JSP获取ResultSet结果集中的数据的方法

    这篇文章主要介绍了JSP获取ResultSet结果集中数据的方法,文后还介绍一种遍历ResultSet中的数据并转化为表格的方法,需要的朋友可以参考下
    2016-04-04
  • Java 区分文本中的中英文字符函数

    Java 区分文本中的中英文字符函数

    Java 文本中的中英文字符函数代码,需要的朋友可以看看。
    2009-06-06

最新评论