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

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/>
自定义jstl标签开发的更多相关文章
- 自定义JSTL标签和函数库
一.自定义JSTL标签 1.编写标签处理类: (1)实现 SimpleTag 接口,通过 setJspContext()方法可以获取到 jspContext 对象,实际上也是 pageContext ...
- 如何自定义JSTL标签与SpringMVC 标签的属性中套JSTL标签报错的解决方法
如何自定义JSTL标签 1.创建一个类,从SimpleTagSupport继承 A) 通过继承可以获得当前JSP页面上的对象,如JspContext I) 实际上可以强转为PageContext II ...
- 自定义EL函数、自定义JSTL标签
自定义EL函数 1.做一个类(静态) package com.maya.el; public class ELBiaoDaoShi { public static String TiHuan(Stri ...
- 自定义jstl标签库
开发环境:Spring+SpringMVC +Maven +Mybatis JSTL 标签库的配置: 导入对应的 jstl.jar 和 standard.jar ,我使用的配置如下: <prop ...
- (十三)自定义JSTL标签
前面的博客,我们讲过了 自定义 el函数 : 讲一个 自定义标签技术 : 目录 自定义标签 快速入门:使用标签输出客户机IP 关于标签处理器类的方法 自定义标签功能扩展 传统标签 简单标签 配置简单标 ...
- 自定义jstl标签*
原文链接:https://www.it610.com/article/442039.htm 步骤如下: 1.写tld文档:用来指定标签的名字,标签库等. 2.写标签处理器类. 3.配置到web.xml ...
- 【JSP】自定义标签开发入门
JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...
- EL表达式、JSTL标签库
一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...
- JSP学习笔记(3)——JSTL 标签库
JSP Standard Tag Lib,名为JSP标准标签库,设计的目的主要用来方便我们将数据输出,而不是使用JSP中的语法<% %> <%= %> <%! %> ...
随机推荐
- SPSS时间序列:频谱分析
一.频谱分析(分析-预测-频谱分析) “频谱图”过程用于标识时间序列中的周期行为.它不需要分析一个时间点与下一个时间点之间的变异,只要按不同频率的周期性成分分析整体序列的变异.平滑序列在低频率具有更强 ...
- [转载]:Endnote 自定义style文件的默认位置
一般而言,安裝完EndNote 後,預設Output Styles.Filters.Connection Files 的電腦存放路徑如下– C:\Program Files\EndNote X4 ...
- JavaCC首页、文档和下载 - 语法分析生成器 - 开源中国社区
JavaCC首页.文档和下载 - 语法分析生成器 - 开源中国社区
- idea 14 svn安装
安装SVN客户端. 打开IDEA 14 File-setting-Version coltorl-Subversion-General 填入安装路径 打开"VCS"菜单项然后点击& ...
- C# 多线程---------<一>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Android IOS WebRTC 音视频开发总结(十三)-- ice原理
以前在做一个视频监控项目的时候,刚开始客户没提到要支持P2P,因为服务端是我们自己写的,为了便于处理一些逻辑,全部采用转发的方式,后来客户要求支持P2P,没办法了,后来自己部署了一个STUN服务器(不 ...
- css3选择器 以及当天知道的东西
10.25日伪类:a:link{}未访问的链接 a:visited{}已访问的链接 a:hover{}鼠标移动到链接上 a:active{}选定的链接 注:a:hover ...
- Windows和Linux下Mysql 重置root 密码
Windows系统下一:进入Windows窗口cmd命令行下,停止mysql服务: net stop mysql二:进入mysql的安装目录下,进去bin目录mysqld-nt.exe --skip- ...
- ASP.NET页面生存周期
.Net的Page请求过程:
- 详解Oracle临时表的几种用法及意义
Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中.希望本文能对大家有所帮助. 1 .前言 Oracle Logo 目前所有使用 Oracle 作 ...