struts2 多个package问题
struts2如果我在struts.xml中设置了多个package,每个package多对应相应的action,前台有很多form,form提交时其中的action是怎...
struts2如果我在struts.xml中设置了多个package,每个package多对应相应的action,前台有很多form,form提交时其中的action是怎么判断该跳转到struts.xml中哪个package中的action呢?
展开
展开全部
例:struts框架应用,没用使用其他框架比如spring的情况
项目名:demo
现在有三个package
<package name="demo" extends="父包名" namespace="/">
<action name="*" class="包名.{1}Action"></action>
</package>
访问方式:http://localhost:8080/demo/User.do
可以访问到这个UserAction
<package name="demo1" extends="父包名" namespace="/demo1">
<action name="*" class="包名.{1}Action"></action>
</package>
访问方式:http://localhost:8080/demo/demo1/Employee.do
可以访问到EmployeeAction
这上面两种配置方式区别很明显,通过不同的namespace可以区别不同的
package,
<package name="demo2" extends="父包名" namespace="/">
<action name="*" class="包名.{1}Action"></action>
</package>
和第一种package配置方式一样但是这个时候如果和第一种配置同时出现在两个配置文件中,就会出现访问错误,只有一个action可以正常访问
解决方案:
<action name="这里指定action的访问名,比如user" />这样只有路径为
user.do的访问可以被转发,我这里没有使用"*/*"模式的通配符访问模式,如果使用的话可以写为name="user/*"的方式限定访问
当然 如果整合了spring的话就不存在这个问题了,除非出现同名的情况
项目名:demo
现在有三个package
<package name="demo" extends="父包名" namespace="/">
<action name="*" class="包名.{1}Action"></action>
</package>
访问方式:http://localhost:8080/demo/User.do
可以访问到这个UserAction
<package name="demo1" extends="父包名" namespace="/demo1">
<action name="*" class="包名.{1}Action"></action>
</package>
访问方式:http://localhost:8080/demo/demo1/Employee.do
可以访问到EmployeeAction
这上面两种配置方式区别很明显,通过不同的namespace可以区别不同的
package,
<package name="demo2" extends="父包名" namespace="/">
<action name="*" class="包名.{1}Action"></action>
</package>
和第一种package配置方式一样但是这个时候如果和第一种配置同时出现在两个配置文件中,就会出现访问错误,只有一个action可以正常访问
解决方案:
<action name="这里指定action的访问名,比如user" />这样只有路径为
user.do的访问可以被转发,我这里没有使用"*/*"模式的通配符访问模式,如果使用的话可以写为name="user/*"的方式限定访问
当然 如果整合了spring的话就不存在这个问题了,除非出现同名的情况
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询