struts1 在web.xml中的配置
來源:互聯網
上載者:User
web.xml檔案對於配置任何Java Web應用都必需的。
(1) 配置Struts的ActionServlet
<servlet>元素來聲明ActionServlet
<servlet-name>元素:用來定義Servlet的名稱
<servlet-class>元素:用來指定Servlet的完整類名
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
還要配置<servlet-mapping>元素,它用來指定ActionServlet可以處理哪些URL
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意:(1)<servlet-mapping>和<servlet>中的<servlet-name>?</servlet-name>的要填寫一致,它就是一根線,把<servlet-mapping>和<servlet>聯結在一起的。
(2)在Struts架構中只能有一個Servlet,因為Servlet支援多線程。而<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>中的ActionServlet是在Struts.jar包中的.在匯入Struts包時會匯入。
(3)在顯示層所有以*.do為副檔名提交的URL,都會交由這個Servlet來處理。*.do可以改寫成你想要的任何形式,例如:/do/* ,此時該Servlet會處理所有以"/do"為首碼的URL,如http://localhost:8080/helloapp/do/helloWord,
擴充 (1)我們可以繼承 org.apache.struts.action.ActionServlet 得到我們可以擴充的子類,在子類中重寫一個方法init()。這時<servlet-class>?</servlet-class>中的。是我們建立的類的路徑,同樣只能存在一個。
(2)聲明ActionServlet的初始化參數
初始化參數用來對Servlet的運行時環境進行初始配置。<servlet>的<init-param>子項目用於配置Servlet初始化參數。
config :以相對路徑的方式指明Struts應用程式的設定檔位置,如不設定,則預設值為/WEB-INF/struts-config.xml
debug : 設定Servlet的debug層級,控制日誌記錄的詳細程度。預設為0,記錄相對最少的日誌資訊。
detail : 設定Digester的debug層級,Digester是Struts架構所使用的用來解析xml設定檔的一個架構,通過此設定,可以查看不同詳細等級的解析日誌。預設為0,記錄相對最少的日誌資訊。
<load-on-startup>。</load-on-startup>中。號的值是此ActionServlet在伺服器開啟時載入的次序,數值越低,越先載入。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
擴充:(1)當伺服器啟動後,載入ActionServlet,而ActionServlet會調用相關的方法去,會根據它下面的參數的初始值,對這個ActionServlet中的參數時行初始化
(2)當多人協作開發項目時可以對Strutst的設定檔進行適當的擴充,但必須為config開頭。如
<init-param>
<param-name>config/XXXXXXXXX</param-name>
<param-value>/WEB-INF/XXXXX.xml</param-value>
</init-param>
(3) 配置歡迎檔案清單
當客戶訪問Web應用時,如果僅僅給出Web應用的Root URL,沒有指定具體的檔案名稱。Web容器會自動調用Web應用的歡迎檔案。<welcome-file-list>是用來設定此項.
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
說明:在<welcome-file-list> 下可以有多個<welcom-file>。Web容器會依次尋找歡迎介面,直到找到為止。但如果不存在會向用戶端返回”HTTP 404 NOT Found“錯誤資訊。
由於在<welcome-file-list>元素中不能配置Servlet映射,則不能直接把Struts的Action作為歡迎檔案。但可以通過Struts中的全域的(global)轉寄項來配置。
A:welcome.jsp頁面(可換檔案名稱)
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>
<html>
<body>
<logic:forward name="welcome"/>
</body>
</html>
B: web.xml
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
C: struts-config.xml
<global-forwards>
<forward name="welcome" path="hello.do">
</global-forwards>
我自已理解,僅供參考
運行機制:當伺服器啟動時還是會載入 B中<welcome-file>welcome.jsp</welcome-file>中的welcome.jsp,然後讀到(A)welcome.jsp中的 <logic:forward name="welcome"/>,接下來會轉到C中的<forward name="welcome" path="HelloWorld.do">,這是由於它是以.do(hello.do)結尾的,所以它會找到C檔案中的<action>相配配的,最後在轉到這個<action>的JSP頁面。