一、基本概念
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
1package com.dongjj.tag;
2
2
3
3import javax.servlet.jsp.JspException;
4
4import javax.servlet.jsp.PageContext;
5
5import javax.servlet.jsp.tagext.Tag;
6
6
7
7public 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}
1package com.dongjj.tag;2
23
3import javax.servlet.jsp.JspException;4
4import javax.servlet.jsp.PageContext;5
5import javax.servlet.jsp.tagext.Tag;6
67
7public class TimeTag implements Tag {8
8 protected PageContext pageContext;9
9 private Tag parent;10
1011
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
2021
21 // ----标签结束时调用此方法-------22
22 public int doEndTag() throws JspException {23
23 return EVAL_PAGE;24
24 }25
2526
26 // 实现27
27 public void release() {28
28 }29
2930
30 // 实现31
31 public void setPageContext(PageContext pageContext) {32
32 this.pageContext = pageContext;33
33 }34
3435
35 // 实现36
36 public Tag getParent() {37
37 return parent;38
38 }39
3940
40 // 实现41
41 public void setParent(Tag parent) {42
42 this.parent = parent;43
43 }44
4445
45}1.2 编写tld文件 放在WEB-INF目录下
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文件的位置
<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文件的位置
1.4 写jsp
1
<%@taglib uri="http://www.cnblogs.com/xd502djj/tags" prefix="mt"%>
2
3
<h1 align="center"><mt:time/></h1>
<%@taglib uri="http://www.cnblogs.com/xd502djj/tags" prefix="mt"%>2

3
<h1 align="center"><mt:time/></h1>
调用 在页面上显示如下
Now:Tue Mar 24 16:33:50 CST 2009
本文来自博客园,作者:茄子_2008,转载请注明原文链接:https://www.cnblogs.com/xd502djj/archive/2009/03/24/1420488.html
7

浙公网安备 33010602011771号