您的位置:首页 > 编程语言 > Java开发

struts2 package name

2017-01-16 20:36 399 查看
首先更正一点,struts配置文件中的package name属性不是解决重名问题的,而是用来实现继承的,namespace才是用来解决重名的,前台和后台可以这样分

<package name="front" namespace="/front" extends="default">
<package name="back" namespace="/back" extends="default">


这样在两个包里都有test Action时在url地址中用/front/test或/back/test就能区分开了,别外继承时用extends=”front”就是继承自第一个package(默认继承是default; 若是第一个package里面配的有公共的结果集或拦截器,继承者也可以用(当然也可以用action,注意:子包里的action不能与父包中的重名);

在struts2 struts.xml 配置中

<struts>

<package name="caixuedong" extends="struts-default" namespace="/core">

<action name="greeting" class="com.tarena.struts2.action.GreetingAction" >

<result name="success">/core/greeting.jsp </result>

</action>

</package>

</struts>


name=”caixuedong”

namespace=”/core”

name=”greeting”

这三个怎么去理解啊

package中的name只是一个标识,你可以随意命名;

action中的name对应你页面中的一个action跳转,比如你页面有个表单提交:

namespace是用于区分包中相同的类,如果没写,说明该包为默认空间,如果写了(如你的这个例子),那么就说明包caixuedong的空间为/core。

namespace实际上是在包的基础上对Action的进一步组织和划分,可以解决Action重名问题,因为在不同的命名空间中是可以有相同的Action名的,就好比一班有个叫张三的,二班也有个叫张三的,当我们呼叫某个张三时,就得带上“命名空间”,Action也是如此,例子的greeting就必须通过 /core/greeting.action的方式来进行调用。

greeting那个name就是Action的名字,相当于上个例子的“张三”

包的名字只是作为其他包引用本包的标记

参考:

http://blog.csdn.net/baohanqing/article/details/39699091
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: