您所在的位置:开发 > Java > Struts的模块使用实例

Struts的模块使用实例

2007-11-08 09:20 心酸果冻 BlogJava 字号:T | T
一键收藏,随时查看,分享好友!

本文介绍模块分配工作中,如何从当前的模块换到另一个模块的两种实现方法,供大家参考!

AD:

【引自心酸果冻的博客】在使用Struts框架时,每个请求都由Action去处理,并且还要在struts-config.xml中加以设定,这样以来做小项目还行,在大型网站的开发中,有很多小组负责不同的模块,如果每一个小组要对一个struts-config.xml进行设定,将会导致struts-config.xml的版本控制问题。

您可以为每个小组分配不同的struts-config.xml设定文件,方法是在ActionServlet参数的config参数后面加上后缀,如果是config/admin,那么相应的配置文件的名字就是:struts-config-admin,他们的后缀名字必须对应,这样才能映射上。

例如,我们可以把后台处理分配一个小组,设定具体代码如下所示:web.xml

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/conf/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/admin</param-name>
<param-value>/WEB-INF/conf/struts-confg-admin.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

config/admin:指定了admin模块的所使用的配置文件是struts-config-admin.xml,现在负责后台模块的开发人员只要管理自己的开发文档设定就行了,就像前面所说的一样,当ActionServlet收到请求时,它是根据模块你所指定的后缀,进行处理是哪个模块的请求。

例如:http://localhost:8080/strutsmodel/admin/admin.do

这个URL,表示请求由strutsmodel工程的admin环境的admin.do来处理这个请求。这样以来前台和后台就分明了,各自开发各自的,各自管理自己的配置文件,达到松耦合的目的。

当ActionServlet请求接收请求,它判断URL中相对与context的前缀,例如上例中的admin,于是就知道应该使用admin模块。下面是struts-config-admin.xml:

……
<action
path="/admin"
type="org.zhoudq.webapp.action.AdminAction" >
<forward name="admin" path="/admin.jsp" />
</action>
……

这样以来,所有的path设定将自动被加上login前缀,例如必须使用以下的路径才可以正确的请求到AdminAction:

http://localhost:8080/strutsmodel/admin/admin.do

在模块中的Action在查找forward时,都是以所在模块,查找对应的struts-confg-XXX.xml的,例如上面的AdminAction在查找forward时,则会查找struts-config-admin.xml中的forward元素,也就是说,模块中的forward对象的查找都是相对于模块的路径的,而不是相对与环境上下文。

那么我们模块分配工作几已经搞定了,各个小组可以分别开工了,但是问题来了,那么如何从当前的模块换到另一个模块呢?

当您的项目分作很多个模块时,在使用者点某个链接时,您有两个方法可以在模块之间切换。

一、方法一

是使用相对与环境上下文的路径进行forward转发,您可以在当前的struts-config-XX.xml如下设定,例如是:struts-config-admin.xml中加入:

<global-forwards> 
<forward
name="switchModuleToFront"
contextRelative="true"
path="/front/login.do"
redirect="true"/>
</global-forwards>

这个是全局可以找到的forward中设定的,下面是在action元素中设定如何转发模块,代码如下:

……
<action
path="/admin"
type="org.zhoudq.webapp.action.AdminAction" >
<forward 
name="admin"
contextRelative="true"
path="/front/login.do"
redirect="true"/>
</action>
……

上面这种配置就是通过forward元素转换到相应的模块,下面我们看另一种方法吧!

二、方法二

这种方法是我们通过配置Struts的一个特定的类SwitchAction,就能实现上面的要求了。并且需要两个参数:

1、prefix:用来指定模块的后缀名称

2、page:用来指定你的资源路径。

例如:

……
<action-mappings>
<action
path="/switch"
type="org.apache.struts.actions.SwitchAction"/>
</action-mappings>
……

例如:http://localhost:8080/strutsmodel/switch.do?prefix=/admin&page=/admin.do

这个是访问我们后台模块的admin.do资源。模块化解决了我们开发中的不少问题吧!希望能帮助您解决一些问题。

【相关文章】

【责任编辑:火凤凰 TEL:(010)68476606】



分享到:

  1. 彻底透视CDN痛点,互联网老兵聊聊CDN的那些事儿!
  2. 3行Python代码完成人脸识别

热点职位

更多>>

热点专题

更多>>

读书

网管员必读—网络应用
本书是一本介绍当前主流计算机网络应用技术的工具图书,全面总结了当前最主流、最基础的计算机网络应用,包括局域网和互联网应用

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院