【轉】Struts1.x系列教程(4):標籤庫概述與安裝

轉載地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/15/251411.htmlhtml

Struts的整個視圖層(就是MVC模式中的View層)是由Struts的定製標籤(或者稱爲定製動做)和客戶端代碼(Javascript、HTML等)實現的。這些Struts標籤被寫在JSP頁面中,用於生成客戶端代碼、進行邏輯判斷等工做,使用Struts標籤能夠儘可能避免直接在JSP頁面中直接使用Java代碼,以使得JSP頁面更容易編寫和維護。

java

1、Struts1.x標籤庫概述apache


Struts的標籤庫分爲以下五類:

session

1. HTML標籤庫佈局

在HTML標籤庫中的定製標籤通常和HTML中的tag是一一對應。如HTML中的<form>、各類類型的<input>在HTML標籤庫中都有定製標籤和其對應。HTML標籤庫的目的是將視圖層的組件和控制層鏈接起來(事實上,不使用HTML標籤庫中的定製標籤也能夠完成一樣的工做,只是須要寫更多的代碼)。spa

2. Bean標籤庫.net

Bean標籤庫中的定製標籤主要用來向客戶端輸出文本信息。那麼Struts爲何要單獨提供一個標籤庫來向客戶端輸出文本信息呢?緣由有兩個:orm

1. 爲Struts提供國際化支持(也就是說能夠從屬性文件中讀取文本信息,並將其輸出到客戶端)。htm

2. 爲了不直接使用Java代碼得到存儲在request和session對象中的內容。對象

3. Logic標籤庫

爲了不在JSP頁面中直接使用Java代碼進行邏輯判斷和循環操做。Logic標籤庫提供了一組標籤用於在不使用Java代碼的狀況下也能夠完成一樣的工做。並且使用標籤進行邏輯判斷和循環操做要比使用Java代碼更容易理解和維護。

4. Nested標籤庫

這個標籤庫中的標籤有來顯示form或對象中的「nested」屬性。

5. Tiles標籤庫

    這個標籤庫的標籤容許咱們爲視圖層創建佈局(layout)。

    在Struts的標籤庫中有一些標籤和JSTL有必定的重合,如Logic標籤庫的邏輯判斷標籤。可是JSTL要求Servlet容器要符合JSP 2.0規範,不然JSTL沒法正常工做。這對於那麼運行在較低版本的Servleet容器中的程序就沒法享受JSTL給咱們帶來的強大的功能。但Struts標籤卻沒這個要求。所以,若是咱們的Web程序中使用了Struts,建議儘可能使用Struts標籤庫中的標籤,除非能保證Web應用程序的運行環境都支持JSP 2.0規範。

2、安裝和聲明Struts標籤


    因爲在MyEclipse中已經帶了Struts相應的jar包,所以,使用MyEclipse來開發基於Struts的Web應用程序就無需再安裝Struts了。若是讀者想使用其餘的Struts版本,能夠到http://struts.apache.org/去下載。

    Struts標籤庫的聲明和JSTL相似,它們都須要使用taglib指令。其實在MyEclipse中咱們根本不須要記憶如何來聲明Struts標籤,所以,若是使用MyEclipse的高級JSP模板創建JSP頁面,MyEclipse就會自動將聲明Struts標籤的語句加到了JSP頁面中。在打開高級JSP模板後,在「Template to use」下拉列表框中選擇「Standard JSP using Struts 1.2/1.3,而後點擊「Finish」按鈕創建一個JSP頁面。打開這個剛創建的JSP頁面,咱們會在page指令的下面看到四條tablib指令,其中Nested標籤庫並未自動加入,若是JSP頁面中使用了Nested標籤庫中的標籤,就須要咱們手工加入Nested標籤庫的定義,Struts標籤庫的聲明代碼以下:

  <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
  <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
  <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
  <%-- JSP高級模板並未加入Nested標籤庫聲明,須要手工加入--%>
  <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>

    在上面的Struts標籤庫的聲明中,taglib標籤的prefix屬性值能夠是任何字符串(但不一樣的標籤庫的prefix的值不一樣相同),但建議按着上面代碼的聲明語句中的prefix屬性值來聲明相應的Struts標籤庫。

    還有一點須要注意,taglib指令的uri屬性除了使用在.tld文件中定義的uri值來定位標籤庫外,還能夠直接使用.tld文件的相對路徑來定位。在使用MyEclipse將一個Web工程加入Struts特性後,會自動在WEB-INF目錄中加入以下五個文件:

1.       struts-bean.tld:用於聲明Bean標籤庫中標籤的tld文件。

2.       struts-html.tld:用於聲明HTML標籤庫中標籤的tld文件。

3.       struts-logic.tld:用於聲明Logic標籤庫中標籤的tld文件。

4.       struts-tiles.tld:用於聲明Tiles標籤庫中標籤的tld文件。

5.       struts-nested.tld:用於聲明Nested標籤庫中標籤的tld文件。

所以,也能夠使用以下的代碼來聲明Struts標籤。

  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
  <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
  <%-- JSP高級模板並未加入Nested標籤庫聲明,須要手工加入--%>
  <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>

 

其中WEB-INF前面的「/」表示Web根目錄。感興趣的讀者也能夠打開這些.tld文件,查看其中的內容。也能夠將這些.tld文件中的<uri>標籤的內容改成其餘的內容,如將struts-bean.tld文件中的<uri>標籤的內容改成struts-bean,那麼就能夠使用以下的語句來聲明Bean標籤庫了:

<%@ taglib uri="struts-bean" prefix="bean"%>

 

    但要注意,要想使修改生效,須要重啓Tomcat或是從新發布當前的Web應用程序。

相關文章
相關標籤/搜索