`
meiwm
  • 浏览: 14107 次
社区版块
存档分类
最新评论

JSP 使用参考 -- 自定义标签

 
阅读更多

 

首先约定下标签各部分的名称
  • <标签开始> 标签主体内容 </标签结束部分>
1. 声明自定义标签的类
(1). 自定义标签的实现类须继承自 javax.servlet.jsp.tagext.TagSupport, 其中可能需要重写的方法有 
  • init()  --- 初始化资源
  • doStartTag() --- 解析标签的开始部分
  • doAfterBody() --- 解析标签内容部分
  • doEndTag()  --- 解析标签的结束部分
  • release()  --- 用于回收资源
(2). 和大部分 java(web) 功能 一样,标签的实现类也需要 符合 javabean规范,即使用 get/set方法 操作字段

(3). 标签解析方法的返回值
标签解析方法 返回值有:
  • EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 ,(doStartTag()函数可用)  
  • EVAL_PAGE:继续处理页面,(doEndTag()函数可用 )
  • SKIP_BODY:告诉服务器不要处理正文内容,(doStartTag()和doAfterBody()函数可用) 
  • SKIP_PAGE:让服务器不要处理剩余的页面,doEndTag()函数可用   (doEndTag()函数可用 )
  • EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代  
  • EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么否则非法  
(4). 如果需要与标签主体内容进行交互, 自定义标签类可以继承自  javax.servlet.jsp.tagext.BodyTagSupport

(5) 范例代码

package com.forum.tag;

import java.io.IOException;
import javax.servlet.jsp.tagext.TagSupport;
public class TagPrimary extends TagSupport {
                private static final long serialVersionUID = 1L;

                private String name;
                private String age;
                @Override
                public int doStartTag()
                {
                       return EVAL_PAGE;
                }
                @Override
                public int doEndTag()
                {
                       try {
                                pageContext.getOut().write( "neme:" + name + "; age: " + age);
                       } catch (IOException e) {

                      }
                         return EVAL_PAGE;
                }
                public String getName() {
                        return name;
                }
                public void setName(String name) {
                       this. name = name;
                }
                public String getAge() {
                       return age;
                }
                public void setAge(String age) {
                       this. age = age;
                }
}


2. 建立TLD
TLD文件就是一个xml文件, 其用来保存 自定义标签的相应设置,一个TLD文件可以包含多个标签的定义

(1) 范例文件 primary.tld

<? xml version= "1.0" encoding = "UTF-8"?>
< taglib version= "2.1" xmlns = "http://java.sun.com/xml/ns/javaee"
        xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd">
        <tlib-version> 1.0</tlib-version>
        <short-name> p</short-name>
        <tag>
               <name> tagtest </name>
               <tag-class> com.forum.tag.TagPrimary </tag-class>
               <body-content> empty</ body-content>
               <attribute>
                      <name> name</name>
                      <required> true</required>
                      <rtexprvalue> true</rtexprvalue>
               </attribute>
               <attribute>
                      <name> age</name>
                      <required> true</required>
                      <rtexprvalue> true</rtexprvalue>
               </attribute>
        </tag>
</taglib>


(2) 元素说明
TLD文件中的标签
  • taglib -- TLD文件的根标签
  • tlibversion -- 此标签库的版本
  • jspversion -- 此标签库依赖的JSP版本。
  • shortname -- 当在JSP中使用标签时,此标签库建议的前缀。
  • tag -- 包含针对此标签库中的一个标签的元数据
<tag>子标签
  • name -- 标签名称
  • tagclass -- Java标签处理器类的完全限定名
  • bodycontent -- 此标签的主体内容部分的内容的处理方式,
       1. empty:表示标签主体内容必须为空;
       2. JSP: 表示脚本元素和模板及其它标签一样被评估。
       3. tagdependent:内容被原封不动写入BodyContent,其它脚本元素以源码形式出现,而不是被JSP容器解释。
  • attribute -- 包含了此标签的一个属性的元数据
<attribute>子标签
  • name -- 属性的名字。
  • required -- 属性是否必须。
  • rtexprvalue -- 属性值能否用表达式指定(如EL表达式)
3 配置 TLD
必须在 web.xml 中声明 对应的 TLD文件, 才能够使用相应的自定义标签,如

<jsp-config>
  <taglib>
      <taglib-uri> /mytaglib </taglib-uri>
      <taglib-location> /WEB-INF/classes/primary.tld </taglib-location >
  </taglib>
</jsp-config>


4. 使用 自定义标签 (红色部分代码)

<%@ page language= "java" pageEncoding ="GBK"
        contentType ="text/html;charset=GBK" %>
<%@ taglib prefix= "p" uri= "/mytaglib" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
    <meta http-equiv= "Content-Type" content= "text/html; charset=GBK">        
    <title>测试页面 </title>
  </head>
  <body>
        <p:tagtest age= "20" name = "小明" />
  </body>
</html>


5. 参考文章

 

 

 

 

 

 

 

 

原创文章 转载请注明出处 http://meiwm.iteye.com/ 谢谢
...
分享到:
评论

相关推荐

    JSP GridView --使用自定义标签实现ASP.NET的控件

    这篇博客文章 "JSP GridView --使用自定义标签实现ASP.NET的控件" 提到了如何在JSP环境中模仿ASP.NET GridView的特性。作者向我们展示了如何通过创建自定义标签库(Tag Library)来扩展JSP的功能,从而实现数据绑定...

    JavaWeb-12:自定义标签库开发&JSTL标签库

    3. **在JSP中使用自定义标签**:通过URI和标签名引用自定义标签,如`&lt;myTags:greeting&gt;`。 二、JSTL标签库 JSTL是Java Web开发的标准标签库,它包含五个核心部分:Core、Format、I18N、XML和SQL。这些标签提供了...

    掌握jsp自定义标签chm版

    在JavaServer Pages ...总之,"掌握jsp自定义标签chm版"这份资料涵盖了JSP自定义标签的各个方面,是学习和提升JSP开发能力的重要参考资料。通过深入学习,开发者可以更加自如地驾驭JSP,构建高效、可维护的Web应用。

    jsp自定义标签大全.rar

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

    JSP自定义标签源码

    - **JSP Tag Library Developer's Guide**:Oracle官方提供的指南,是开发自定义标签的权威参考。 - **Apache Ant**:构建工具,用于编译和打包自定义标签库。 - **Eclipse**、**IntelliJ IDEA**等IDE:提供集成的...

    一个简单的JSP自定义标签

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

    jsp ----挂号系统

    JSP提供了一些内置指令,如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, 和`&lt;%@ taglib %&gt;`,它们分别用于设置页面属性、包含其他文件和导入自定义标签库。JSP动作元素如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:param&gt;`等,...

    参考自定义标签的例子

    在"参考自定义标签的例子"这个工程中,`selftag`可能就是包含了上述所有组件的文件夹。在这个例子中,你可以找到`.tld`、`.tag`文件以及其他相关的Java源代码,这些都是实现自定义标签的关键部分。通过研究这些文件...

    Struts2分页-自定义标签-类似百度分页

    这个文件会被Struts2框架解析,使自定义标签可以在JSP页面中使用。 2. **编写标签处理类**:创建一个继承自`org.apache.struts2.views.jsp.TagSupport`或`org.apache.struts2.components.UIBean`的Java类。这个类将...

    jsp自定义标签介绍与操作实例参考.pdf

    在JSP页面中使用自定义标签,需要在Web部署描述符(web.xml)中声明标签库,并通过`&lt;taglib&gt;`指令将其导入到JSP页面。当JSP容器遇到自定义标签时,它会查找对应的TLD文件以找到相应的标签处理程序。在运行时,生成的...

    jsp中的 自定义标签的全套例子

    在提供的压缩包文件“标签例子”中,你应该能找到一个实际操作的例子,包括标签处理类、TLD文件和使用自定义标签的JSP页面,供你参考和学习。 总的来说,理解并熟练掌握JSP自定义标签,能够提升开发效率,使Web应用...

    jsp自定义标签中的困扰

    如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各方法的详细介绍`这份文档,它将为你提供更详细的步骤和示例代码,帮助你解决实际开发中的问题。记住,实践是最好的老师,不断尝试和调试是掌握...

    JSP自定义标签实现数据字典

    在JavaServer Pages (JSP) 开发中,数据字典是一种常见的工具,它用于存储和管理应用程序中的枚举型或固定值...此外,`jsptag`目录可能包含了这个自定义标签的源代码、TLD文件和其他相关资源,方便开发者学习和参考。

    Struts2自定义标签

    为了在JSP页面中使用自定义标签,我们需要在Action类中进行相应的配置。例如,我们可以定义一个抽象类`AbstractResAction`,并在其中使用Java反射机制来调用自定义标签的方法。 ```java public abstract class ...

    javax.servlet---jsp-api jar包

    `Tag` 和 `TagSupport` 用于自定义JSP标签,扩展JSP的功能。 3. **使用场景**: 这些API广泛应用于企业级Web开发,尤其是在使用Java EE(Enterprise Edition)平台时。例如,你可以使用Servlet来处理HTTP请求,执行...

    jsp-api-2.0.jar免费下载

    2. **自定义标签库(JSTL, JSP Standard Tag Library)**:JSTL是JSP 2.0引入的一个标准标签库,它提供了多种功能强大的标签,如循环、条件判断、XML处理等,帮助开发者避免使用脚本语言编写复杂的JSP代码。...

    JSP自定义标签案例分析

    JSP自定义标签是Java EE开发中用于创建自定义HTML标签的一种机制,允许开发者根据自己的业务需求扩展JSP页面的...对于有兴趣进一步深入学习和实践JSP自定义标签的开发者来说,这两个案例提供了很好的参考和学习材料。

    JSP中文参考手册-离线版.rar

    双击 "JSP参考手册.CHM" 文件,用户就可以在Windows环境下打开并查看JSP的相关教程。 **基础教程** 部分通常涵盖了JSP的入门知识,包括: 1. **环境配置**:介绍如何在开发环境中安装和配置JSP所需的软件,如JDK、...

    自定义标签(简单讲解)

    参考“掌握自定义JSP标签.chm”和“创建自定义标签.txt”,我们可以看到一个完整的自定义标签实现过程。例如,创建一个简单的“Hello, World!”标签,首先编写TLD文件,然后实现对应的标签处理类,最后在JSP页面上...

    自定义标签项目实例(各种例子)

    3. **在JSP页面中使用自定义标签**:引入TLD文件后,就可以在JSP页面中像使用普通HTML标签一样使用自定义标签了,例如: ```jsp &lt;%@ taglib prefix="myTags" uri="/WEB-INF/tlds/mytags.tld" %&gt; ... ``` **...

Global site tag (gtag.js) - Google Analytics