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>