菜鸟求:struts2中的package与namespace的区别

pkh198504 2011-11-04 11:54:08
如题,package 与 namespace 的区别是什么?最好的例子。
分少,不要见怪。
...全文
933 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zeus 2011-11-05
  • 打赏
  • 举报
回复
namespace是设置访问路径的,

package就是个包名。
crazywolf 2011-11-05
  • 打赏
  • 举报
回复
package 就像一个文件夹,它下面包含什么不受其它的影响,namespace是访问时的路径!
a_mean 2011-11-05
  • 打赏
  • 举报
回复
struts2中是采用<package>元素来管理Action的,package的作用类似于java中的类包。
它管理一组业务功能相关的action。而namespace属性可以不配置,主要是为了避免package中的
action重名,还有就是当有namespace时,可以减少配置的书写量,因为相同路径的action请求可以放置在同一个名称空间下,这样就不用每次都写出名称空间值所代表的路径。
最后还说一点,在页面跳转时,struts2自动寻找匹配的action,namespace的优先权大于package.
多云转大雨 2011-11-05
  • 打赏
  • 举报
回复
namespace决定了action的访问路径,默认为"",可以接收所有路径的action
namespace可以写为/ ,或者/xxx,或者/xxx/yyy,对应的action访问路径
为/index.action,/xxx/index.action,或者/xxx/yyy/index.action

namespace最好也用模块来进行命名

package用来区分重名的情况
namespace必须以/ 开头
云鹏 2011-11-05
  • 打赏
  • 举报
回复
namespace是C#里面的命名空间,跟java里面的package是一个意思,都是相当于一个文件夹,区别就是一个是c#的,一个是java的...
Lucky_BW 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pkh198504 的回复:]
<package name="pay" extends="struts-default">


为什么 /pay/queryMyPay.action?userid=1 这个也是正确的?(事实上我程序能找到相应的ACTION)
我在package 里面没有写 namespace .
我改成 /queryMyPay.action?userid=1 ,也可能执行。
为什么呢?
[/Quote]
2L的已经说明了,之于你说的这个问题,它首先会在namespace为pay下搜索,找不到就会向上级搜索。所以你这样写也是能找到
annan211 2011-11-05
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test1" extends="struts-default" >
<global-results >
<result name="global-exception">/global-exception.jsp</result>
</global-results>
<global-exception-mappings >
<exception-mapping result="global-exception" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>



<action name="login" class="cn.cstp.org.action.LoginAction">
<result name="success" type="redirectAction" >${nextAction}</result>
<result name="exception" type="dispatcher" >/exception.jsp</result>
<exception-mapping result="exception" exception="java.sql.SQLException"></exception-mapping>
</action>

<action name="admin" class="cn.cstp.org.action.AdminAction">
<result>/admin.jsp</result>
</action>

<action name="user" class="cn.cstp.org.action.UserAction">
<result>/user.jsp</result>
</action>
</package>
</struts>

好了 这是我的一个项目中的一个struts 配置文件 你可以在里面看到有<package>但是没有namespace 这就是说明我的这个配置文件下面的namespace是空 等同<package name="test1" extends="struts-default" namespace=""> 我访问这个配置文件里面的资源时根本不用去问 <package name="test1">这里面的name是哪家大佛 我只关心namespace是否为空就行了 如果为空 那么我访问package里面的资源的时候直接跳过namespace 如果不为空 那么我在访问 比如里面的Action时候就得加上 比如我访问
<action name="admin" class="cn.cstp.org.action.AdminAction">
<result>/admin.jsp</result>
</action>里面的action http://localhost:8080/progectname/admin.action
如果namespace存在并且为 space 则访问路径 http://localhost:8080/progectname/space/admin.action
不明白再问我
「已注销」 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ithink_88 的回复:]
namespace是C#里面的命名空间,跟java里面的package是一个意思,都是相当于一个文件夹,区别就是一个是c#的,一个是java的...
[/Quote]

哦,这样啊。
但我说的是 struts2中的,也就是 struts.xml配置文件中的
「已注销」 2011-11-05
  • 打赏
  • 举报
回复
<package name="pay" extends="struts-default">


为什么 /pay/queryMyPay.action?userid=1 这个也是正确的?(事实上我程序能找到相应的ACTION)
我在package 里面没有写 namespace .
我改成 /queryMyPay.action?userid=1 ,也可能执行。
为什么呢?
dracularking 2011-11-05
  • 打赏
  • 举报
回复
namespace这种叫法还是挺霸气的
「已注销」 2011-11-05
  • 打赏
  • 举报
回复
好。大概清楚了。
公司财务管理系统(源码+数据库+论文+答辩ppt一整套齐全)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 本系统分为员工、管理员两个用户角色。 员工功能: 1. 注册登录:填写员工账号、密码、姓名、部门职位等信息完成注册,账号密码登录系统。 2. 请假管理:填写请假标题、原因、时间、类型提交请假申请,查看本人请假记录与审核回复。 3. 考勤查看:查看个人考勤信息,查看出勤、请假、迟到、早退、缺勤统计数据。 4. 薪资查询:查看每月薪资详情,查看底薪、绩效、奖金、扣款以及实发工资等信息。 5. 薪资异议申请:对薪资有疑问时提交薪资异议申请,查看申请审核状态与管理员回复。 6. 个人中心:修改个人头像、手机号等资料,修改登录密码。 管理员功能: 1. 员工管理:查询、新增、编辑、删除员工账号,维护员工部门、职位等基础信息。 2. 请假信息管理:查看全部员工请假申请,搜索筛选请假记录,审核请假申请并填写回复。 3. 考勤信息管理:录入、编辑、删除员工考勤数据,按年月统计员工出勤相关信息。 4. 薪资信息管理:录入员工每月薪资数据,维护底薪、绩效、奖金、扣款等薪资记录。 5. 薪资异议处理:查看员工提交的薪资异议申请,审核申请内容,填写处理回复。 6. 系统管理:维护首页轮播图,发布系统公告,查看系统操作日志。

81,108

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧