首先约定下标签各部分的名称
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环境中模仿ASP.NET GridView的特性。作者向我们展示了如何通过创建自定义标签库(Tag Library)来扩展JSP的功能,从而实现数据绑定...
3. **在JSP中使用自定义标签**:通过URI和标签名引用自定义标签,如`<myTags:greeting>`。 二、JSTL标签库 JSTL是Java Web开发的标准标签库,它包含五个核心部分:Core、Format、I18N、XML和SQL。这些标签提供了...
在JavaServer Pages ...总之,"掌握jsp自定义标签chm版"这份资料涵盖了JSP自定义标签的各个方面,是学习和提升JSP开发能力的重要参考资料。通过深入学习,开发者可以更加自如地驾驭JSP,构建高效、可维护的Web应用。
本资源“jsp自定义标签大全”包含了一系列示例和详细教程,涵盖了从基础到高级的自定义标签使用方法,对于想要深入了解和掌握JSP自定义标签的开发者来说是一份宝贵的参考资料。通过学习和实践这些示例,你可以更好地...
- **JSP Tag Library Developer's Guide**:Oracle官方提供的指南,是开发自定义标签的权威参考。 - **Apache Ant**:构建工具,用于编译和打包自定义标签库。 - **Eclipse**、**IntelliJ IDEA**等IDE:提供集成的...
在IT行业中,JavaServer Pages(JSP)是一种用于创建动态网页的技术,它允许开发者将HTML代码与Java代码相结合。...在持续学习的过程中,可以参考相关的书籍、在线教程和社区资源,不断深化对JSP自定义标签的理解。
JSP提供了一些内置指令,如`<%@ page %>`, `<%@ include %>`, 和`<%@ taglib %>`,它们分别用于设置页面属性、包含其他文件和导入自定义标签库。JSP动作元素如`<jsp:include>`, `<jsp:forward>`, `<jsp:param>`等,...
在"参考自定义标签的例子"这个工程中,`selftag`可能就是包含了上述所有组件的文件夹。在这个例子中,你可以找到`.tld`、`.tag`文件以及其他相关的Java源代码,这些都是实现自定义标签的关键部分。通过研究这些文件...
这个文件会被Struts2框架解析,使自定义标签可以在JSP页面中使用。 2. **编写标签处理类**:创建一个继承自`org.apache.struts2.views.jsp.TagSupport`或`org.apache.struts2.components.UIBean`的Java类。这个类将...
在JSP页面中使用自定义标签,需要在Web部署描述符(web.xml)中声明标签库,并通过`<taglib>`指令将其导入到JSP页面。当JSP容器遇到自定义标签时,它会查找对应的TLD文件以找到相应的标签处理程序。在运行时,生成的...
在提供的压缩包文件“标签例子”中,你应该能找到一个实际操作的例子,包括标签处理类、TLD文件和使用自定义标签的JSP页面,供你参考和学习。 总的来说,理解并熟练掌握JSP自定义标签,能够提升开发效率,使Web应用...
如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各方法的详细介绍`这份文档,它将为你提供更详细的步骤和示例代码,帮助你解决实际开发中的问题。记住,实践是最好的老师,不断尝试和调试是掌握...
在JavaServer Pages (JSP) 开发中,数据字典是一种常见的工具,它用于存储和管理应用程序中的枚举型或固定值...此外,`jsptag`目录可能包含了这个自定义标签的源代码、TLD文件和其他相关资源,方便开发者学习和参考。
为了在JSP页面中使用自定义标签,我们需要在Action类中进行相应的配置。例如,我们可以定义一个抽象类`AbstractResAction`,并在其中使用Java反射机制来调用自定义标签的方法。 ```java public abstract class ...
`Tag` 和 `TagSupport` 用于自定义JSP标签,扩展JSP的功能。 3. **使用场景**: 这些API广泛应用于企业级Web开发,尤其是在使用Java EE(Enterprise Edition)平台时。例如,你可以使用Servlet来处理HTTP请求,执行...
2. **自定义标签库(JSTL, JSP Standard Tag Library)**:JSTL是JSP 2.0引入的一个标准标签库,它提供了多种功能强大的标签,如循环、条件判断、XML处理等,帮助开发者避免使用脚本语言编写复杂的JSP代码。...
JSP自定义标签是Java EE开发中用于创建自定义HTML标签的一种机制,允许开发者根据自己的业务需求扩展JSP页面的...对于有兴趣进一步深入学习和实践JSP自定义标签的开发者来说,这两个案例提供了很好的参考和学习材料。
双击 "JSP参考手册.CHM" 文件,用户就可以在Windows环境下打开并查看JSP的相关教程。 **基础教程** 部分通常涵盖了JSP的入门知识,包括: 1. **环境配置**:介绍如何在开发环境中安装和配置JSP所需的软件,如JDK、...
参考“掌握自定义JSP标签.chm”和“创建自定义标签.txt”,我们可以看到一个完整的自定义标签实现过程。例如,创建一个简单的“Hello, World!”标签,首先编写TLD文件,然后实现对应的标签处理类,最后在JSP页面上...
3. **在JSP页面中使用自定义标签**:引入TLD文件后,就可以在JSP页面中像使用普通HTML标签一样使用自定义标签了,例如: ```jsp <%@ taglib prefix="myTags" uri="/WEB-INF/tlds/mytags.tld" %> ... ``` **...