本人遇到的关于namespace的一点小问题总结

看下我的配置文件:
struts.xml配置文件如下:
test.xml配置文件如下:
 
首先说一下本人遇到的一个低级问题:
       在struts.xml文件中,运用文件包含其他模块xml,如果按上面图示,会出现请求的action(如 http://localhost:8080/itnetwork/menus.action)与action处理返回结果错误的情况(说明:不是没结果,是返回的不是期望的页面),归根到底都是本人没有理解struts2寻找action的流程!汗~~
        原因总结:注意上图红色的标识,因为在struts.xml中有默认的action,而且是配置了namespace="/",而test.xml中又没有配置namespace="/"!所以test.xml默认的namespace是"",根据struts2响应请求的机制,应该是先在namespace="/"中查找对应球、请求的action,如果没找到,就到namespace=""中查找! 所以本人在struts.xml中配置了默认的index action,也就是可以在namespace="/"中查找到action处理,就不会再去test.xml中namespace=""中查找了!
引用网上的资料
使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
Package的可以使用的属性:
属性
 是否必须
 说明
 
name 是 Package的表示,为了让其他的package引用
 
extends 否 从哪个package继承行为
 
namespace 否 参考Namespace配置说明
 
abstract 否
 定义这个package为抽象的,这个package中不需要定义action

由于struts.xml文件是自上而下解析的,所以被继承的package要放在继承package的前边。Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Menu和Help action,但是事项方式各有不同。Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/wrewrter/archive/2009/11/19/4825105.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我出一道关于Neutron namespace应用的应用题: 假设你正在为一家互联网公司构建一个OpenStack云平台。该公司需要为不同的业务部门提供独立的网络隔离环境,并希望这些网络彼此隔离。你决定使用OpenStack的Neutron模块来实现这一目标,并使用namespace来创建独立的网络隔离环境。为了满足该公司的需求,你需要完成以下任务: 1. 创建三个独立的namespace,分别用于业务部门A、B和C。 2. 在每个namespace创建一个虚拟网络,并分配IP地址段。 3. 配置路由器,使得三个虚拟网络之间可以相互通信。 请问,你应该如何使用OpenStack的Neutron模块和namespace来完成上述任务? 提示:可以使用命令行工具neutron和ip来完成任务。可以参考以下步骤: 1. 创建namespace:ip netns add <namespace_name> 2. 创建虚拟网络:neutron net-create <network_name> --tenant-id <tenant_id> 3. 创建子网:neutron subnet-create <network_name> <subnet_cidr> --name <subnet_name> --tenant-id <tenant_id> 4. 将虚拟网络与namespace关联:neutron net-update <network_id> --router:external=False --provider:network_type=vxlan --provider:segmentation_id=<segmentation_id> --shared=True 5. 配置路由器:neutron router-create <router_name> 6. 将虚拟网络和子网连接到路由器:neutron router-interface-add <router_name> <subnet_id> 7. 配置路由器的静态路由:ip netns exec <namespace_name> ip route add <destination_cidr> via <router_ip> 8. 配置namespace的默认路由:ip netns exec <namespace_name> ip route add default via <router_ip>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值