首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JSP资料辅导(4--1)

JSP资料辅导(4--1)

作者头像
紫风
发布2025-10-14 15:48:03
发布2025-10-14 15:48:03
1060
举报

JSP自定义标签(tag)

什么是自定义标签

1,用户自定义的Java语言元素, 实质是运行一个或者两个接口的JavaBean; 2,可以非常机密地和JSP的表示逻辑联系在一起,又具有和普通JavaBean相同的业务逻辑处理能力; 3,当一个JSP页面转变为servlet时,其间的用户自定义标签转化为操作一个称为标签hander的对象; 4,可操作默认对象,处理表单数据,访问数据库以及其它企业服务;

自定义标签库的特点

1,通过调用页面传递参数实现定制; 2,访问所有对JSP页面可能的对象; 3,修改调用页面生成的响应; 4,自定义标签间可相互通信; 5,在同一个JSP页面中通过标签嵌套,可实现复杂交互。

如何使用自定义标签库

1,声明标签库 2,使标签库执行对Web应用程序可用

声明标签库

1,使用taglib指令声明标签库 2,语法:<%@taglib uri="URI" prefix="pre" %>

注意:a. uri属性可以是绝对的,也可以是相对URL,该URL指向标记库描述符(TLD)文件; b. uri属性也可以是一个并不存在的URL,该URL为web.xml文件中将标记库描述符(TLD)文件的绝对

URL到本地系统的一个映射;

3,范例:<%@taglib uri="/WEB-INF/template.tld" prefix="test" %> <%@taglib uri="http://java.sun.com/jstl/core" prefix="core" %>

使标签库执行可用

方式一:在WEB-INF/classes目录下部署标记处理程序类; 方式二:将标记处理程序类打包成jar文件并置于WEB-INF/lib目录。

几种典型的标签

1,不带属性和主体的简单标签:<mytaglibs:SomeTag/>; 2,不带主体但有属性的标签:<mytaglibs:SomeTag user="TonyDeng"/>; 3,带有主体和属性的标签: <mytaglibs:SomeTag user="TonyDeng"> ...// 标签体 </mytaglibs:SomeTag>;

注意:a. 属性列于start tag中,它是在标记库描述符(TLD)文件中指定,服务于标记库的自定义行为; b. 标签体位于start tag和end tag间,可以是任何合法的JSP内容或者标签;

定义标签

1,开发实现tag的类(tag handler); 2,编辑标记库描述符(TLD)文件; 3,在web.xml中为标记库描述符(TLD)文件的绝对URL建立一个映射(该步骤可选);

标记库描述符(TLD)文件

1,一个描述标记库的XML文件; 2,内容开始是整个库的描述,然后是tag的描述; 3,标记库描述符(TLD)文件用于Web Container确认tag以及JSP页面发展工具;

实现tag的类(标签处理器)(tag handler)

1,是一些在引用了标签的JSP页面执行期间被Web Container调用以求自定义标签值的对象; 2,必须实现Tag, SimpleTag和BodyTag之一; 3,可以继承TagSupport和BodyTagSupport之一。

标签库的接口和类的继承关系接口的继承关系: ☉ interface javax.servlet.jsp.tagext.JspTag ☉ interface javax.servlet.jsp.tagext.SimpleTag ☉ interface javax.servlet.jsp.tagext.Tag ☉ interface javax.servlet.jsp.tagext.IterationTag ☉ interface javax.servlet.jsp.tagext.BodyTag

类的继承关系: ☉ class javax.servlet.jsp.tagext.TagSupport (implements javax.servlet.jsp.tagext.IterationTag, java.io.Serializable) ☉ class javax.servlet.jsp.tagext.BodyTagSupport (implements javax.servlet.jsp.tagext.BodyTag) ☉ class javax.servlet.jsp.tagext.SimpleTagSupport (implements javax.servlet.jsp.tagext.SimpleTag)

(Interface) JspTag | |ˉˉˉˉˉˉˉˉ| (Interface) (Interface)JSP2.0 Tag SimpleTag ←--SimpleTagSupport | | (Interface) IterationTag←--TagSupport 支持迭代的标签 | | | | | (Interface) | BodyTag ←---BodyTagSupport 可以处理标签体

自定义标签的开发步骤

1,写标签处理器,也就是一个符合自定义标签规范的类 xxx.java 2,写标签库定义文件,也就是定义标签的格式规范,也要符合自定义标签的规范 xxx.tld 3,建上述两步中的相应 文件进行部署。web.xml

tld文件中的配置 <tag> <name>loop</name> <tag-class>com.tag.LoopTag</tag-class> <body-content>jsp</body-content> <!--设定自定义标签体内的内容,可以置为empty,也就是只能写空标签--> <attribute> <name>counter</name><!--配置自定义标签的属性名--> <required>true</required><!--配置属性是否必须出现--> <rtexprvalue>true</rtexprvalue><!--允许使用表达式作为属性的值--> <type>int<type><!--配置属性的类型--> </attribute> </tag>

简单的标签处理程序类

1,必须实现Tag接口的doStartTag()和doEndTag()方法; 2,因为不存在Body,doStartTag()方法必须返回SKIP_BODY; 3,如其余页面要执行,doEndTag()方法返回EVAL_PAGE, 否则返回SKIP_PAGE; 4,对于每一个标签属性,你必须在标签处理程序类里定义一个特性以及get和set方法以一致于JavaBeans 体系惯例

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档