struts2--Action名称的搜索顺序

1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

 

2.首先寻找namespace/path1/path2/path3package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为testaction,当在该package下寻找不到action 时就会直接跑到默认namaspacepackage里面去寻找action(默认的命名空间为空字符串“” ,如果在默认namaspacepackage里面还寻找不到该action,页面提示找不到action 

 

3.寻找namespace/path1/path2package,如果不存在这个package,则转至步骤4;如果存在这个package,则在这个package中寻找名字为testaction,当在该package中寻找不到action 时就会直接跑到默认namaspacepackage里面去找名字为testaction ,在默认namaspacepackage里面还寻找不到该action,页面提示找不到action 

 

4.寻找namespace/path1package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个package中寻找名字为testaction,当在该package中寻找不到action 时就会直接跑到默认namaspacepackage里面去找名字为testaction ,在默认namaspacepackage里面还寻找不到该action,页面提示找不到action 

 

5.寻找namespace/package,如果存在这个package,则在这个package中寻找名字为testaction,当在package中寻找不到action或者不存在这个package时,都会去默认namaspacepackage里面寻找action,如果还是找不到,页面提示找不到action

 

示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="struts" namespace="/test" extends="struts-default">
		<action name="helloworld" class="cn.struts.demo.HelloWorldAction"
			method="execute">
			<result name="success">/WEB-INF/page/hello.jsp</result>
		</action>
	</package>
</struts>

 

 

则访问路径为:http://localhost:8080/strutsdemo/test/helloworld(正常情况下是这样访问)

或者是http://localhost:8080/strutsdemo/test/aaa/helloworld

或者是http://localhost:8080/strutsdemo/test/aaa/bbb/helloworld 都可以

 

注:当在该package下寻找不到action 时就会直接跑到默认namaspacepackage里面去寻找action(默认的命名空间为空字符串“” ),对这句话举个例子说明一下:

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="struts" namespace="/test" extends="struts-default">
	</package>
	
	<package name="default" namespace="" extends="struts-default">
		<action name="helloworld" class="cn.struts.demo.HelloWorldAction"
			method="execute">
			<result name="success">/WEB-INF/page/hello.jsp</result>
		</action>
	</package>
</struts>

 

访问的路径还是http://localhost:8080/strutsdemo/test/helloworld,不过此时name为struts的包并没有helloworld这个action,所以现在就到默认命名空间下面的包也即name为default的包中寻找name为helloworld的action,如果该包下面也没有helloworld这个action,则页面会报HTTP-404错误

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值