用户请求后,filter拦截请求,匹配请求然后经过struts2的拦截器,在进入action,在Action中处理,然后返回return result返回。
struts1与struts2的不同:struts2为用户的每一次请求都会创建一个Action,所以struts2中的Action是线程安全;struts1的Action创建之后放在了缓存中,一直存在,只有一个实例。
为了避免struts.xml文件过于大而臃肿,可以将一个struts.xml配置文件分解成多个配置文件,然后再struts.xml文件中包含其他配置文件。
<include file="struts-user.xml"/>
通常可以将struts2的Action按模块添加在多个配置文件中。
在struts2中实现通过url传递的参数来执行Action中的方法,使用动态方法调用,即在action名称后加上“!”和要执行的方法例如:list!addUI.action
在struts中加上常量配置:
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
其中value的值为false,那么表示不支持动态方法调用。
<action name="list_*" class="com.HelloWordAction" method="{1}">
<result name="success">/WEB-INF/pages/{2}.jsp</result>
</action>