- 1、本文档共102页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《java自定义标签》.doc
10 . 自定义标签的开发与应用
作者:李宁
网名:银河使者
Blog:/
Email:techcast@126.com
在JSTL提供了四个标签库(核心标签库、国际化标签库、数据库标签库和XML标签库),涉及到了
几十个标签。虽然这些标签可以完成比较复杂的工作,但它们仍然无法满足程序中的特殊需求。因此,就
需要用户根据自己的需要来定制JSP标签,这种由用户自己实现的JSP标签被称为自定义标签。
10.1 自定义标签基础
自定义标签和JSTL中的标签从技术上看没有任何区别,可以将这些标签统称为JSP标签。JSP标签在
JSP页面中通过XML语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执
行相应的Java代码。也就是说,JSP标签实际上就是调用了某些Java代码,只是在JSP页面中以另外一种
形式(XML语法格式)表现出来。
10.1.1 编写输出随机数的标签
开始自定义标签的学习之前,在这一节先来实现一个简单的自定义标签,以使读者做一下热身,同时
读者通过本节的例子可以对自定义标签的实现方法和过程有一个感性的认识。
【实例10-1】 实现输出随机数的标签
1. 实例说明
在本例实现的自定义标签(random标签)的功能是输出一个指定范围的随机整数。random标签有如
下几个特征:
没有标签体。
有两个属性:min和max。其中min属性表示生成随机数的最小值,max属性表示生成随机数的最大
值。min属性的默认值是0,max属性的默认值是Integer.MAX_VALUE。
生成随机数的范围是min = random max。
random标签的标准调用形式如下:
ct:random min=1 max=1000 /
其中“ct”是调用标签时的前缀,通过taglib指定的prefix属性指定。上面的代码的功能是输出一个在
1(包括)和1000(不包括)之间的随机数。
2. 编写标签类
标签类是自定义标签的核心部分。实现标签类的方法有很多,但最简单的方法是编写一个从
javax.servlet.jsp.tagext.TagSupport类继承的Java类,并在该类中覆盖TagSupport类的doStartTag方法。为
了读取标签中的属性值,还需要在标签类中为每一个标签属性提供一个相应数据类型的标签类属性以及该
属性的setter方法(不需要getter方法)。生成随机数的代码需要放在标签类的doStartTag方法中。该标签
类的实现代码如下:
package chapter10;
import java.io.IOException;
import java.util.Random;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class RandomTag extends TagSupport
{
// 封装random标签的两个属性的JavaBean属性
private int min = 0;
private int max = Integer.MAX_VALUE;
// min属性的setter方法
public void setMin(int min)
{
this.min = min;
}
// max属性的setter方法
public void setMax(int max)
{
this.max = max;
}
// 覆盖TagSupport类的doStartTag方法
// 当遇到标签(也就是ct:random)的开始标记时调用该方法
@Override
public int doStartTag() throws JspException
{
try
{
Random random = new Random();
// 生成一个在min和max之间的随机数
int result = min + random.nextInt(max - min);
// 将生成的随机数输出到客户端
pageContext.getOut().write(String.valueOf(result));
}
catch (IOException e)
{
}
// TagSupport类的doStartTag方法默认返回SKIP_BODY,表示忽略自定义标签体
return super.doStartTag();
}
}
在RandomTag类的doStartTag方法中使用了一个pageContext变量来获得Jsp
您可能关注的文档
- 《GB 8685-维护标签-2016-12-CTTC》.pdf
- 《GB-电力变压器》.pdf
- 《GB1207-86 电压互感器》.pdf
- 《GB1207电压互感器》.pdf
- 《GB1208-87 电流互感器》.pdf
- 《GB12221-89法兰结构长度标准》.pdf
- 《GB16179-1996《安全标志使用导则》》.doc
- 《GB19212解析变压器新旧标准AQ2016004》.pdf
- 《GB2894-82_安全标志》.pdf
- 《GB2894安全标志》.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 22J403-1 楼梯 栏杆 栏板一 (1).docx VIP
- 越野汽车强制锁止式差速器的设计.docx
- 2025年二建《市政公用工程管理与实务》案例300问.pdf VIP
- 华为鸿蒙介绍:于鸿蒙之中万物静默生长,开源生态繁花似锦竞相绽放(29页).pptx
- 优质课一等奖高中语文必修四《永遇乐·京口北固亭怀古》 (2).doc VIP
- 中式面点制作工艺章节测试答案.pdf VIP
- 2024年信息系统项目管理师(综合知识、案例分析、论文)合卷软件资格考试(高级)试题与参考答案.pdf VIP
- 体育概论(第二版)全套教学课件汇总.pptx
- 虚拟数字人全景深度解析.docx
- 《立体车库的PLC设计》.doc
文档评论(0)