从jsp1.1开始就可以在jsp页面中使用自定义标签了,使用自定义标签不但可以实现代码重用,而且可以使jsp代码更简洁。Jsp2.0的标签扩展API中又增加了SimpleTag接口和其实现类SimpleTagSupport。

 
标签扩展API层次结构:
 

TLD文件元素详解:

每个自定义标签都必须在TLD文件中声明,TLD文件只不过是一个XML文件。根元素是<taglib>,它包含一个或者多个<tag>标签,该元素用来声明定制标签。<taglib>元素中只有<tlib-version>元素是必须的,其他都是可选的。

TLD文件中的元素

标  签

含  义

<taglib>

TLD文件的根元素

<tlib-version>

此标签库的版本

<jsp-version>

此标签库依赖的JSP版本。

<short-name>

<description>

<display-name>

<icon>

<uri>

<validator>

<listener>

<function>

当在JSP中使用标签时,此标签库首选或者建议的前缀。当然可以完全忽略这个建议

描述信息

图形工具可显示的一个简短名称

图形工具可显示的图标

指定使用该标签库中标签的URI

关于该库的TagLibraryValidator信息

指定事件监听器类

定义一个在EL中使用的函数

<tag>

定义一个标签

<tag>元素的子元素

标  签

含  义

<description>

<display-name>

<icon>

<name>

指定针对标签的信息

开发工具用于显示的一个简短名称

可被开发工具使用的图标

标签名称

<tag-class>

<tei-class>

Java标签处理器类的名称。注意这是处理器类的全限定名称,比如com.xx.tag.TableTag

Javax.servlet.jsp.tagext.TagExtraInfo类的一个可选子类

<body-content>

<variable>

<example>

此标签的主体部分的内容。其值可为scriptless\tagdependent\empty,默认为empty

定义脚本变量信息

使用该标签例子的可选的非正式描述

<attribute>

包含了此标签的一个属性的元数据

<attribute>的子元素

标  签

含  义

<description>

<name>

有关描述的文本信息

在jsp标签中使用的属性名称

<required>

<rtexprvalue>

<type>

指定属性是必须的还是可选的,默认为false,表示属性可选。如果该值为true,则jsp页面必须为该属性提供一个值。可能的值true、false、yes、no

指定属性是否能接受请求时表达式的值,默认为false,表示不能接受请求时表达式的值。可能值:true、false、yes、no

属性的数据类型,该元素只能用在当<rtexprvalue>设置为true时。它指定当使用请求时属性表达式(<%= %>)返回类型。默认string

实例(继承SimpleTagSupport类方式):

编写一个DateTag标签,输出系统时间。<c1:date/>,输出的格式:2011年11月9日

step1: 写一个java类,继承SimpleTagSupport类

step2:override doTag()方法,在该方法里,实现相应的处理逻辑

package mytag;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class DateTag extends SimpleTagSupport{

@Override

public void doTag() throws JspException, IOException {

PageContext ctx = (PageContext)getJspContext();

JspWriter out = ctx.getOut();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

out.println(sdf.format(new Date()));

}

}

step3: 在.tld文件当中,描述该标签

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

<tlib-version>1.1</tlib-version>

<short-name>c1</short-name>

<uri>http://www.tarena.com.cn/mytag1</uri>

<tag>

<name>date</name>

<tag-class>mytag.DateTag</tag-class>

<body-content>empty</body-content>

</tag>

</taglib>

step4: 使用taglib导入标签(jsp中)

<%@taglib prefix="c1" uri="http://www.tarena.com.cn/mytag1" %>

<c1:date/>

最新文章

  1. GO 1.5 代码编译安装 [centos7 64位]
  2. EF是啥?【What is Entity Framework?】(EF基础系列2)
  3. NPOI支持excel2003和excel2007
  4. eclipse系列: Cannot change version of project facet Dynamic web的解决方法
  5. Object之魔术函数__call() 处理错误调用
  6. PHP之MVC微型框架简单搭建
  7. Java EE (7) -- Java EE 6 Enterprise Architect Certified Master(1z0-807)
  8. 单线驱动74hc595(转)
  9. WebX框架学习笔记之二----框架搭建及请求的发起和处理
  10. iOS UINavigationController Class Translation
  11. [Swift]LeetCode886. 可能的二分法 | Possible Bipartition
  12. 封装nodeJS中 $on $emit $off 事件
  13. 【Spring】DispatcherServlet的启动和初始化
  14. Win7或Win8上安装VS2015报&ldquo;安装包丢失或损坏&rdquo;问题的解决办法
  15. oralce 11.2.0.4手动创建EM
  16. WebFrom 【文件上传】
  17. SSH的配置文件
  18. Basestation函数解析(二)
  19. Android menu+ anctionbar
  20. org.springframework.beans.factory.BeanCreationException: sqlSessionFactory

热门文章

  1. 对应键盘的ASCII码(备忘)
  2. solr5.5教程-tomcat布署(2)
  3. Can Live View boot up images acquired from 64bit OS evidence?
  4. windows 2003 修改远程桌面连接数详细方法
  5. ubuntu下使用apt-get install安装的软件在哪个目录
  6. C# 通过this关键字来扩展方法
  7. leetcode2:Add Two Numbers
  8. 在PHP项目中使用Standford Moss代码查重系统
  9. UML类图常见关系总结
  10. Cookie与Session的一些总结