第四章 Struts框架之構建Controller組件(3 / 3)

5、Web應用程序展開描述符

設置應用程序最後的步驟是配置應用程序展開描述符(保存在文件WEB-INF/web.xml中)以包括所有必需的Struts組件。作為一個指南使用例子程序的展開描述符,我們看到下麵的條目需要被創建或修改。

1)配置ActionServlet實例

添加一個條目定義actionservlet本身,同時包括適當的初始化參數。這樣一個條目看起來象是這樣:

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>application</param-name>

<param-value>org.apache.struts.example.ApplicationResources</param-value>

</init-param>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/action.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>2</param-value>

</init-param>

<init-param>

<param-name>mapping</param-name>

<param-value>org.apache.struts.example.ApplicationMapping</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

controllerservlet支持的初始化參數在下麵描述,拷貝自ActionServlet類的Javadocs。方括號描述如果我們沒有為那個初始化參數提供一個值時假設的缺省值。

application:應用程序資源包基類的Java類名。[NONE]

config:包含配置信息的XML資源的上下文相關的路徑。[/WEB-INF/action.xml]

debug:這個servlet的調試級別,它控製記錄多少信息到日誌中。[0]

digester:我們在initMapping()中利用的Digester的調試級別,它記錄到System.out而不是

servlet的日誌中。[0]

forward:使用的ActionForward實現的Java類名。[org.apache.struts.action.ActionForward]

mapping:使用的ActionMapping實現的Java類名。[org.apache.struts.action.ActionMappingBase]

nocache:如果設置為true,增加HTTP頭信息到所有響應中使瀏覽器對於生成或重定向到的任何響應不做緩衝。[false]

null:如果設置為true,設置應用程序資源使得如果未知的消息關鍵字被使用則返回null。否則,一個包括不歡迎的消息關鍵字的出錯消息將被返回。[true]

2)配置ActionServlet映射

有兩種通常的方法來定義將被controllerservlet處理的URL:前綴匹配和擴展匹配。每種方法的一個適當的映射條目將在下麵被描述。

前綴匹配意思是我們想讓所有以一個特殊值開頭(在上下文路徑部分之後)的URL傳遞給這個servlet。這樣一個條目看起來可以象是這樣:

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>/execute/*</url-pattern>

</servlet-mapping>

它意味著一個匹配前麵描述的/logon路徑的請求的URL看起來象是這樣:

http://www.mystudy.com/myapplication/execute/logon

這裏/myapplication是我們的應用程序展開所在的上下文路徑。

另一方麵,擴展映射基於URL以一個跟著定義的一組字符的句點結束的事實而將URL匹配到actionservlet。例如,JSP處理servlet映射到*.jsp模式這樣它在每個JSP頁麵請求時被調用。為了使用*.do擴展(它意味著"做某件事")映射條目看起來應該象是這樣:

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

並且一個匹配以前描述的/logon路徑的請求的URI可以看起來象是這樣:

http://www.mystudy.com/myapplication/logon.do

3)配置Struts標記庫

下一步,我們必須添加一個定義Struts標記庫的條目。這個條目看起來應該象是這樣:

<taglib>

<taglib-uri>/WEB-INF/struts.tld</taglib-uri>

<taglib-location>/WEB-INF/struts.tld</taglib-location>

</taglib>

它告訴JSP係統到哪裏去找這個庫的標記庫描述符(在我們的應用程序的WEB-INF目錄)。

4)添加Struts組件到我們的應用程序中

為了在我們的應用程序運行時使用Struts,我們必須將struts.tld文件拷貝到我們的WEB-INF目錄,將struts.jar文件拷貝到我們的WEB-INF/lib。