当前位置:首页 > Struts2配置详解1 基本元素介绍
extends=\>
class=\>
class=\>
如果请求/database/mysql.action,框架将首先查找
/database名称空间,如果找到了,则执行mysql.action,如果没有找到,则在默认名称空间中继续查找。
如果请求/database/oracle.acion。框架将会在/database空间中查找oracle这个action,因为/database空间不存在oracle这个action,所以,默认空间的oracle将会被找到并被执行.
如果请求/oracle.action,框架将会在根名称空间(‘/’)中查找oracle.action,如果没有找到,则在到默认名称空间下去查找。
如果请求/mysql.action,框架则首先到根名称空间(‘/’)下去查找,因为没有根名称空间(‘/’)下没有mysql.action,所以,默认空间的mysql.action则会被执行。
这里需要注意的是,名称空间和文件系统的路径,具有多级目录不同,名称空间只有一个级别。例如,请求URL:/myspace/database/mysql.action,框架将首先在/myspace/database名称空间查找,如果没有找到,则直接到默认的名称空间去查找。框架并不会将名称空间解析为一系列的“文件夹”。
不同的包,可以定义相同的名称空间,但是同一个名称空间下,包名不能相同。,
5> 包含(include)配置
在一些大型项目中,为了降低项目的复杂度,便于团队成员分工协作,通常会将
项目划分为多个较小的模块,每个模块单独开发和管理。为此,Struts2提供了 include元素来解决这个问题。我们可以为每个模块单独提供一个配置文件,对其进行配置,然后在struts.xml中使用include这个元素来包含其他的配置文件。
Include元素只有一个必须的属性file,指定被包含文件的文件名。看一些
Struts2自带的showcase例子中的例子:
\
2.0//EN\\>
5
这是struts-char.xml的代码片段:
\
2.0//EN\\>
namespace=\> 这里要注意的是,每一个被包含的文件都必须和sruts.xml具有相同的格式,也 就是说,被包含的文件,本身也是完整的配置文件。也要按照struts-2.0.dtd中的定义。 由于Struts2是按照Web应用程序的CLASSPATH查找被包含的文件,所以,被包 含的文件通常都放在WEB-INF/classes目录下,和struts.xml一起。当然,你也可以将配置模块放在对应的Java包下,例如,如果将配置文件 struts-user.xml放在了包org.lessones.ch05下,在struts.xml文件中 包含struts-user.xml文件时,就需要写成: 6>拦截器(Intercept)配置: 拦截器允许你在action的执行前后插入代码执行。Struts2中的拦截器是功能很 强大的工具,它可以为action动态添加输入验证,对象组装,权限控制,日志记录等功能,而不需呀修改action. 要为action配置引用的拦截器,首先需要在interceptors元素中使用 interceptor元素定义拦截器,然后在action中使用interceptor-ref元素指定引用的的拦截器.interceptor有两个必须的属性:name和class,前者指定拦截器的名字,后者指定拦截器的完整类名。 假设我们要为UserAction配置两个拦截器logger和security,配置文件编写 如下:
6
class=\/> class=\/> 拦截器按照action引用拦截器的顺序执行。 如果一个action需要多个拦截器,引用他们也是一件麻烦事,我们可以将多个 拦截器组合在一起,组成一个拦截器栈,然后在action中直接调用拦截器栈就可 以了。 配置文件如下: class=\/> class=\/> 7 拦截器按照它们在拦截器栈中定义的顺序执行。 在引用拦截器时,Struts2并不区分拦截器和拦截器栈,所以,在定义拦截器时, 也可以引用其他的拦截器栈。 如果多个action都需要引用相同的拦截器栈,我们可以使用 default-interceptor-ref元素来定义一个默认的拦截器或者拦截器栈引用,这样,就不需要为每个action指定引用信息了。 定义默认的拦截器栈: class=\/> class=\/> 这里要注意的是,如果在一个action中定义了其他的拦截器的引用,那么这个 action将不再使用默认的拦截器的引用了。 如果action想要在默认拦截器引用的基础上添加新的拦截器,那么只能在 action中重新配置默认拦截器引用中的拦截器栈。 8 Struts2提供的默认配置文件struts-default.xml定义了默认的拦截器栈的引 用,对于大多数Web应用程序来说,已经够用了。 这里需要注意的是:拦截器栈都是在包中定义的,在一个包中不能引用其他包中定义 的拦截器,除非这两个包有继承关系. 9
共分享92篇相关文档