`
Sharpleo
  • 浏览: 573963 次
  • 性别: Icon_minigender_1
  • 来自: newsk
社区版块
存档分类
最新评论

jsp自定义标签常用方法属性

 
阅读更多
1。支持el表达式:
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
private Object value = null;
this.value = ExpressionEvaluatorManager.evaluate("value", value.toString(), Object.class, this, pageContext); 

2.用BeanUtil取属性值
import org.apache.commons.beanutils.PropertyUtils;
private String property=null;
Object propertyValue = PropertyUtils.getProperty(value, property);

3.设置request里的值
pageContext.setAttribute("var",propertyValue);

4。打印
pageContext.getOut().print(outputString);

5。取得父标签,取得想要的标签,即使它非父
getParent()
findAncestorWithClass(this,ancestorTag.class);

6。标签自带方法和常量,方法按照容器的调用顺序排列。示例  
 <c:if test="...">
  <c:out value="..."/>
 </c:if>
doStartTag : 容器解析到c:if左尖括号(“<”)时调用
doInitBody : 容器解析到c:if右尖括号(“>”)和c:out左尖括号(“<”)时调用
doAfterBody : 容器解析到c:out结束标记(“/>”)时调用
doEndTag :容器解析到c:if结束标记(“/>”)时调用

EVAL_BODY_SKIP : 通常在 doStartTag 方法里调用,忽略标签包括的内容,假如返回这个值,上面的c:if忽略c:out
EVAL_BODY_INCLUDE :通常在 doAfterBody 方法里调用,再次执行body,假如返回这个值,上面的c:out被执行多次
EVAL_PAGE :可在任何方法里调用。返回jsp页面






body-content:
根据web-jsptaglibrary_2_0.xsd(位于servlet-api.jar包($TOMCAT_HOME\common\lib)中的\javax\servlet\resources下,其中web.xml验证时所需要的xsd文件都位于此resources目录下),body-content的值有下面4种:
<xsd:enumeration value="tagdependent"/>
    <xsd:enumeration value="JSP"/>
    <xsd:enumeration value="empty"/>
    <xsd:enumeration value="scriptless"/>

tagdependent:标签体内容直接被写入BodyContent,由自定义标签类来进行处理,而不被JSP容器解释,
如下:
<test:myList>
select name,age from users
</test:myList>

JSP:接受所有JSP语法,如定制的或内部的tag、scripts、静态HTML、脚本元素、JSP指令和动作。如:
<my:test>
    <%=request.getProtocol()%>     // ②
</my:test>
具体可参考后面附源码。

empty:空标记,即起始标记和结束标记之间没有内容。
下面几种写法都是有效的,
<test:mytag />
<test:mytag uname="Tom" />
<test:mytag></test:mytag>

scriptless:接受文本、EL和JSP动作。如上述②使用<body-content> scriptless </body-content>则报错,具体可参考后面附源码。

rtexprvalue:
由请求时表达式来指定属性的值,默认为false,如下必须设置为true:
<test:welcome uname="<%=request.getParameter("username") %>" />


body-content为JSP/scriptless时标签体可以接受的代码(jasper-compiler.jar包($TOMCAT_HOME\common\lib)中的\org\apache\jasper\compiler\Parser.java中)

 /**   
    doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字   
    doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页   
    doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步   
    EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用   
    EVAL_PAGE:继续处理页面,doEndTag()函数可用   
    SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用   
    SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用   
    EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法   
    EVAL_BODY_AGAIN:请求继续处理body,返回自doAfterBody(),这个返回值在你制作循环tag的时候是很有用的     
    预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE   
    如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:doStartTag() ->不显示文字 ->doEndTag()->执行接下来的网页    
    如果您改写了doStartTag(),则必须指定返回值,   
    如果指定了EVAL_BODY_INCLUDE,则执行顺序是:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页   
     */    

分享到:
评论

相关推荐

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

    在JSP页面中,通过`指令`引入自定义标签库,并使用`属性...&lt;/tag-name&gt;`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression ...

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

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

    JSP自定义标签JSP自定义标签

    综上所述,JSP自定义标签提供了一种强大的机制,使得JSP开发者能够创建定制的、可重用的代码片段,提升Web应用的开发效率和质量。通过理解和熟练运用自定义标签,开发者可以更好地组织和管理JSP项目,实现更高效的...

    jsp自定义标签实例

    ### JSP自定义标签知识点详解 #### 一、概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端动态网页开发技术。JSP自定义标签则是为了提高JSP页面的可读性和重用性而引入的一个重要特性。通过自定义标签,...

    java jsp 自定义标签开发

    总的来说,Java JSP自定义标签的开发提供了一种强大的工具,使得开发者能够构建更加灵活且易于维护的JSP应用。通过自定义标签,可以将复杂的业务逻辑封装起来,降低视图层的复杂度,提高代码的可重用性和可维护性。...

    JSP自定义标签demo

    **JSP自定义标签简介** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现页面的动态生成。在JSP中,除了内置的Java标签(如, 等)和标准标签库(如JSTL)之外,还...

    JSP 自定义标签(清华IT)PPT (适用于有一定编程基础的人员)

    1. **编写标签处理器类**:这个类需要继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.BodyTagSupport`,并覆盖其中的特定方法,比如`doStartTag()`和`doEndTag()`,以实现自定义标签的...

    掌握自定义jsp标签s

    一、JSP自定义标签概述 1. JSP自定义标签的作用:自定义标签提供了一种封装业务逻辑和视图的方式,使得代码结构更加清晰,降低了HTML和Java代码的混合度,提高了代码的可读性和可维护性。 2. 标签库(Tag Library...

    jsp自定义标签

    JSP自定义标签是通过Java类实现的,这些类遵循特定的接口和规范,然后在JSP页面中以XML标签的形式调用。这样,开发者可以创建自己的标签库,就像使用HTML标签一样简单地使用它们,而无需了解背后的Java代码细节。 ...

    jsp 自定义标签

    ### JSP自定义标签详解 #### 一、引言与作用 JSP(Java Server Pages)自定义标签是JSP 1.1版本后引入的一个重要特性,它允许开发者创建可复用的组件,使JSP页面代码更加清晰、模块化。通过自定义标签,可以封装...

    自定义标签的内容及使用

    JSP自定义标签的种类随着JSP版本的更新也在不断丰富,JSP 1.2中的传统标签与JSP 2.0中新增的简单标签和标签文件,为开发者提供了更多的选择。通过熟练掌握自定义标签的开发和使用,可以显著提高JSP应用的开发效率和...

    自定义标签

    - 提升代码复用率:自定义标签可以封装常用功能,避免重复编写相同代码。 - 易于团队协作:统一的自定义标签库可以帮助团队成员快速理解项目结构和逻辑。 5. **自定义标签的实践应用** - 数据绑定:比如,一个...

    掌握自定义jsp标签

    4. **在JSP页面中使用**:在JSP页面中引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。 四、自定义JSP标签的使用示例 假设我们有一个自定义标签`&lt;my:displayUser&gt;`,用于显示用户信息。首先,创建`...

    自定义标签分页

    在Java Web开发中,自定义标签(Custom Tags)是一种封装常用功能、提高代码复用性的技术,它使得JSP页面更加简洁,易于维护。本文将详细介绍如何使用自定义标签实现JDBC分页功能,以及与MySQL数据库的集成。 首先...

    自定义标签(maven)

    为了增强JSP页面的功能和可重用性,我们可以自定义标签库(Tag Libraries)。本篇文章将详细探讨如何使用Maven构建一个自定义标签库,并在Web应用中使用它。 自定义标签库是JSP 2.0引入的一个特性,它允许开发者...

    掌握自定义JSP标签

    2. **复用性**:自定义标签可以封装常用功能,多次使用,减少重复编码。 3. **扩展性**:通过自定义标签,可以轻松扩展JSP的功能,适应不断变化的项目需求。 4. **提高性能**:相比于使用脚本元素,自定义标签通常...

    自定义标签 JAVA web项目开发经验

    1. **标签库描述符(TLD - Tag Library Descriptor)**: TLD文件是XML格式,用于定义自定义标签的功能,包括标签名称、属性、返回类型等信息。它是自定义标签的元数据,通常以`.tld`为扩展名,并放在Web应用的`WEB-INF...

Global site tag (gtag.js) - Google Analytics