BodyTag接口
接口BodyTag的实现类,它是负责操作主体内容(bodyContent).
定义方法:public void doInitBody();
public int doAtferBody();
提示,那些在doStartTag()方法之后被调用的方法依赖于doStartTag()方法返回值并且看在JSP页面上是否自定义Action元素,而不是怎样在TLD文件中去申明
在TLD文件中, 若<body-content>empty</body-content>的话,doStartTag()方法只能返回SKIP_BODY
body-content有三个可选值:empty , JSP , tagdependent
若没有设置的话,那么doStartTag()可以返回SKIP_BODY, EVAL_BODY_INCLUDE, or EVAL_BODY_BUFFERED.
返回值的说明:
若SKIP_BODY返回的情况下,body不会被evaluated并且doEndTag()被调用;
若EVAL_BODY_INCLUDE 返回,并且自定义action元素不为空的时候,那么doInitBody(),setBodyContent()不会被调用,而body evaluated并且"通过"当前的out对象,还有当action元素为空的时候,只有doStartTag(),doEndTag();
当EVAL_BODY_BUFFERED 返回,并且自定义的action元素不为空的时候,setBodyContent(),doInitBody()被调用,body被evaluated,doAfterBody()被调用,直到大于0次迭代后,doEndTag()才被调用,还有当action元素为空的时候,只有doStartTag(),doEndTag();
主题内容
1.自定义标记通常需要操控自己的主体内容,例如数据库查询需要将其主题内容解释为SQL
2.工作方法
servlet容器包含BodyContent对象栈,servlet容器在doStartTag()方法之后调用PageContext.pushBody(),就是说把当前的主体内容推入栈中,其中out变量重定向到当前的主体内容实例主题内容,保留一个到JspWriter对象的引用,即前一个输出,JspWriter将数据写入响应流中.这样就有效地创建了写入器栈
servlet容器是在调用标记的doAfterBody和doEndTag方法之间调用PageContent.popBody()方法的
注意请不要在doEndTag()后面去访问BodyContent,因为servlet容器在调用标记处理程序的doEndTag()方法为止,servlet容器可能已经再次使用了该标记的主题内容,使用doEndTag方法访问自己主体内容的标记,可能会访问到其他标记的主体内容,或者可能访问到空值,这样就导致了不确定的行为
BodyTagSupport类,实现BodyTag接口的类
public BodyContent getBodyContent();//返回主题内容
public JspWriter getPreviousOut();//返回前一个out对象
说了这么一大堆的东西,有什么用呢?我们来写个东西来说明以下:
打印出主体内容!
java 代码
- import java.io.IOException;
-
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.tagext.BodyTagSupport;
-
- public class PrintBodyTag extends BodyTagSupport {
- public int doAfterTag()throws JspException
- {
- try
- {
- this.getBodyContent().writeOut(getPreviousOut());
- }catch(IOException e)
- {
- throw new JspException(e);
- }
- return SKIP_BODY;
- }
- }
部署tld文件
xml 代码
- ......
- <tag>
- <name>printBody</name>
- <tag-class>PrintBodyTag</tag-class>
-
- </tag>
- ......
页面加载:
html代码
- <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
- <%@ taglib uri="http://www.eimhe.com/taglibs/util.tld" prefix="util"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>My JSP 'tag.jsp' starting page</title>
- </head>
- <body>
- <util:printBody>AAAAAAAA</util:printBody> //结果就是怎么样相信大家猜得到!AAAAAAAA
- </body>
- </html>
Over!只写一些东西,时间关系,我只有黏贴了代码(不好意思)!我做了一个视频教程,请到这里去看看
mercyblitz.blog.ccidnet.com/blog/ccid/uid_45914.html
分享到:
相关推荐
jsp自定义标签大全.rar
第五篇为“标签语言和表达式语言”,主要讲述JSP的标签技术,JSP提供的标准标签库JSTL的用法及用户如何自定义自己的标签库;第六篇为“Web应用高级专题”,主要讲述Servlet过滤器、JSP异常处理、JSP日志、认证和安全...
java web高级 自定义标签的使用,用户定义的JSP语言元素
第二部分详细对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及讲解了Web2.0新特性Ajax的开发过程。JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层...
第二部分详细对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及讲解了Web2.0新特性Ajax的开发过程。JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
然后对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及Web2.0新特性Ajax的开发过程进行了详细的讲解。最后对最为流行的MVC解决方案Struts和数据库持久层结束Hibernate...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...
此外,这个资料包还包括了一些高级的JSP技术,如JSP标签库、自定义标签和EL表达式等。这些技术可以帮助你更好地组织和管理你的JSP代码,提高代码的可读性和可维护性。总之,tot-jsp-cms.rar是一个全面而实用的JSP...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
书中内容由浅入深、循序渐进地介绍了JSP的基本运用,其中包括网页布局与修饰、JDBC应用、Servlet应用、JSP运用、EL表达式运用、自定义标签运用、标准标签库运用等。在讲解的过程中,引用了大量的实例,且每一部分...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...