Jsp标签库是一种非常优秀的表现层组件技术。主要为了代替丑陋的jsp脚本,在Html界面中使用JSp有如下几个坏处:
1)、难以阅读
2)、JSp脚本和html代码混杂,维护成本高
3)、Html页面嵌入JSp脚本,导致美工人员难以开发。
JSp2版本中开发标签库需如下步骤:
1)、开发自定义标签处理类
2)、建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可以包含多个标签。
3)、在JSp文件中使用自定义标签。
一、开发自定义标签类
自定义标签类应该继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,标签类还有如下要求:
1)如标签类包含属性,则每个属性都应对应相应的getter和setter方法。
2)重写toTag()方法,这个方法负责生成页面内容。
public class QueryTag extends SimpleTagSupport{
private String driver;
private String url;
//此处省略各成员的setter和getter方法
public void doTag() throws JspException{
//获取页面输出流
Writer out = getJspContext().getOut();
out.write("<table>");
out.write("<td>");
out.write(driver);
out.write("</td>");
out.write("<td>");
out.write( url);
out.write("</td>");
}
}
一、建立TLD文件
可以在web容器tomcat中,webapps/examples/web-inf/jsp2下jsp2-example.taglib.tld文件,作为tld的范例。将该文件复制到web项目的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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<!--此属性非常重要,指定标签库的URL,JSP页面中根据URI属性定位要使用的标签库-->
<uri>http://www.crazyit.org/mytaglib</uri>
<tag>
<! -- 定义标签名,JSP页面根据此标签名来指明使用的标签 -->
<name>helloWorld</name>
<!-- 标签处理类 -->
<tag-class>com.le.QueryTag</tag-class>
<!-- 标签体 -->
<body-content>empty</body-content>
<!-- 配置属性标签 -->
<attribute>
<name>driver</name>
<!-- 是否为必输属性 -->
<required>true</required>
<!-- 是否支持jsp脚本 -->
<fragment>true</fragment>
</attribute>
<!-- 配置属性标签 -->
<attribute>
<name>url</name>
<!-- 是否为必输属性 -->
<required>true</required>
<!-- 是否支持jsp脚本 -->
<fragment>true</fragment>
</attribute>
三、在页面中使用自定义标签
queryTap.jsp
<%@ taglib uri="http://www.crazyit.org/mytaglib“ prefix="mytag" %>
<mytag:query
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javaee"
/>
在界面中访问localhose:8888/tagDemo/queryTap.jsp页面显示driver和url的值。