1. 程式人生 > >第一個自定義標籤

第一個自定義標籤

已定義格式化登入時間為例:
首先,在專案中建立一個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類,從而輸出結果。