JSP 标签的使用
从 JSP1.1 版开始在 JSP 页面中就可以使用定制标签了,它允许用户在 JSP 文件中使用 自定义的标签, 这样可以使 JSP 代码更简洁。 由于使用自定义标签可能造成程序员对标签的 重复定义, 因此从 JSP2.0 开始, 标准标签库(JavaServer Pages Standard Tag Library,JSTL)作为 标准的支持,它可以使 JSP 和 Web 应用程序的开发进一步简化。 本节首先介绍自定义标签的开发,然后介绍 JSTL 的使用。 一、 自定义标签的开发 JSP 标签的使用思想与 HTML 类似。使用定制标签,使开发人员能够把复杂的功能封 装在
HTML 风格的标签中。在简单的标签后面,
Java 代码处理格式化任务,访问外部资源, 并进行其他各种处理行为。 创建和使用定制标签一般包含下面四个步骤: (1) 创建标签处理类(tag handler); (2) 创建标签库描述文件; (3) 在部署描述符中说明标签的描述; (在 web.xml 2.4 之前是正确,2.4 之后已经废除) (4) 在 JSP 文件中引入标签库和使用标签。 1. 创建标签处理类 下面通过一个简单的例子说明完整过程。程序 HelloTag.java 是一个标签处理类。标签 所要完成的功能在标签处理类中实现。该标签实现的功能是输出蓝色的”Hello,World!”消息。 标签处理类一般要实现某个标签接口或继承某个标签的实现类。 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class HelloTag implements Tag { private PageContext pageContext; private Tag parentTag; public void setPageContext(PageContext pageContext){ this.pageContext = pageContext; } public void setParent(Tag parentTag){ this.parentTag = parentTag; } public Tag getParent(){ return this.parentTag; } public int doStartTag() throws JspException{ try{ JspWriter out = pageContext.getOut(); out.print(“
Hello,World!”); }catch(Exception e){ throw new JspException(“Error in HelloTag.doStartTag()”);
} return SKIP_BODY; } public int doEndTag() throws JspException{ return EVAL_PAGE; } public void release(){ } } 注意:要正确编译该文件,必须将 install-dir/commom/lib/jsp-api.jar 加到 CLASSPATH 路径中。另外该类文件要存放在 Web 应用
程序的/WEB-INF/classes 目录下。 2. 创建标签库描述文件 标签库描述文件(Tag Library Descriptor,简称 TLD),采用 XML 文件格式,定义了用户 的标签库。 在标签库描述文件中主要是定义可以使用哪些标签以及与这些标签的处理类的对应关 系等。 下面的标签库文件 mytaglib.tld 存放在/WEB-INF 目录下。
j2ee/web-jsptaglibrary_2_0.xsd" version="2.0" j2ee? xmlns:xsi="w3.org/2001/XMLSchema-instance" ns xml> A simple tag handle
r 1.0 1.2JSP-VERSION> mytaglib /mytaglib hello HelloTag empty print hello 每个 TLD 文件的开始都包括声明部分:XML 版本的声明、TLD 规范的版本。这些信 息需要放在文件的开始处,供 TLD
文档处理器检验 XML 的合法性。 文件的第 1 行声明 TLD 文件使用 XML 1.0 版,第 2 行声明 TLD 文件遵循 Sun 公司的 TLD 规范 1.2 版。 标签库由
元素定义,元素首先声明标签库为 1.0 版,JSP 的版本为 1.2。 接下来是每个标签的声明,它以元素开始。一个标签库可以定义多个标签,每个标签 的定义至少要包含下面的内容:标签名、标签的处理类和标签体类型。它们分别由、 和元素定义。
3. 在部署描述符中声明标签 在 Web 应用程序中要使用标签,需要在 web.xml 文件中加入元素,它用于声明 所引用的标签所在的标签库。 < taglib-uri>/mytaglib < taglib-location>/WEB-INF/mytaglib.tld < /taglib > 元素用来声明在 JSP 的 taglib 指令中