自定义标签(Custom Tag)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、概述
JSP中有一块重要的技术:自定义标签(Custom Tag),最近这几天在学习Struts的时候发现Struts中使用了很多自定义标签,如html、bean等。所以我就做了个简单的试验,学习一下这种技术。
首先介绍一下这种技术吧!
1.优点:
取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。
2.开发流程:
(1)编写JSP,在JSP中使用自定义标签。
(2)在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。
(3) .tld文件中指定标签使用的类。
3. 自定义标签的分类:
(1)简单标签:如< mytag:helloworld/>
(2)带属性标签:如
(3)带标签体的标签:
在自定义标签的起始和结束标签之间的部分为标签体(Body)。Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。
(4)可以被Script使用的标签:
定义了id和type属性的标签可以被标签后面的Scriptlet使用。
<%oraDB.getConnection(); %>
4.接口及其他
实际上,自定义标签的处理类实现了Tag Handler对象。JSP技术在javax.servlet.jsp.tagext中提供了多个Tag Handler 接口,JSP1.2中定义了Tag、BodyTag、IterationTag接口,在JSP2.0中新增了SimpleTag接口。JSP还提供了上述接口的实现类TagSupport、BodyTagSupport和SimpleTagSupport(SimpleTagSupport只在JSP2.0中才有)。BodyTagSupport实现了BodyTag、Tag和IterationTag接口。
接口及其方法
下表引自Sun的JSP在线教程。
下表中的EVAL是evaluate的缩写,意思是:评价, 估计, 求...的值,在下列的返回值中的意思是执行。
具体用法可以查看其他参考资料。
Sun的Java教程相关部分:/webservices/docs/1.0/tutorial/doc/JSPTags.html
二、实验
1.试验介绍
下面的实验就是基于上述开发流程开发的。
(1)在JSP中指定taglib的uri:<%@ taglib uri="/helloworld" prefix="mytag" %>。
(2)在web.xml中配置tag-location:
(3)在tag-location中指定的.tld文件中定义实现标签的处理类:
(4)执行处理类mytag.HelloWorldTag的doStartTag和doEndTag方法,然后将结果输入到JSP中,和JSP中的内容一起输出。实际上自定义标签和JSP中的其他的内容被WebServer一起编译成servlet。
2. 完成后的试验的目录结构
应用myjsp放在Tomcat的webapps下。
myjsp中包含J2EE标准目录结构:WEB-INF和hello.jsp。WEB-INF中包含子目录classes和lib及web.xml,tld文件可以放在WEB-INF下,也可以放在WEB-INF的子目录下。
3.开始实验
3.1.编写JSP
< !—hello.jsp的源码-- >
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/helloworld" prefix="mytag" %>
下面显示的是自定义标签中的内容
3.2.编写web.xml
< !—web.xml的源码-- >
"/dtd/web-app_2_3.dtd">
3.3 编写tld文件
< !—helloworld.tld的源码-- >