已定义格式化登录时间为例:
首先,在项目中创建一个Java类,本例为:cn.hncu.tag.MyTag,代码如下
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
//关键是继承TagSupport这个类
public class MyLoginDate extends TagSupport{
//覆盖这个类方法,并将业务逻辑代码写在方法内
@Override
public int doStartTag() throws JspException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String dateStr = sdf.format(new Date());
try {
//将结果输出到jsp页面
pageContext.getOut().print(dateStr);
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
然后,需要在项目的web-inf下创建一个tld文件。可以参考tomcat/webapps/example/jsp2/jsp2-example-taglib.tld,本例创建的名字为hncuTag.tld,代码如下:
<?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>
<uri>/myTag</uri>
<tag>
<description>Outputs Hello, World</description>
<name>loginDate</name>
<tag-class>cn.hncu.tag.MyLoginDate</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
然后再在jsp中引用,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/myTag" prefix="myTag"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>myTag</title>
</head>
<body>
您好,您的登录时间为:<myTag:loginDate/>
</body>
</html>
输出结果为:您好,您的登录时间为:2016年07月31日 17:14:21
运行机制分析: jsp遇到不认识的自定义标签时,会根据导入的url找到相应的tld文件,再根据tld文件内容找到对应的Java类,从而输出结果。