struts2中action的配置请求有三种方式web
如:<action name="test" class="cn.dhcc.action.TestAction" method="test"></action>spa
这样一个action就仅仅对应一个处理方法io
http://xxxxx:8080/web/test/test.action----对应就是TestAction的test()方法class
这种方式比较麻烦,一个方法对应一个action配置test
这种方式不用配置allowedMethods,由于,请求的方法test就等于了ActionConfig的methodName属性了struts2
如:<action name="*Action" class="loginAction" method="{1}">配置
请求http://xxxxx:8080/web/test/loginAction.action----对应就是loginAction的login()方法请求
http://xxxxx:8080/web/test/logoutAction.action----对应就是loginAction的logout()方法方法
这种方式能够动态的指定请求方法,但可读性很差,由于占位符是name的一部分,这么以来就会出现loginAction logoutAction--没法准确的知道究竟是哪一个action类struts
这种方式必定要配置allowedMethods指明能够动态访问的方法,由于,动态方法不会等于ActionConfig的methodName属性又不等于默认的execute,只能经过是否配置了allowedMethods来判断可访问性
如:<action name="testAction" class="cn.dhcc.action.TestAction" ></action> 配置action的时候,不指明方法名。请求的时候指定
如:http://xxxxx:8080/web/test/testAction!test.action----对应就是TestAction的test()方法
http://xxxxx:8080/web/test/testAction!list.action----对应就是TestAction的list()方法
这种方式也能够动态的指定请求方法,而且可读性好,由于一看就知道test list都是同一个action类,这对于一个模块的多个方法(一个模块一个类来表示),能够准确的知道所在的是哪一个模块,推荐使用
这种方式也必定要配置allowedMethods指明能够动态访问的方法,由于,动态方法不会等于ActionConfig的methodName属性又不等于默认的execute,只能经过是否配置了allowedMethods来判断可访问性