Servlet編程之自定義標籤

  自定義標籤的目的:以簡單的標籤,隱藏複雜的邏輯。

  使用自定義標籤配置過程:

  1. 在對應的web應用下,配置.tld文件,如${webapp}/WEB-INF/tlds/mytaglib.tld,新建tag標籤如下:

 

    <tag>
      <!--自定義標籤名-->
      <name>helloWorld</name>
      <!--自定義標籤處理類-->
      <tag-class>domain.HelloWorldTag</tag-class>
      <!--自定義標籤體爲空-->
      <body-content>empty</body-content>
    </tag>

 

     2. 在web.xml文件中配置標籤庫信息,這個配置是爲了web容器可以定位TLD文件的位置

      

      <jsp-config>
	<taglib>
	  <taglib-uri>/mytaglib</taglib-uri>
	  <taglib-location>/WEB-INF/tlds/mytaglib.tld</taglib-location>
	</taglib>
      </jsp-config>

       其中,<jsp-config>用於爲web應用中的JSP文件提供全局配置信息;<taglib>用於指定JSP頁面使用的標籤庫信息;

        兩個子元素,<taglib-uri>元素指定在web應用程序中使用的標籤庫的URI標識,JSP頁面的taglib指令通過這個uri

        讀取到tld文件;<taglib-location>指定TLD文件的位置。

 

  3. 創建自定義標籤處理類,必須繼承父類javax.servlet.jsp.tagext.SimpleTagSupport,兩個要求:(1)如果標籤類包含屬性,每個屬性要有對應的getter和setter方法;(2)重寫doTag()方法,這個方法負責生成頁面內容

     

     public class HelloWorldTag extends SimpleTagSupport
     {
	//複寫的doTag方法,標籤實際處理方法,生成自定義的頁面內容
	public void doTag() 
		throws IOException
	{
		//獲取頁面輸出流,並輸出字符串
		getJspContext().getOut().write("Hello World " + new java.util.Date());
	}

     }

       注意,在編譯時,需要將%CATALINA_HOME%/lib/jsp-api.jar包添加到環境變量CLASSPATH中,這樣編譯時才能找到處理包,

    否則會報錯。

  4. 頁面中引用該自定義標籤

    

     <%@ taglib uri="/mytaglib" prefix="mytag" %>
     <html>
	<head>
		<title>自定義標籤示範</title>
	</head>
	<body bgcolor="#ffffc0">
		<h2>下面顯示的是自定義標籤中內容</h2>
		<!--使用標籤,其中mytag是標籤前綴,根據taglib的編譯指令,
			mytag前綴由/mytaglib的標籤庫處理-->
		<mytag:helloWorld /><br/>
	</body>
     </html>


    通過以上操作步驟,啓動服務器,執行結果如下(這個導入圖片真扯,只能把內容貼過來了,難道是我不會用???):

   下面顯示的是自定義標籤中內容

     Hello World Sun Mar 09 15:04:23 CST 2014

    
    總結:以上自定義標籤的demo的整體運行過程是,用戶請求該頁面(mytag.jsp),讀取到自定義標籤

       <%@ taglib uri="/mytaglib" prefix="mytag" %>,web應用到web.xml文件中根據uri標識符定位

       到標籤庫(mytaglib.tld)的具體位置,然後根據標籤名稱helloWorld定爲到具體的標籤,

       在標籤中指定標籤處理類,根據標籤處理類的處理內容展現頁面結果。

    

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章