[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.*; ...
随机推荐
- 前端打包文件在 nginx 上 403 的解决办法
遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如 webpack 等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如 nginx 等. 这次遇 ...
- 从零开始学习html(八)CSS选择器——下
六.子选择器 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...
- loadrunner 脚本开发-文件读写操作
脚本开发-文件读写操作 by:授客 QQ:1033553122 函数说明 函数原型: size_t fwrite( const void *buffer, size_t size, size_t co ...
- 12、多线程:Threading、守护线程
线程与进程: 线程对于进程来说,就好似工厂里的工人,分配资源是分配到工厂,工人再去处理. 线程是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属 ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- matplotlib多plot可视化
代码: # -*- coding: utf-8 -*- """ Created on Thu Jul 12 16:37:47 2018 @author: zhen &qu ...
- sql server自定义函数学习笔记
sql server中函数分别有:表值函数.标量函数.聚合函数.系统函数.这些函数中除系统函数外其他函数都需要用户进行自定义. 一.表值函数 简单表值函数 创建 create function fu_ ...
- 【第五篇】SAP ABAP7.5x新语法之命名规约
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之命名规约 命名 ...
- win7计划任务报该任务映像己损坏或己篡改
目录 win7计划任务报该任务映像己损坏或己篡改 前言 解决方案 排查损坏的计划任务映像 win7计划任务报该任务映像己损坏或己篡改 文:铁乐与猫 2018-9-20 前言 win7下想自定义一些计划 ...
- pip更新及Requirement already up-to-date解决方法
pip更新及Requirement already up-to-date解决方法 文:铁乐与猫 2018-9-11 更新命令 将pip更新到最新版本 python -m pip install --u ...