自定义JSP标签示例
我们以一个例子来讲解如何自定义JSP标签,假如我们需要在页面中输出当前的时间,按照最简单的JSP脚本,需要在JSP里面写很多Java代码,那么如何来使用自定义标签实现这个功能呢?
首先,我们要先创建一个类,继承TagSupport类:
1 import java.io.IOException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 import javax.servlet.jsp.JspException; 5 import javax.servlet.jsp.tagext.TagSupport; 6 7 public class LoginDateTag extends TagSupport { 8 9 @Override 10 public int doStartTag() throws JspException { 11 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 12 String date = sdf.format(new Date()); 13 try { 14 pageContext.getOut().print(date); 15 } catch (IOException e) { 16 e.printStackTrace(); 17 } 18 return super.doStartTag(); 19 } 20 21 }
第二步,设置.tld文件,tld文件的模板可以在tomcat中找到,C:\Program Files\apache-tomcat-7.0.56\webapps\examples\WEB-INF\jsp2,jsp2-example-taglib.tld文件:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <taglib xmlns="http://java.sun.com/xml/ns/j2ee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 5 version="2.0"> 6 <description>A tag library exercising SimpleTag handlers.</description> 7 <tlib-version>1.0</tlib-version> 8 <short-name>SimpleTagLibrary</short-name> 9 <uri>/test</uri> //导入该文件的路径 10 <tag> 11 <name>loginDate</name> //标签名 12 <tag-class>util.LoginDateTag</tag-class> //标签功能代码所在的类 13 <body-content>empty</body-content> 14 </tag> 15 </taglib>
完成上面配置后,就可以在JSP代码中调用我们自定义的标签
1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> 2 <!-- 导入自定义标签库 --> 3 <%@ taglib prefix="t" uri="/test" %> 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <body> 7 您的登录时间为:<t:loginDate/> 8 </body> 9 </html>