一,什么是自定义标签?
在JSP规范的1.1版中增加了自定义标签库规范,自定义标签是一种非常优秀的表现层组件技术。通过使用自定义标签库,可以在简单的标签中封装复杂的功能。
二,为什么要使用自定义标签?
主要是为了取代丑陋的JSP脚本,在HTML页面中插入JSP脚本有如下几个坏处:
1.JSP脚本非常丑陋,难以阅读
2.JSP脚本和HTML代码混杂,维护成本高
3.HTML页面中嵌入JSP脚本,导致美工人员难以参与开发。
三,JSP2开发标签库的步骤?
四,JSP2开发标签库的具体步骤如下:
1.开发自定义标签类
在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以通过简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。
自定义标签库类应该继承哪个父类及哪两点要求?
继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport
要求如下:(1)如果标签类包含属性,每个属性都有对应的getter和setter方法
(2)重写doTag()方法,这个方法负责生成页面内容
2.建立TLD文件
TLD是Tag Library Definition的缩写,即标签库定义,文件后缀是tld,每个TLD文件对应一个标签库,一个标签库中可包含多个标签。TLD文件也称为标签库定义文件。
关于标签库文件的详细描述:标签库自定义文件的根元素是taglib,它可以包含多个tag多个子元素,每个tag子元素都定义一个标签。通常可以到Web容器下复制一个标签库定义文件,并在此基础上进行修改即可。
具体路径如图:
上面的标签库定义文件也是一个标准的XML文件,该XML文件的根元素是taglib元素,因此每次编写标签库定义文件时都直接添加该元素即可。
taglib的三个子元素?
(1)tlib-version:指定该标签库实现的版本,这是一个作为标识的内部版本号,对程序没有太大的作用
(2)short-name:该标签库的默认短名,该名称通常也没有太大的用处
(3)uri:这个属性非常重要,它指定该标签库的URI,相当于指定该标签库的唯一标识。
除此之外,tglib元素下可以包含多个tag元素,每个tag元素定义一个标签,tag元素下允许出现重用的子元素:
(1)name:该标签的名称,这个子元素很重要,JSP页面中就是根据该名称来使用此标签的
(2)tag-class:指定标签的处理类,毋庸置疑,这个子元素非常重要,它指定了标签由哪个标签处理类来处理
(3)body-content:这个子元素也很重要,它指定标签体内容。该子元素的值可以是如下几个:
tagdependent:指定标签处理类自己负责处理标签体。
empty:指定该标签只能作为空标签使用
scriptless:指定该标签的标签体可以是静态HTML元素,表达式语言,但不允许出现JSP脚本
JSP:指定该标签的标签体可以使用JSP脚本。
(4)dynamic-attributes:指定该标签库是否支持动态属性,只有当定义动态属性标签时才需要该子元素。
注:因为JSP2规范不再推荐使用JSP脚本,所以JSP2自定义标签的标签体中不能包含JSP脚本,所以,实际上body-content元素的值不可以是JSP
定义了上面的标签库定义文件后,将标签库文件放在Web应用的WEB-INF应用路劲或任意子路径下,Java Web规范会自动加载该文件,则该文件定义的标签库也将生效。
3.使用标签库
在jsp页面中确定指定的标签需要两点?
(1)标签库URI:确定使用哪个标签库
(2)标签名:确定使用哪个标签
使用标签库分为以下两个步骤:
(1)导入标签库:使用taglib编译指令导入标签库,就是将标签库和指定前缀关联起来
(2)使用标签:在JSP页面中使用自定义标签
上面的HelloWorldTag标签没有任何属性,所以使用该标签只需要
即可。
JSP 2的自定义标签(1)
最新推荐文章于 2023-06-25 23:32:20 发布