首先约定下标签各部分的名称
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自定义分页标签,参考http://blog.csdn.net/fastthinking/article/details/12849065
原创-自定义标签库制作手册,提供范例,供参考 jsp、java、tld
jsp自定义标签例子,能在Tomcat下直接运行 具体讲解参考 http://blog.csdn.net/zwhfyy/archive/2008/06/13/2543904.aspx
jsp自定义标签介绍与操作实例参考.pdf
掌握自定义JSP标签(html).实用易学,很强的引导性和参考性
主要介绍了jsp自定义标签之ifelse与遍历自定义标签,需要的朋友可以参考下
主要介绍了JSP自定义标签案例,为大家提供了两个针对JSP自定义标签的案例分析,感兴趣的小伙伴们可以参考一下
这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,完全与Java代码分离 1. tld文件如下: 首先是要写×.tld文件,当项目随着服务器启动的时候,会检查项目中有没有*tld文件...
主要为大家详细介绍了JSP自定义标签基础知识,如何实现自定义标签,请参考本文进行学习
“进阶篇”内容主要面向有一定JSP基础的读者,通过全面且实际的实训案例向读者介绍JavaBean技术的应用、Servlet技术的应用、自定义标签应用、XML技术应用、网络技术应用、安全技术应用及J2EE开发模式应用,读者参考...
主要介绍了JSP自定义标签rtexprvalue属性用法,以实例形式较为详细的分析了自定义标签rtexprvalue属性相关使用技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
JSP自定义标签库,详细的解说,可以作为参考手册
本文实例讲述了jsp通过自定义标签库实现数据列表显示的方法。分享给大家供大家参考,具体如下: 1. 定义标签库类 UserListTag.java package com.yanek.cms.tag; import java.io.IOException; import java.util....
mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...
主要介绍了jsp简单自定义标签的forEach遍历及转义字符,需要的朋友可以参考下
主要介绍了JSP实现用于自动生成表单标签html代码的自定义表单标签,可实现自动生成html标签的功能,具有一定参考借鉴价值,需要的朋友可以参考下
本篇文章小编为大家介绍,基于JSP 自定义标签使用实例介绍,需要的朋友参考下