Struts2的處理流程
StrutsPrepareAndExecuteFilter是Struts2框架的核心控制器,它負責攔截由<url-pattern>/*</url-pattern>指定的所有用戶請求,當用戶請求到達時,該Filter會過濾用戶的請求。默認情況下,如果用戶請求的路徑不帶后綴或者以后綴.action結尾,這時請求將被轉入Struts2框架處理,否則Struts2框架將略過該請求的處理。當請求轉入Struts2框架處理時會先經過一系列的攔截器,然后再到Action。與Struts1不同的是,Struts2對用戶的每一次請求是線程安全的。
二、為應用指定多個Struts配置文件
在大部分應用里,隨著應用規模的增加,系統中的Action的數量也會大量增加,導致struts.xml配置文件非常龐大、臃腫。
為了提高struts.xml文件的可讀性,我們可以將struts.xml配置文件分解成多個配置文件,然后在struts.xml文件中包含其他配置文件。
通過這種方式,我們就可以將Struts2的Action按模板添加在多個配置文件中。
struts.xml如下:
<struts>
<!-- <constant name="struts.action.extension" value="do,action"/>-->
<include file="winney.xml"/>
<include file="hello.xml" />
</struts>
winney.xml如下:
<package name="winneyx" namespace="/winneyx" extends="struts-default">
<action name="winney" class="cn.itcast.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
hello.xml如下:
<package name="hellox" namespace="/hellox" extends="struts-default">
<action name="hello" class="cn.itcast.action.LoginAction" method="execute">
<result name="success">/WEB-INF/index.jsp</result>
<param name="companyName">中國有限公司</param>
</action>
</package>