手机
当前位置:查字典教程网 >编程开发 >JSP教程 >基于JSP 自定义标签使用实例介绍
基于JSP 自定义标签使用实例介绍
摘要:添加JSP自定义标签:先添加一个tld文件到WEB-INF文件夹中myTagJSTLcore1.0cnwebhttp://www.cnweb...

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

<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 自定义标签使用实例介绍】相关文章:

jsp自定义标签之ifelse与遍历自定义标签示例

JSP 中文字符处理代码

jsp自定义标签之ifelse与遍历自定义标签示例

JSP培训之购物车实例

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

JSP 自定义标签之一 简单实例

JSP的自定义标签

JSP分页显示的实例代码

JSP学习之Servlet用法分析

jsp 标准标签库简析

精品推荐
分类导航