一、基本概念
1、标签(Tag)
标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的。
2、标签库(Tag library)
由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。
3、标签库描述文件(Tag Library Descriptor)
标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的。
4、标签处理类(Tag Handle Class)
标签处理类是一个Java类,这个类继承了TagSupport或者扩展了SimpleTag接
口,通过这个类可以实现自定义JSP标签的具体功能。
二 标签开发
1.简单的标签开发
1.1 写处理类
1
1
package
com.dongjj.tag;
2
2
3
3
import
javax.servlet.jsp.JspException;
4
4
import
javax.servlet.jsp.PageContext;
5
5
import
javax.servlet.jsp.tagext.Tag;
6
6
7
7
public
class
TimeTag
implements
Tag
{
8
8 protected PageContext pageContext;
9
9 private Tag parent;
10
10
11
11 // ----标签开始时调用此方法-------
12
12 public int doStartTag() throws JspException
{
13
13 try
{
14
14 pageContext.getOut().println("Now:" + new java.util.Date());
15
15 } catch (Exception e)
{
16
16 throw new JspException(e.getMessage());
17
17 }
18
18 return SKIP_BODY;
19
19 }
20
20
21
21 // ----标签结束时调用此方法-------
22
22 public int doEndTag() throws JspException
{
23
23 return EVAL_PAGE;
24
24 }
25
25
26
26 // 实现
27
27 public void release()
{
28
28 }
29
29
30
30 // 实现
31
31 public void setPageContext(PageContext pageContext)
{
32
32 this.pageContext = pageContext;
33
33 }
34
34
35
35 // 实现
36
36 public Tag getParent()
{
37
37 return parent;
38
38 }
39
39
40
40 // 实现
41
41 public void setParent(Tag parent)
{
42
42 this.parent = parent;
43
43 }
44
44
45
45}

2

3

4

5

6

7



8

9

10

11

12



13



14

15



16

17

18

19

20

21

22



23

24

25

26

27



28

29

30

31



32

33

34

35

36



37

38

39

40

41



42

43

44

45

1.2 编写tld文件 放在WEB-INF目录下


<?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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 标签库版本-->
<tlib-version>1.1</tlib-version>
<!-- 标签库名称-->
<short-name>fn</short-name>
<!-- 标签库URI-->
<uri>http://www.cnblogs.com/xd502djj/tags</uri>
<tag>
<!-- 标签名称-->
<name>time</name>
<!-- 标签对应的处理类-->
<tag-class>com.allanlxf.tag.TimeTag</tag-class>
<!-- 标签体内容,没有标签体则设为empty-->
<body-content>empty</body-content>
</tag>
</taglib>
1.3 在在Web应用的web.xml文件中声明标签库引用 web.xml version="2.4"的不用引入也可,能在路径下搜索
1
<
taglib
>
2
<
taglib-uri
>
http://www.cnblogs.com/xd502djj/tags
</
taglib-uri
>
3
<
taglib-location
>
/WEB-INF/mytags.tld
</
taglib-location
>
4
</
taglib
>
5
<
taglib-uri
>
对应tld文件中的
<
uri
>
,
<
taglib-location
>
指出tld文件的位置

2

3

4

5

1.4 写jsp
1
<%
@taglib uri="http://www.cnblogs.com/xd502djj/tags" prefix="mt"
%>
2
3
<
h1
align
="center"
><
mt:time
/></
h1
>



2

3

调用 在页面上显示如下
Now:Tue Mar 24 16:33:50 CST 2009