1.web.xml配置文件中要配置StrutsPrepareAndExecuteFilter類的過濾器:
<filter>
<filter-name>struts2filter</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注:在瀏覽器輸入相應的訪問地址----》把請求發送給tomcat---》tomcat判斷應該把請求交給哪個application應用---》讀取
webapplication應用下的web.xml配置文件---》執行到struts2filter過濾器,交給StrutsPrepareAndExecuteFilter類的doFilter()方法,讀取struts.xml文件,根據用戶的請求地址找到對應的package、action以及result---》將對應的頁面或數據返回給瀏覽器
2.web.xml中context-param標簽:
<context-param><!—spring啟動加載配置:配置文件地址-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/applicationContext.xml</param-value>
</contex-param>
<listener><!--spring啟動監聽:ContextLoaderListener類將spring的applicationContext.xml配置文件載入-->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
注:①<param-name>標簽中的名稱不可更改,即任何情況下都必須是contextConfigLocation;
②ContextLoaderListener的作用:在web啟動時,自動裝載spring的applicationContext.xml配置文件。因為它實現了
ServletContextListener這個接口,在web.xml配置這個監聽器,啟動容器時,就會默認執行它實現的方法。在
ContextLoaderListener中關聯了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成
③spring在web中的啟動是由ContextLoaderListener開始的,ContextLoaderListener實現了ServletLoaderListener
接口,並繼承了ContextLoader類
3.struts.xml配置文件:
①include節點是struts2中組件化的方式,可以將每個功能模塊獨立到一個xml配置文件中,然后用include節點引用
<include file=”struts-default.xml”/>
②package提供了將多個action組織為一個模塊的方式,package的名字必須是唯一的;當一個package擴展自另一個package
時,該package會在本身配置的基礎上加入擴展的package配置,父package必須在子package前配置
name:package名稱
extends:繼承的package名稱
abstract:設置package的屬性為抽象的,抽象的package不能定義action,值為true|false
namespace:定義package命名空間,該命名空間影響到url的地址,如此命名空間為”/test”,訪問的地址為:localhost:8080/
struts/test/xxx.action
<package name=”struts” extends=”struts-default” namespace=”/test”>
...
</package>
③定義默認的攔截器,每個action都會自動引用,如果action引用了其他的攔截器,默認的攔截器將無效
<default-interceptor-ref name=”myStack”></default-interceptor-ref>
④全局result配置
<global-results>
<result name=”input”>/error.jsp</result>
</global-results>
⑤一個action可以多次被映射(只要action中的name不同)
name:action 名稱
class:action對應的類路徑
method:調用action中的方法名
