标签处理器 JSP 1.2中传统的标签处理API由于允许标签体中包含scriptlet而变得复杂,但是现在利用表达式语言可以编写不含scriptlet的JSP网页。最终,JSP 2.0引入了一种新的标签扩展机制,称为“简单标签扩展”,这种机制有两种使用方式: Java开发人员可以定义实现接口javax.servlet.jsp.tagext.SimpleTag的类; 不懂Java的网页编写人员则可以使用标签文件。 首先来看第一种方式,代码示例6给出了一个简单的标签处理器,它的作用仅仅是打印“This is my first tag! ”。 代码示例6: HelloTag.java package jsp2.examples.simpletag; import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; /** * SimpleTag handler that prints "This is my first tag!" */ public class HelloTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().write("This is my first tag!"); }} 编译成功后,下一步就要在TLD中定义一个标签描述符,下面是标签描述符的例子。 代码示例7: 标签描述符 Prints this is my first tag hello jsp2.examples.simpletag.HelloTag empty 最后再编写一个使用上述标签的JSP页面文件,见代码示例8。 代码示例8: helloworld.jsp <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>Simple Tag Handler
Simple Tag HandlerMy first tag prints: 要运行这个例子: 复制HelloTg.java并保存到C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\simpletag下; 使用javac编译HelloTag.java; 把代码示例7中的标签描述符添加到文件C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld中的之前; 复制helloworld.jsp并保存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial目录中; 用浏览器打开helloworld.jsp。 如果一切正常,应该会看到类似如图4所示的画面。
图4:简单标签处理器 标签文件 使用简单标签扩展机制的另一种方法是通过标签文件。标签文件是一种资源文件,网页作者可以利用它抽取一段JSP代码,通过定制功能来实现代码的复用。换句话说,标签文件允许JSP网页作者使用JSP语法创建可复用的标签库。标签文件的扩展名必须是“.tag”。 为说明使用标签文件是多么容易,考虑一下代码示例9。没错,这就是一个标签文件! 代码示例9: greetings.tag Hello there. How are you doing? 一旦定义了标签文件,就可以在JSP网页的编写中使用这种定制的功能。比如代码示例10中的JSP网页。 代码示例10: chat.jsp <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> JSP 2.0 Examples - Hello World Using a Tag FileTag File ExampleThe output of my first tag file is: 要运行这个例子: 复制标签文件greetings.tags并保存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tags 目录下; 复制JSP网页文件char.jsp并保存在c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial 目录下; 用浏览器打开chat.jsp文件。 如果一切正常,应该会看到类似如图5所示的窗口。
图5:简单的标签文件
注意: 重要的是要注意到这里没有为问候标签编写TLD,而是创建了一个标签文件并放在特殊的目录中,然后用taglib指令导入并直接使用它。
另一个标签文件的例子 标签文件可以作为模板使用。考虑代码示例11中的标签文件display.tag,这个例子是根据Tomcat 5.0中的面板的例子改写的。指令attribute类似于TLD中的元素,允许声明自定义的动作属性。 代码示例11: display.tag <%@ attribute name="color" %><%@ attribute name="bgcolor" %><%@ attribute name="title" %> 代码示例12给出了使用上述标签的一个简单的JSP页面。 代码示例12: newsportal.jsp <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>Another Tag File ExampleNews Portal: Another Tag File Example Last French Concorde Arrives in NY Another Travel Headline Yet Another Travel Headline | Java for in-flight entertainment Another Technology Headline Another Technology Headline | American Football NBA Soccer | 要运行这个例子: 复制文件display.tag并保存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tag 下; 复制文件newsportal.jsp并保存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial下; 用浏览器打开newsportal文件。 结果应该会得到与图6类似的画面。
图6:把标签文件用作模板 结论 JSP 2.0使得快速开发和维护动态网页比以前更加容易,尽管“Java”一词出现在JSP中,但使用JSP2.0,网页作者无须学习Java程序语言本身,就能开发出全新的动态网页。本文中的例子说明了使用JSP2.0的新特性开发动态网页是多么容易。
|