<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意:無論應用包含多少子模組,僅需配置一個 ActionServlet,因其支援多線程,且 Struts 僅允許單一實例。
<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>0</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>0</param-value>
</init-param>
</servlet>
| 參數名 | 含義/預設值 |
|---|---|
| config | Struts 配置檔相對路徑,預設 /WEB-INF/struts-config.xml |
| config/sub1 | 子應用配置檔路徑,較少使用 |
| debug | Servlet debug 層級,0 為最少日誌 |
| detail | Digester XML 解析 debug 層級,0 為最少日誌 |
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
因 <welcome-file-list> 不支援 Servlet 映射,無法直接指定 Action 為歡迎頁。變通方案:
struts-config.xml 定義全域轉向:<forward name="welcome" path="HelloWorld.do"/>welcome.jsp,內容為 <jsp:forward page="welcome.do"/> 或使用重導向。web.xml 設定 welcome.jsp 為歡迎檔案。<error-page>
<error-code>404</error-code>
<location>/common/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/common/system_ioerror.jsp</location>
</error-page>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
Struts 啟動時讀取配置檔,建立各組件。根元素 <struts-config> 包含 8 子元素,須嚴格遵循 DTD 定義順序:
<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
配置資料源,含多個 <data-source> 子元素,可用 <set-property> 設定屬性。配置後可在 Action 中透過 getDataSource(request) 取得連線:
DataSource ds = getDataSource(request);
Connection conn = ds.getConnection();
可宣告多資料源,各以唯一 key 識別。
配置多個 <form-bean>,屬性含 name、type(類全名)。動態 Form Bean 需額外配置 <form-property>:
<form-beans>
<form-bean name="HelloForm" type="hello.HelloForm"/>
<form-bean name="userForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="firstname" type="java.lang.String"/>
<form-property name="lastname" type="java.lang.String"/>
<form-property name="age" type="java.lang.Integer" initial="18"/>
</form-bean>
</form-beans>
配置全域異常處理,映射 Java 異常至 org.apache.struts.action.ExceptionHandler 實作類。
聲明全域轉向邏輯名對應實際 URI:
| 屬性 | 說明 |
|---|---|
| className | 轉向配置類,預設 org.apache.struts.action.ActionForward |
| name | 轉向邏輯名(必填) |
| path | 目標 URI,必以 / 開頭(必填) |
| redirect | true=重導向,false=請求轉發 |