一、怎么用命名空间,为什么要用?
Struts2的命名空间在struts.xml中的package中配制
<package name="semcolon" extends="struts-default" namespace="/userMag">
他的好处在于,当两个不同的应用要用到一个数据库操作时,可以很好的把业务逻辑给区分开
比如BLOG文章的删除,作者可以对该文章可以做删除操作,但是管理员也会有这个权限,哪么我可以定义两个包,分别用于文章管理和系统管理
用户管理
<package name="semcolon.bloagmag" extends="struts-default" namespace="/blogMag">
<action name="delBlog" class="semcolon.blogmag.BlogMag">
<result>/WEB-INF/jsp/comm/success.jsp</result>
</action>
</package>
系统管理
<package name="semcolon.systemmag" extends="struts-default" namespace="/systemMag">
<action name="delBlog" class="semcolon.systemMag.BlogMag">
<result>/WEB-INF/jsp/comm/success.jsp</result>
</action>
</package>
相对DAO来说,不同的是用户管理只能一次删一条,而系统管理可以删多条,这完全可以使用一个DAO的操作来完成,别的事都属于业务层的事了,如使用<include>,哪么就更方便了,我们可以大胆的在每个不同的模块下定义相同的应用名
二、命名空间寻找Action的优先级
在命名空间下如找不到定义的action哪么是不是直接跳到WEB容器中的错误页面中了呢?
我能给的答案是 NO,我也测试过,struts2他自己会先进行处理
先在当前的命名空间中寻找,如没有找到,哪么会直接跳到默认的命名空间中寻找
问题又出现了,默认的命名空间在哪里?
当在package标签下没有设置命名空间时,也就是没有定义namespace时,该package下所有action定义都会存放在默认的命名空间下,OK给个例子吧
<package name="semcolon" extends="struts-default">
<action name="*" class="com.opensymphony.xwork2.ActionSupport"/>
<result>/WEB-INF/jsp/test/MyJsp3.jsp</result>
</action>
</package>
<package name="test1" extends="struts-default" namespace="/login/test">
<action name="userLoginAction" class="com.opensymphony.xwork2.ActionSupport">
<result>/WEB-INF/jsp/test/MyJsp1.jsp</result>
</action>
</package>
<package name="test2" extends="struts-default" namespace="/login">
<action name="loginAction" class="com.opensymphony.xwork2.ActionSupport">
<result>/WEB-INF/jsp/test/MyJsp2.jsp</result>
</action>
</package>
当访问http://localhost:8080/test/login/test/loginAction.action时,
会在test1包中找,如没有找到,他不会在test2中找,他会直接跳到semcolon中寻找
注:这里在semcolon中定义的Action中,name定义为“*”,结合命名空间这种机制可以带来很大的方便,因为定义为"*"的action,将接收所有struts2处理的未定义的请求
虽然我在网上也看到过如当前访问的命名空间中没有找到相应的action,他会到上一级的命名空间中寻找(如/login/test中没有找到,会跳到/login中寻找),但经我测试,这种方式不成功,希望看到这文章的人,也来测试下,看看你们的结果是不是和我一样
3、关于后缀设置
访问的后缀设置一般都在struts.xml中或是设置在struts.properties中
<constant name="struts.action.extension" value="do"></constant>
struts.action.extension=do
如想设置多个后缀可以使用“,”分割
但有个问题,如果用户访问了一个错误地址,且没有使用struts2中定义的后缀,哪么会跳转到WEB容器中定义的错误页面,OK,也许我们可以使用手动设置容器的这个页面要解决掉,但是我在使用Spring MVC时,可以不使用后缀,这样也有好处,像安全级别高的,不想给后缀用户(非恶意用户也不需要知道这些),或我想全部请求都要经过struts2来处理。对于这样的需求,这样一定无法满足,后经过我测试,可以这样来设置
<constant name="struts.action.extension" value=""></constant>
对,就是什么也不写,一个空(struts2有默认值的,值为action,所以一定要手动设置一下)
结合默认命名空间定义的名为"*"的action,就可以完成了,如自己在加工一下,可以得到更友好的返回页面
好了,完了,我的文字表达能力不是很好,文章有点流水的意思,见谅
分享到:
相关推荐
struts2 Action 包 命名空间 servlet APIstruts2 Action 包 命名空间 servlet APIstruts2 Action 包 命名空间 servlet APIstruts2 Action 包 命名空间 servlet APIstruts2 Action 包 命名空间 servlet APIstruts2 ...
struts2命名规范,包名,空间名,Action名
struts2中命名空间的使用,在web中如果有需要多个同名的action,可以通过命名空间来管理action
struts2实现改写在url后缀的方法,如XX.do--->改写为xx.html等,方便试用,一目了然
是一个简单的struts2中阐明命名空间的实例
struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...
struts 2的命名规范、以及多个struts-xml配置文件(多人员开发)时的配置问题......
Struts2.0深入学习 命名空间,模型驱动,表单重复提交实例 博文链接:https://zmx.iteye.com/blog/463118
《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...
《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
struts2 资料struts2 资料struts2 资料struts2 资料
Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...
参考博文:http://blog.csdn.net/u011638419/article/details/41620213
《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...
struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接标签 struts2入门 struts2进阶学习一 struts2进阶学习二 struts2进阶学习三 struts2进阶...
该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置没有或只有通配符命名空间值,可能构成 RCE攻击。第二,当使用没有 value和动作集的url标签时,并且其...
struts2源码 struts2案例 struts2使用包