[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.*; ...
随机推荐
- 【代码笔记】Web-JavaScript-JavaScript语法
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- ES6中Object.is方法比较两个值是否相等
Object.is: let obj={a:1,b:2}; Object.is(obj,obj);//true Object.is(obj,{obj});//false Object.is({},{} ...
- selenium win7+selenium2.0+python环境搭建
win7+selenium2.0+python环境搭建 by:授客 QQ:1033553122 步骤1:下载python 担心最新版的支持不太好,这里我下载的是python 2.7(selenium之 ...
- recovery 升级界面顶部花屏问题分析
说明: 实际解决问题的过程有点曲折,后面找到原因,分析清楚问题后,总结下正确的分析方法,大致分析流程如下. 问题描述: 在进入recovery的时候,第一次上电进入recovery时,顶部会有一长条花 ...
- python的subprocess模块执行shell命令
subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...
- ORACLE11g下如何利用SQL DEVELOPER连接上数据库
最近在学习数据库的相关内容,在sqlplus敲了几天命令行窗口后,想尝试一下用sql developer 连接上数据库但一直没有实现.在网上查询了相关资料后现在终于弄好了,就来写下此篇博文与大家分享! ...
- 10-openldap同步原理
openldap同步原理 阅读视图 openldap同步原理 syncrepl.slurpd同步机制优缺点 OpenLDAP同步条件 OpenLDAP同步参数 1. openldap同步原理 Open ...
- sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)
我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU).内存(Memory).磁盘(Disk)以及操作系统的,这时我们就需要查询他们的一些设置和内容,下面讲 ...
- 【爬坑】DataNode 无法正常启动解决方案
0. 说明 DataNode 无法正常启动的原因 & 解决方案 1. 原因一 在 start-all.sh 之后 DataNode 无法正常启动,单独启动也启动不了 可能的原因 多次格式化,导 ...
- PL/SQL 删除主键 ORA-02443: 无法删除约束条件-不存在的约束条件
在PL/SQL developer中删除一个表的主键,然后把另外一个字段设置成主键,删除的过程中报错:ORA-02443 我遇到这个问题出现的背景是: alter table saleqtya dro ...