`

JSP自定义标签学习(高级)

阅读更多
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 代码
 
  1. import java.io.IOException;  
  2.   
  3. import javax.servlet.jsp.JspException;  
  4. import javax.servlet.jsp.tagext.BodyTagSupport;  
  5.   
  6. public class PrintBodyTag extends BodyTagSupport {  
  7.     public int doAfterTag()throws JspException  
  8.     {  
  9.         try  
  10.         {         
  11.             this.getBodyContent().writeOut(getPreviousOut());//上面讲的理论!  
  12.         }catch(IOException e)  
  13.         {  
  14.             throw new JspException(e);  
  15.         }  
  16.         return SKIP_BODY;  
  17.     }  
  18. }  
部署tld文件
xml 代码
 
  1. ......  
  2.   <tag>  
  3.     <name>printBody</name>  
  4.     <tag-class>PrintBodyTag</tag-class>  
  5.       
  6.   </tag>  
  7.   ......  
页面加载:
html代码
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <%@ taglib uri="http://www.eimhe.com/taglibs/util.tld" prefix="util"%>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>My JSP 'tag.jsp' starting page</title>  
  7.   </head>  
  8.   <body>  
  9.     <util:printBody>AAAAAAAA</util:printBody> //结果就是怎么样相信大家猜得到!AAAAAAAA  
  10.   </body>  
  11. </html>  


Over!只写一些东西,时间关系,我只有黏贴了代码(不好意思)!我做了一个视频教程,请到这里去看看
mercyblitz.blog.ccidnet.com/blog/ccid/uid_45914.html
分享到:
评论

相关推荐

    jsp自定义标签大全.rar

    jsp自定义标签大全.rar

    JSP网络编程学习笔记源代码 part2

    第五篇为“标签语言和表达式语言”,主要讲述JSP的标签技术,JSP提供的标准标签库JSTL的用法及用户如何自定义自己的标签库;第六篇为“Web应用高级专题”,主要讲述Servlet过滤器、JSP异常处理、JSP日志、认证和安全...

    自定义标签

    java web高级 自定义标签的使用,用户定义的JSP语言元素

    JSP宝典(PDF)

    第二部分详细对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及讲解了Web2.0新特性Ajax的开发过程。JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层...

    Jsp宝典 PDF

    第二部分详细对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及讲解了Web2.0新特性Ajax的开发过程。JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层...

    JSP高级编程

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    JSP高级编程(最新完整版)

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    jsp高级编程(jsp高级编程)

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    JSP深入编程(适合有java语言基础和JSP基础的同志)

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    jsp宝典源码

    然后对自定义标签开发、标准标签库(JSTL)使用、JSP2.0表达式(EL)、Servlet简单应用和高级应用以及Web2.0新特性Ajax的开发过程进行了详细的讲解。最后对最为流行的MVC解决方案Struts和数据库持久层结束Hibernate...

    JSP深入编程(JSP Deep Development)

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    JSP高级编程 JSP技术

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx

    完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...

    tot-jsp-cms.rar

    此外,这个资料包还包括了一些高级的JSP技术,如JSP标签库、自定义标签和EL表达式等。这些技术可以帮助你更好地组织和管理你的JSP代码,提高代码的可读性和可维护性。总之,tot-jsp-cms.rar是一个全面而实用的JSP...

    JSP高级实用教程123456

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    JSP基础与案例开发详解 光盘part1

    书中内容由浅入深、循序渐进地介绍了JSP的基本运用,其中包括网页布局与修饰、JDBC应用、Servlet应用、JSP运用、EL表达式运用、自定义标签运用、标准标签库运用等。在讲解的过程中,引用了大量的实例,且每一部分...

    JSP高级编程--Internet/Intranet开发语言

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    jsp 高级编程教材

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

Global site tag (gtag.js) - Google Analytics