`

实现一个简单的自定义标签(复习一下自定义标签的步骤)

阅读更多

1. jakarta-taglibs-standard-1.1.2\tld 中复制 c.tld 到当前 web 应用的 WEB-INF 目录下

2. 删除 c.tld 文件的内容, 仅保留如下部分

<?xml version="1.0" encoding="UTF-8" ?>

		<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
			version="2.0">
		
			<description>JSTL 1.1 core library</description>
			<display-name>JSTL core</display-name>
			<tlib-version>1.1</tlib-version>
			<short-name>c</short-name>
			<uri>http://java.sun.com/jsp/jstl/core</uri>

		</taglib>


3. 修改 c.tld 文件名

4. tld 文件: tag library descriptor(标签库描述文件)

> 每个 tld 文件都需要配置的属性

<!-- 1. 对标签库的描述 -->
<description>My Tag 1.0 core library</description>
<!-- 2. 标签库显示的名字, 没有什么实际的作用 -->
<display-name>My Tag core</display-name>
<!-- 3. 标签库的版本号 -->
<tlib-version>1.0</tlib-version>
<!-- 4. 在 JSP 页面建议使用的前缀 -->
<short-name>itcast</short-name>
<!-- 5. ** 唯一标示该 tld 的 uri, 用来在 JSP 页面引用 tld 文件(标签库)时使用 -->
<uri>http://itcast.cn/jsp/mytag/core</uri>

> 具体描述一个标签

<!-- 描述一个具体的标签 -->
<tag>
<!-- 标签的名字, 用来在 JSP 页面上使用, 也用来标示该标签, 在当前 tld 文件中唯一 -->
<name>helloworld</name>
<!-- 指向对应的标签处理器类 -->
<tag-class>cn.itcast.javaee.tag.HelloSimpleTag</tag-class>
<!-- 标示标签体的类型 -->
<body-content>empty</body-content>
</tag>

5.在 JSP 页面使用自定义的标签

①. 引入对应的标签库: 通过 taglib 指令: <%@ taglib prefix="" uri="" %> prefix: 标签的前缀, uri: tld 文件中的 uri 标签的值

6.使用

7.在Java类中写一个 HelloSimpleTag 类,这个可以继承SimpleTagSupport ,或者实现SimpleTag 接口


注意:
无论是一个怎样简单的标签, 都至少会调用 SimpleTag 接口的两个方法:

> setJspContext(): Jsp 引擎将代表 JSP 页面的 pageContext 对象传递给标签处理器对象

* PageContext: 代表 JSP 页面

** 可以从中获取 JSP 页面的 9 个隐含对象

** findAttribute(name): 按 page, request, session application 域对象的范围获取指定的属性值

** getAttribute(String name, int scope): 从指定的范围中获取指定的属性值. 例如: Object obj = pageContext.getAttribute("request", PageContext.REQUEST_SCOPE);

** Enumeration<String> getAttributeNamesInScope(int scope): 获取指定域对象中所有属性名组成的 Enumeration 对象

> doTag(): 标签处理器对象的逻辑代码主要编写在该方法中.



下面附加,小弟自己模拟一些JSTL标签,所写的自定义标签
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics