在使用Struts框架时每个请求都由Action去处理并且还要在strutsconfigxml中加以设定这样以来做小项目还行在大型网站的开发中有很多小组负责不同的模块如果每一个小组要对一个strutsconfigxml进行设定将会导致strutsconfigxml的版本控制问题
您可以为每个小组分配不同的strutsconfigxml设定文件方法是在ActionServlet参数的config参数后面加上后缀如果是config/admin那么相应的配置文件的名字就是strutsconfigadmin他们的后缀名字必须对应这样才能映射上
例如我们可以把后台处理分配一个小组设定具体代码如下所示webxml
action
orgapachestrutsactionActionServlet
config
/WEBINF/conf/strutsconfigxml
config/admin
/WEBINF/conf/strutsconfgadminxml
debug
detail
config/admin指定了admin模块的所使用的配置文件是strutsconfigadminxml现在负责后台模块的开发人员只要管理自己的开发文档设定就行了就像前面所说的一样当ActionServlet收到请求时它是根据模块你所指定的后缀进行处理是哪个模块的请求
例如
这个URL表示请求由strutsmodel工程的admin环境的admindo来处理这个请求这样以来前台和后台就分明了各自开发各自的各自管理自己的配置文件达到松耦合的目的
当ActionServlet请求接收请求它判断URL中相对与context的前缀例如上例中的admin于是就知道应该使用admin模块下面是strutsconfigadminxml
……
path=/admin
type=orgzhoudqwebappactionAdminAction >
……
这样以来所有的path设定将自动被加上login前缀例如必须使用以下的路径才可以正确的请求到AdminAction
在模块中的Action在查找forward时都是以所在模块查找对应的strutsconfgXXXxml的例如上面的AdminAction在查找forward时则会查找strutsconfigadminxml中的forward元素也就是说模块中的forward对象的查找都是相对于模块的路径的而不是相对与环境上下文
那么我们模块分配工作几已经搞定了各个小组可以分别开工了但是问题来了那么如何从当前的模块换到另一个模块呢?
当您的项目分作很多个模块时在使用者点某个链接时您有两个方法可以在模块之间切换
一方法一
是使用相对与环境上下文的路径进行forward转发您可以在当前的strutsconfigXXxml如下设定例如是strutsconfigadminxml中加入
name=switchModuleToFront
contextRelative=true
path=/front/logindo
redirect=true/>
这个是全局可以找到的forward中设定的下面是在action元素中设定如何转发模块代码如下
……
path=/admin
type=orgzhoudqwebappactionAdminAction >
name=admin
contextRelative=true
path=/front/logindo
redirect=true/>
……
上面这种配置就是通过forward元素转换到相应的模块下面我们看另一种方法吧
二方法二
这种方法是我们通过配置Struts的一个特定的类SwitchAction就能实现上面的要求了并且需要两个参数
. prefix用来指定模块的后缀名称
. page用来指定你的资源路径
例如
……
path=/switch
type=orgapachestrutsactionsSwitchAction/>
……
例如
;page=/admindo
这个是访问我们后台模块的admindo资源模块化决绝了我们开发中的不少问题吧希望能帮助您解决一些问题嘿嘿加油吧……