[03-01] JSP自定义标签
1、自定义标签的概念
2、自定义标签的基本组成
- *.tld :(taglib descriptor)这是一个xml格式的文件,用来定义标签名称、属性、标签处理类、标签体等
- *.class :每个标签会有对应的处理类,这个类要遵守一定的规范(继承或实现API中特定类或接口,覆盖方法)
3、自定义标签的实例
3.1 创建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"
version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<display-name>Demo Tag</display-name>
<tlib-version>1.0</tlib-version>
<short-name>d</short-name>
<!--资源定位符,并不一定真实存在的路径,保持唯一即可-->
<uri>/dulk/learn/demo/taglib</uri>
<!--tag,开始标签描述,可以设置多个-->
<tag>
<!--标签描述-->
<description><![CDATA[演示自定义标签]]></description>
<!--标签名称-->
<name>printAttr</name>
<!--标签处理类-->
<tag-class>dulk.learn.demo.PrintAttrHandler</tag-class>
<!--标签体的内容-->
<body-content>empty</body-content>
<!--开始标签属性描述,可以设置多个-->
<attribute>
<!--属性描述-->
<description><![CDATA[需要显示的请求中的属性名称]]></description>
<!--属性名称-->
<name>attr</name>
<!--属性必需性-->
<required>true</required>
<!--runtime expression value 运行期表达式的值,即是否可以传表达式,变量-->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
<?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"
version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<display-name>Demo Tag</display-name>
<tlib-version>1.0</tlib-version>
<short-name>d</short-name>
<!--资源定位符,并不一定真实存在的路径,保持唯一即可-->
<uri>/dulk/learn/demo/taglib</uri>
<!--tag,开始标签描述,可以设置多个-->
<tag>
<!--标签描述-->
<description><![CDATA[演示自定义标签]]></description>
<!--标签名称-->
<name>printAttr</name>
<!--标签处理类-->
<tag-class>dulk.learn.demo.PrintAttrHandler</tag-class>
<!--标签体的内容-->
<body-content>empty</body-content>
<!--开始标签属性描述,可以设置多个-->
<attribute>
<!--属性描述-->
<description><![CDATA[需要显示的请求中的属性名称]]></description>
<!--属性名称-->
<name>attr</name>
<!--属性必需性-->
<required>true</required>
<!--runtime expression value 运行期表达式的值,即是否可以传表达式,变量-->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.2 创建标签处理器类
public class PrintAttrHandler extends TagSupport {
//声明与tld文件中对应的属性
private String attr;
//属性提供set方法
public void setAttr(String attr) {
this.attr = attr;
}
//覆盖父类方法,实现标签功能
@Override
public int doStartTag() throws JspException {
//使用从父类继承到的pageContext对象,可以获取请求/会话/上下文等关键对象
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
JspWriter jspOut = pageContext.getOut();
String value = request.getParameter(attr) == null ? "该值不存在" : request.getParameter(attr);
try {
jspOut.println(value);
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
public class PrintAttrHandler extends TagSupport {
//声明与tld文件中对应的属性
private String attr;
//属性提供set方法
public void setAttr(String attr) {
this.attr = attr;
}
//覆盖父类方法,实现标签功能
@Override
public int doStartTag() throws JspException {
//使用从父类继承到的pageContext对象,可以获取请求/会话/上下文等关键对象
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
JspWriter jspOut = pageContext.getOut();
String value = request.getParameter(attr) == null ? "该值不存在" : request.getParameter(attr);
try {
jspOut.println(value);
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
3.3 使用实例
<%@page pageEncoding="utf-8" %>
<!--标签引入-->
<%@taglib uri="/dulk/learn/demo/taglib" prefix="dulk"%>
<html>
<body>
<h2>Hello World!</h2>
<!--标签使用-->
request中author属性的值为:<dulk:printAttr attr="author"/>
</body>
</html>
<%@page pageEncoding="utf-8" %>
<!--标签引入-->
<%@taglib uri="/dulk/learn/demo/taglib" prefix="dulk"%>
<html>
<body>
<h2>Hello World!</h2>
<!--标签使用-->
request中author属性的值为:<dulk:printAttr attr="author"/>
</body>
</html>


[03-01] JSP自定义标签的更多相关文章
- 一个简单的jsp自定义标签
学到了一个简单的jsp自定义标签,后面有更多的例子,会更新出来: 例子1: 步骤: 1.编写标签实现类: 继承javax.servlet.jsp.tagext.SimpleTagSupport; 重写 ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...
- java JSP自定义标签
来至: http://blog.csdn.net/jiangwei0910410003/article/details/23915373 http://blog.csdn.net/jiangwei09 ...
- Rhythmk 一步一步学 JAVA(7): jsp 自定义标签
1.实现Tag接口: TagSupport类实现了Tag接口,为我们提供了4个重要的方法(见表6-5). 1.1. TagSupport类中的常用方法 int doStartTag ...
- JSP 自定义标签
0 标签技术的API继承体系 1 作用 jsp自定义标签用于移除页面中的java代码 2 实现 2.1 标签处理类ViewIPTag.java package com.zsm.util; import ...
- JSP自定义标签开发入门
一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...
- jsp自定义标签分析
jsp自定义标签的优势体现在于jsp页面上面减少了java代码. jsp自定义标签有三大部分组成,首先是类继承TagSupport,实现doStartTag方法. public int doStart ...
- JSP自定义标签库
总所周知,JSP自定义标签库,主要是为了去掉JSP页面中的JAVA语句 此处以格式化输出时间戳为指定日期格式为例,简单介绍下JSP自定义标签的过程. 编写标签处理类(可继承自javax.servlet ...
- JSP自定义标签配置
JSP自定义标签配置 JSP自定义标签 <taglib> <taglib-uri>/WEB-INF/you.tld</taglib-uri> ...
- JSP自定义标签开发入门《转》
JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; ...
随机推荐
- python中收集函数的解包问题
收集参数的解包问题 - 把参数放入list或者字典中,直接把list/dict中的值放入收集参数中- 语法:参照案例 # 收集参数的问题 def stu(*args): print("=&q ...
- 【读书笔记】iOS-iOS流媒体
在网络上直接看电影已经不是什么新鲜的事情,在iOS等移动设备上也有很多在线视频应用,如国内的PPS和PPLive应用,还有一些新闻视频都可以在线观看,如USA TODY.所以这些在线视频都采用流媒体技 ...
- 用 JS 写 (轮播图 / 选项卡 / 滑动门)
页面中经常会用到各式各样的轮播图,今天贺贺为大家介绍一种常用的方法,对于JS我们需要举一反三,一种方法可以对多个轮播样式进行渲染. <head> <meta charset=&quo ...
- 用Web Services来整合.NET和J2EE
互用性(Interoperability)问题说起来容易但通常实现起来却比较困难.尽管Web service曾承诺要提供最佳的解决方案来衔接基于.NET和J2EE的应用程序,但其过程却并不简单.我们发 ...
- openvswitch技术总结
OVS技术总结 一.OVS的组成 二.OVS的匹配条件和动作 三.OVS的发展方向 四.OVS的操作实践 OVS与Namespace配合模拟租户之间的数据通信 基本思路: Namespace模拟出不同 ...
- tomcat 取消项目名访问路径
在server.xml 里,<host>...</host>的标签之间添加<Context path="" docBase="projec ...
- IntelliJ IDEA src下新建包, 没有层级结构
新建项目后再src先右键点击新建包 com.example , 然后想在com.example 包中包含其他包, 当点击src新建包后,出现如图的情况 解决: 继续在src上右键新建package ...
- 字符串之StringBuffer 与 StringBuilder的对比
StringBuilder 和 StringBuffer是高度类似的两个类 StringBuilder是StringBuffer的版本改写,下面从几个方面简单的对比下他们的区别 原文地址:[十四]基础 ...
- 【BZOJ3529】数表
数表 Description 有一张 n*m 的数表,其第i行第j列(1<=i<=n,1<=j<=m)的数值为能同时整除 i和j的所有自然数之和.给定a,计算数表中不大于a的数 ...
- ajax 数据类型结构