JavaEE自定义标签(DOC)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用
1、标签
以类似于html标签的方式实现的java代码的封装。
第一:形成了开发标签的技术标准---自定义标签的技术标准。
第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl,以及表达式语言E L。
2、自定义标签
(1)理解:
可以允许用户自己根据自己的需要,去开发自己的标签的技术规范。
通俗:在Jsp页面上,以简单的标签封装java代码的操作。
//在自定义标签类中,先调用setPageContext()实例化内置对象:
//然后是doStartTag()方法,核心代码放在这个方法里面:
//定义变量,变量的Get、Set方法: private String UserName = "";
//tld配置文件放置在WEB-INF目录下,主要的标记如下,主要的配置如下:
//前面tlib-version版本号、Jsp-version JSP的版本号、short-name 命名空间、是必须有的
//uri,注意是uri而不是url,url是访问的路径。
//而uri为访问时候的别名,写在JSP页面上的标签的别名。
//name为此标签类的别名,tag-class 为标签类的存放的物理路径
//body-content 为是否有标签体,如果是/子关闭标签设置为EMPTY
//如果涉及到标签属性,可以设置attribute,其中name为属性的名称,而不是别名,required 属性是否必须设置,rtexprvalue 是否程序运行时候为属性赋值。
//如果在tld文件中不设置uri,则在web-xml中必须对talib-uri进行设置。
//在JSP页面中,用taglib指令导入自定义标签。
//JSP页面上的使用,前面my为tld文件中为标签类定义的命名空间、hello为tld文件中指定标签类的别名:
(2)技术组成
A:标签处理类:实现所有信息显示功能的Java类
B:标签配置文件(标签描述文件、库文件):是一个遵守xml规范的tld文件(扩展名为TLD)
C:配置web.xml:告诉web应用,需要引用其他的标签信息
D:jsp页面上,调用标签
3、标签的特点
(1)分类
A:成对出现的标签
B:自关闭的标签
(2)特点
A:标签必须正确的关闭
B:标签不能出现重名
C:标签可以有标签体也可以没有
D:标签可以有属性,但是一个标签不能出现同名属性最简单的标签:没有标签体也没有属性的标签
4、自定义标签的开发流程(上面的插图)
A:明确要实现的功能:要在页面显示具体什么内容B:开发标签处理类
C:创建以及配置标签描述文件:TLD文件
D:配置web.xml
E:jsp页面调用标签
5、开发标签处理类
(1)父类
一个接口两个类
接口:Tag接口javax.servlet.jsp.tagext.Tag
类:
自关闭:TagSupport
成对出现:BodyTagSupport
(2)开发标签类
集成自指定的类,重写setPageContext(),doStartTag(),doEndTag()。重点:标签开始操作doStartTag()方法★
6、创建标签配置文件(TLD文件)
(1)作用
是用来统一管理多个标签处理类的xml文件。
(2)创建
具有自己的格式和规范的(和XML文件一样)
推荐在WEN-INF目录下,创建自己的tld文件。
(3)文件格式
A:根元素:taglib
B:taglib的四个起始子元素
命名空间:用来区分当前标签是属于哪个标签库的名称简写。
说明:uri子元素是可有可无的,但是会对后期的调用产生影响。
C:tag子元素
每个标签处理类都必须在tld文件中进行配置。每个标签类都对应一个tag元素,描述自己的配置信息。
body-content:值默认的是jsp。如果是自关闭标签,需要制定成empty。
如果标签有属性,还有attribute子元素。
7、配置web.xml
(1)作用
在web.xml中进行标签配置文件的设置,告诉web应用程序,需要调用的自定义标签在哪里。
(2)前提
在标签配置文件中,如果没有进行
区分,那个是在JSP页面中调用标签时候命名空间后面写入。
(3)配置(如上图在WEB.XML中的配置)
所有的标签配置文件的配置,都必须在
8、jsp调用标签
(1)引入标签库
利用taglib指令实现引入
<%@ taglib uri="标签库的别名" prefix="标签库的前缀(命名空间)"%>