JSP-Runoob:JSP 自定义标签
ylbtech-JSP-Runoob:JSP 自定义标签 |
1.返回顶部 |
JSP 自定义标签
自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。
JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。
你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。
创建"Hello"标签
接下来,我们想创建一个自定义标签叫作<ex:Hello>,标签格式为:
<ex:Hello />
要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个HelloTag类,如下所示:
package com.runoob;import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*;public class HelloTag extends SimpleTagSupport {public void doTag() throws JspException, IOException {JspWriter out = getJspContext().getOut();out.println("Hello Custom Tag!");} }
以下代码重写了doTag()方法,方法中使用了getJspContext()方法来获取当前的JspContext对象,并将"Hello Custom Tag!"传递给JspWriter对象。
编译以上类,并将其复制到环境变量CLASSPATH目录中。最后创建如下标签库:<Tomcat安装目录>webapps\ROOT\WEB-INF\custom.tld。
<taglib><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>Example TLD</short-name><tag><name>Hello</name><tag-class>com.runoob.HelloTag</tag-class><body-content>empty</body-content></tag> </taglib>
接下来,我们就可以在JSP文件中使用Hello标签:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html><head><title>A sample custom tag</title></head><body><ex:Hello/></body> </html>
以上程序输出结果为:
Hello Custom Tag!
访问标签体
你可以像标准标签库一样在标签中包含消息内容。如我们要在我们自定义的Hello中包含内容,格式如下:
<ex:Hello>This is message body </ex:Hello>
我们可以修改标签处理类文件,代码如下:
package com.runoob;import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*;public class HelloTag extends SimpleTagSupport {StringWriter sw = new StringWriter();public void doTag()throws JspException, IOException{getJspBody().invoke(sw);getJspContext().getOut().println(sw.toString());}}
接下来我们需要修改TLD文件,如下所示:
<taglib><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>Example TLD with Body</short-name><tag><name>Hello</name><tag-class>com.runoob.HelloTag</tag-class><body-content>scriptless</body-content></tag> </taglib>
现在我们可以在JSP使用修改后的标签,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html><head><title>A sample custom tag</title></head><body><ex:Hello>This is message body</ex:Hello></body> </html>
以上程序输出结果如下所示:
This is message body
自定义标签属性
你可以在自定义标准中设置各种属性,要接收属性,值自定义标签类必须实现setter方法, JavaBean 中的setter方法如下所示:
package com.runoob;import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*;public class HelloTag extends SimpleTagSupport {private String message;public void setMessage(String msg) {this.message = msg;}StringWriter sw = new StringWriter();public void doTag()throws JspException, IOException{if (message != null) {/* 从属性中使用消息 */JspWriter out = getJspContext().getOut();out.println( message );}else {/* 从内容体中使用消息 */getJspBody().invoke(sw);getJspContext().getOut().println(sw.toString());}}}
属性的名称是"message",所以setter方法是的setMessage()。现在让我们在TLD文件中使用的<attribute>元素添加此属性:
<taglib><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>Example TLD with Body</short-name><tag><name>Hello</name><tag-class>com.runoob.HelloTag</tag-class><body-content>scriptless</body-content><attribute><name>message</name></attribute></tag> </taglib>
现在我们就可以在JSP文件中使用message属性了,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <html><head><title>A sample custom tag</title></head><body><ex:Hello message="This is custom tag" /></body> </html>
以上实例数据输出结果为:
This is custom tag
你还可以包含以下属性:
属性 | 描述 |
---|---|
name | 定义属性的名称。每个标签的是属性名称必须是唯一的。 |
required | 指定属性是否是必须的或者可选的,如果设置为false为可选。 |
rtexprvalue | 声明在运行表达式时,标签属性是否有效。 |
type | 定义该属性的Java类类型 。默认指定为 String |
description | 描述信息 |
fragment | 如果声明了该属性,属性值将被视为一个 JspFragment。 |
以下是指定相关的属性实例:
.....<attribute><name>attribute_name</name><required>false</required><type>java.util.Date</type><fragment>false</fragment></attribute> .....
如果你使用了两个属性,修改TLD文件,如下所示:
.....<attribute><name>attribute_name1</name><required>false</required><type>java.util.Boolean</type><fragment>false</fragment></attribute><attribute><name>attribute_name2</name><required>true</required><type>java.util.Date</type></attribute> .....
2.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
转载于:https://www.cnblogs.com/storebook/p/9597591.html
JSP-Runoob:JSP 自定义标签相关推荐
- 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会
转载自 深入体验JavaWeb开发内幕--简述JSP中的自定义标签叫你快速学会 自定义标签,顾名思义,就是自己定义的标签.那么我们为什么要自己定义一些标签呢? 我们知道,如果要在JSP中获取数据我 ...
- 自定义标签的使用jsp实例_JSP自定义标签示例教程
自定义标签的使用jsp实例 Today we will look into JSP custom tags. Earlier we learned about JSP Action Elements, ...
- jsp自定自定义标签
2019独角兽企业重金招聘Python工程师标准>>> 1 先要导入一个jar包 2 自定一个标签库 ,该库放在WEB-INF/tld下面 3 需要实现 该类 extends Tag ...
- JSP GridView --使用自定义标签实现ASP.NET的控件
JSP用自定义标签实现ASP.net的gridview.datasource组件 第一部分:使用说明 使用过ASP.NET的人都知道,gridview控件功能很强大,使用很方便,提高了开发效率.而且表 ...
- JSP笔记——7.自定义标签
jsp标签具有与html标签一样的格式,可以用来代替jsp中的Java脚本,使代码简介.使用自定义标签之前需要建立一个*.tld文件,每个文件对应一个标签库,里面可以包含很多的自定义标签. 每一个标签 ...
- JSP页面tdl自定义标签的做法
思路: 首先tdl自定义标签就是比如类似input.div.ul.li之类的标签,只是名字自己来定义,但实际上要在页面上看到效果还是需要些html代码,只是在页面上只需要写自己标签就可以代表一部分ht ...
- java ee jsp_EE JSP:使用自定义标签库生成动态内容
java ee jsp 在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元 ...
- EE JSP:使用自定义标签库生成动态内容
在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元素,您可以将其插入JSP ...
- javaweb学习总结(二十三)——jsp自定义标签开发入门
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- JSP自定义标签_控制标签体是否执行
自定义标签,在类中控制该自定义标签是否显示: import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; i ...
最新文章
- IoT勒索软件会演化为劫持软件
- Java实现最电话号码的简单加密源码
- 用 JavaScript 操作字符串
- 【POJ - 1087】A Plug for UNIX(建图,网络流最大流)
- md5加密+盐方式一
- 医疗人工智能市场有多大?
- 设计师必备导航类网站,内有宝藏!
- 腾讯自动驾驶新动作!与现代合作开发无人车系统
- python3爬虫 - 利用浏览器cookie登录
- Varnish加速网站图片显示
- python与mongodb更新_Python对MongoDB增删改查
- 大学 计算机 试题,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
- 虚拟服务器搭建棋牌,棋牌开源游戏服务器框架
- php段子老板,程序员段子 那些关于程序员的段子
- 编程大实践 数独破解 #Cilay #嵩天
- 【SSM框架 一】Mybatis
- faxicon.ico制作(笔记)
- NRF24L01多发单收配置
- Springboot359的医院病历管理系统
- 访问修饰符有哪些?及作用范围
热门文章
- 游戏开发之C++对C的扩展(C++基础)
- RS特性总结(思维导图)
- HDOJ--1106排序
- PHP 7.0 5.6 下安裝 phpLDAPadmin 发生错误的修正方法
- Netty 核心组件 Pipeline 源码分析(二)一个请求的 pipeline 之旅
- 第三篇:C++ 中的几种初始化
- 一分钟了解阿里云产品:弹性伸缩五大热点技术问题分析
- WinAPI: midiOutSetVolume - 设置 MIDI 输出设备的音量
- NO.128 开发团队篇:参加项目计划会议,分解任务,领取任务,每天更新任务。...
- CSocket实现端口扫描