新建一个struts2项目,命名为struts2。按照如下XML文件配置一个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。
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。
<
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
>
这主要是因为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。
本文介绍了一个Struts2项目的Action配置方法,并详细解释了如何通过特定URL访问该Action。Struts2框架会按照一定的命名空间顺序查找Action,即使URL中包含了额外的路径信息,也能成功定位并调用相应的Action。
1万+

被折叠的 条评论
为什么被折叠?



