`

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自定义标签大全”包含了一系列示例和详细教程,涵盖了从基础到高级的自定义标签使用方法,对于想要深入了解和掌握JSP自定义标签的开发者来说是一份宝贵的参考资料。通过学习和实践这些示例,你可以更好地...

    jsp2.0 自定义标签和自定标签函数

    自定义标签是JSP中的一种高级特性,它允许开发者创建类似于HTML标签的自定义组件。这种组件可以封装复杂的业务逻辑或视图展示,提供了一种更面向对象的方式来编写JSP页面。 1. **创建自定义标签** - 定义Tag接口:...

    JSP自定义标签:最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例

    JSP自定义标签是JavaServer Pages (JSP) 技术中的一种高级特性,它允许开发者创建可重用的自定义组件,以提高代码的可维护性和可读性。自定义标签可以看作是对HTML标签的扩展,它们提供了更加结构化和面向对象的方式...

    jsp自定义标签,structs2 JUNIT,structs2自定义拦截器

    首先,JSP自定义标签是Java Web开发中的一种高级特性,它允许开发者创建自己的标签库,以提高代码的可读性和可维护性。自定义标签通常用于封装复杂的业务逻辑或UI组件,使得视图层的代码更加简洁。要创建自定义标签...

    JSP自定义标签入门实例

    通过学习和实践这个JSP自定义标签入门实例,你可以掌握创建和使用自定义标签的基本流程,为进一步深入JSP开发打下坚实的基础。同时,了解自定义标签也是理解JavaServer Faces (JSF)和其他MVC框架中组件化开发的关键...

    JSP自定义标签.ppt

    JSP自定义标签是JavaServer Pages(JSP)技术中的一种高级特性,它允许开发者创建可重用的、自定义的HTML元素,这些元素能够执行特定的Java代码逻辑,而无需在页面中直接嵌入Java代码。这极大地提高了JSP页面的...

    由浅到深详细讲解JSP自定义标签

    JSP自定义标签是JavaServer Pages(JSP)技术中的一种高级特性,允许开发者创建可重用的组件,以XML形式定义并使用,从而提高代码的可读性和可维护性。本文将由浅入深地讲解JSP自定义标签的概念、格式、处理过程以及...

    jsp自定义标签实例.doc

    JSP自定义标签是一种高级特性,它允许开发者创建自己的标签,这些标签可以封装复杂的逻辑并多次重用。每个自定义标签都由以下几部分组成: 1. **标签处理程序类**:定义了标签的行为,当JSP引擎遇到自定义标签时,...

    一个简单的JSP自定义标签

    在IT行业中,JavaServer Pages(JSP)是一种用于创建动态网页的技术,它允许开发者将HTML代码与Java代码相结合。...在持续学习的过程中,可以参考相关的书籍、在线教程和社区资源,不断深化对JSP自定义标签的理解。

    JSP自定义标签基础知识学习

    JSP自定义标签是一种扩展JSP表达式语言和标准标签库的机制,允许开发者创建自己的标签,以简化页面代码和提高代码重用性。自定义标签的创建和使用是JSP开发中一项重要的技能,尤其在需要封装特定业务逻辑或流程时...

    jsp自定义标签技术(实现原理与代码以及平台搭建步骤).docx

    【jsp自定义标签技术】是JavaServer Pages (JSP) 中的一种高级特性,它允许开发者创建自定义的、可重用的标签库,以提高代码的可读性和可维护性。这种技术的主要目的是遵循JSP代码规范,避免在页面中直接编写Java...

    jsp自定义标签

    【JSP自定义标签】是JavaServer Pages (JSP) 技术中的一种高级特性,它允许开发者创建自己的标签库,以实现复用性强、可维护性高的代码。这一特性在JSP 1.1版本之后被引入,极大地提升了开发效率。 ### 1. 案例分析...

    自定义JSP标签

    - **使用Eclipse的JSP编辑器**:在JSP页面中插入自定义标签时,Eclipse会自动提供代码补全和语法检查,提高开发效率。 自定义JSP标签的应用场景广泛,例如,可以创建用于数据格式化、用户界面组件、复杂逻辑控制等...

    JSP20Examples-自定义标签

    在JSP20Examples这个压缩包中,我们可能会找到关于自定义标签的实践案例,自定义标签是JSP的一种高级特性,它允许开发人员创建可重用的、自定义的组件,以提高代码的可维护性和复用性。 **自定义标签的定义与使用**...

    自定义标签的一些资料,大家可以看一下

    通过学习和实践自定义标签,开发者能够更好地掌控JSP的高级特性,并提升Web应用的质量和性能。在实际项目中,自定义标签经常用于实现如数据遍历、条件判断、表单验证等常见功能,让JSP页面更专注于展示逻辑,而将...

    Java自定义标签开发.zip

    首先,我们要了解JSP自定义标签的基本概念。在JSP中,自定义标签类似于HTML标签,但它们提供了更大的灵活性和功能。开发者可以定义自己的标签行为,这使得代码更加模块化,降低了代码间的耦合度。与JSP内置标签不同...

    jsp自定义标签+jpa+hibernate+struts2实现的分页

    本项目结合了JSP自定义标签、JPA(Java Persistence API)、Hibernate ORM框架以及Struts2框架,实现了高效且灵活的分页功能。下面我们将详细探讨这些技术及其在分页中的应用。 首先,JSP自定义标签(Custom Tags)...

    一步一步教你写自己的java自定义标签

    Java自定义标签是JavaServer Pages (JSP)技术的...实践过程中,你还可以深入研究JSP API文档,理解更多的高级特性和最佳实践,以提升自定义标签的灵活性和性能。不断学习和实践,你将成为一名熟练的Java Web开发专家。

    jsp学习总结jsp基础自定义标签eL表达式

    ### JSP学习总结:基础、自定义标签与EL表达式 #### JSP概念与特性 JSP(Java Server Pages)是一种服务器端脚本语言,它允许开发者在HTML文档中嵌入Java代码,使得网页能够根据不同的请求动态生成内容。JSP文件在...

Global site tag (gtag.js) - Google Analytics