配置Action

包和命名空间 Struts2使用包来组织Action,因此,需要将Action放在包下定义。 定义Action需要使用<package../>下的<action>子元素来完成,而每个<package>元素配置一个包。

Struts框架的核心组件就是Action,拦截器等,Struts框架使用包来管理Action和拦截器等。每个包就是多个Action,多个拦截器,多个拦截器引用的集合; 注:配置Action是必须制定name属性,这个属性是引用该包的唯一标示,除此之外,还可以指定一个可选的extends属性,extends属性的值必须是另一个包的name属性,表示让该报继承另一个包。子包可以继承父包中的action,拦截器,拦截器栈等配置; Struts2还提供了一个抽象包,,意味着该不能包含action定义 可以在<package../>元素中添加abstarct="true"指定该包为抽象包。 定义包配置是可以选用如下属性: name:必须属性; extends:可选属性 namespace:可选属性 abstract:可选属性

注:因为Struts2的配置文件是从上到下处理的,所以父包应该在子包前面定义。

struts-default是Struts2框架的默认包;该包下包含了大量结果类型定义,拦截器定义,拦截器引用定义,这些定义是普通Action的基础,所以开发者定义的package通常应该基础struts-default包。

命名空间namespace:主要是为了处理同一个web应用中包含同名的Action的情景。

列如: 在<package>中如下: <package name="Demo" namespace="/book' extends="struts-default"> <action name="*"> <result>/WEB-INF/content/{1}.jsp</result> </action> </package>

则在浏览器下需要这样访问: http://localhost:8080/web应用名/book/jsp名 (jsp不加后缀.jsp)

<package name="Demo" namespace="/"...>为根命名空间。

默认命名空间和根命名空间的区别: 假如在URL为/book/loginForm,则会先在/book的命名空间下寻找名为loginForm的jsp,如果没有找到,就会到默认命名空间中找。 而根命名空间只处理根命名空间下的Action。

如果请求为/loginForm,则会先在根命名空间中找,找不到再在默认命名空间中找。

命名空间只有一个级别,即先在你的URL的命名空间中找,找不到再在默认命名空间中找,不能因为你的命名空间有多层而返回上一级找。

转载于:https://my.oschina.net/tyILOVE/blog/880163

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值