Struts2对Action名称的搜索顺序
新建一个struts2项目,命名为struts2。按照如下XML文件配置一个Action:
1<package?name="hello"?namespace="/action"?extends="struts-default">
2????<action?name="helloworld"?class="com.xiaobai.struts.action.HelloWorldAction"?method="execute">
3????<result?name="success">/WEB-INF/page/hello.jsp</result>
4????</action>
5</package>将应用部署,访问如下路径:http://localhost:8080/struts2/action/sdf/dsf/32/d/helloworld?依然可以访问到Action。
这主要是因为Struts2对Action名称的搜索是按照一定顺序进行的。以上面的情况为例:
1.struts2首先搜索命名空间为/action/sdf/dsf/32/d的包是否存在,存在的情况下,是否有helloworld这个Action;
2.搜索命名空间为/action/sdf/dsf/32的包是否存在,存在的情况下,是否有helloworld这个Action;
3.搜索命名空间为/action/sdf/dsf的包是否存在,存在的情况下,是否有helloworld这个Action;
4.搜索命名空间为/action/sdf的包是否存在,存在的情况下,是否有helloworld这个Action;
5.搜索命名空间为/action的包是否存在。在这种情况下能够搜索到,因此,可以访问到helloworld这个Action。
此外,如果按照这种搜索顺序搜索,发现所有的包均不存在,那么struts2则会到命名空间为""(默认命名空间)的包下面去找helloworld这个Action。