风行天下

JAVA太极
posts - 4, comments - 10, trackbacks - 0, articles - 55
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Struts的多模块设计

Posted on 2005-08-17 09:03 风太少 阅读(1161) 评论(5)  编辑  收藏

Struts在1.1以后的版本引入了模块(Module)的概念,克服了1.0的并行开发所遇到的问题。但是模板的规划往往又是比较麻烦,如果不注意,可能适得其反,影响你的开发速度。下面我们看看如何去规划一个对模块的Struts项目。

首先我们需要建立一个web的项目,接下来就要进行目录规划。如下图:

1 首先确定项目的模块,如此项目中包含两个模块:mFirst和mSecond,当然还有缺省模板。

2 本例子中考虑到使用XDoclet自动生成Struts配置和校验文件,所以有些特殊性。在WEB-INF下建立两个目录mFirst和mSecond,用于模块配置文件的存放。同时建立merge目录,并包含相应的模块目录,主要存放XDoclet生成Struts配置文件所需要的合并文件。模板的java源码和测试代码也分别存放,这样便于管理。为了包含某些不允许从浏览器端直接访问的jsp文件,我们在WEB-INF下同时建立webpages目录,该目录下同时包含模块目录,主要存放各个模块的受限文件。

3 本例中为了集成方便,所有编译后的代码均存在同一目录下(WEB-INF\classes),编译后的测试代码同样存在同一目录下。

4 经过以上的设置,为XDoclet生成配置文件提供了方便,我们的原则是同一个模块只有一个配置文件(struts-config.xml)和校验文件(validation.xml)。

5 接下来我们只需在web.xml中进行模块声明即可,其他信息请参考struts的sample。
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/mFirst</param-name>
<param-value>WEB-INF/mFirst/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/mSecond</param-name>
<param-value>WEB-INF/mSecond/struts-config.xml</param-value>
</init-param>

6 完成这些信息以后,我们要注意一些事情:
struts-config.xml文件中的Controller声明,由于我们将模板的jsp文件隐藏到WEB-INF目录下,而不是在根目录下直接建立模板目录,所以必须设置forwardPattern,详细信息请参考Struts文档。请在每个模块的struts-config.xml文件中添加以下代码,在本例中为:
<controller forwardPattern="/WEB-INF/webpages/$M$P"/>
在每个模块的properties资源文件中可能都有配置Struts默认的出错信息,因为这些模块都是独立的。

7 接下来就是模块的之间的切换问题,因为在现时过程必须需要解决的问题。其实很简单,如果你想使用项目下绝对路径(包含模块目录信息),只需将forward的contextRelative属性值设置为true即可,这样模块之间切换也很容易实现。
<forward contextRelative="true" name="success"
path="/mSecond/second.do" redirect="false"/>

8 接下来就是你的代码啦,可能你要在编码中适当地考虑到项目模块之间的关系。

总结:多模块设计不太难,但是你也的考虑周全点,这样会给你的开发带来方便。在IntelliJ IDEA下,虽然在模块比较多的情况下目录很乱,通过设置excluded,让你的目录更整洁,这样就可以关注你的模块。在有些情况下,取消excluded,这样你有可以把握项目全局。


评论

# re: Struts的多模块设计  回复  更多评论   

2005-09-26 13:47 by angel
请问楼主是否有多模块应用的例子,
若有且方便,烦请发一份给我,越简单越好。
谢谢!
oaohome1996@163.com

# re: Struts的多模块设计  回复  更多评论   

2006-01-08 15:59 by Kaywa
能发份多模块的示例给我吗, 多模块老是做不出来, 挺郁闷的

谢谢!

swpnik@gmail.com

# re: Struts的多模块设计  回复  更多评论   

2006-02-21 12:54 by smallfox007
我也想要多模块设计的例子 能否发给我!smallfox007@hotmail.com

# re: Struts的多模块设计  回复  更多评论   

2006-08-02 14:49 by 水止风扬
struts-examples 就是个好例子

# re: Struts的多模块设计[未登录]  回复  更多评论   

2007-05-06 16:57 by h
是否可以把工程的目录展示一下??
如果可以给我一份
heliyun03061138@163.com

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问