铁手剑谱

上善若水
数据加载中……
Struts秘籍之第1段:第2.4式:多配置文件

第2.4式. 使用多个Struts配置

问题

你想要将一个大型的struts-config.xml文件分为多个小文件,以便改善组织和更易维护,特别是在团队开发的过程中。

动作要领

将一个struts-config.xml分解为多个配置文件。每一个都必须是良构的,并且能过通过struts-config XML DTD的校验。将这些文件作为ActionServlet在web.xml中的初始化参数config的参数值引用,如Example 2-9。

Example 2-9. 多配置文件 (单模块)

 

<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/struts-config.xml,
      /WEB-INF/struts-config-2.xml
    
</param-value>
  
</init-param>
  
<load-on-startup>1</load-on-startup>
</servlet>

当ActionServlet被载入时, Struts 将多个文件在内存中合并成一个单一的文件。

动作变化

对那些不是最细微的应用而言,struts-config.xml文件会趋于变得大而笨重。许多应用可能具有数以百计的action。将这个文件结合CVS使用,那么团队中的开发人员就会访问相同的文件。

Struts 1.1 引入了对多配置文件的支持。每一个配置文件都必须是一个有效的XML 文件并且必须符合struts-config XML DTD。在可以在web.xml中将这些文件声明为ActionServlet的初始化参数config的值。你可以将这些文件指定为逗号分隔的路径列表。运行时,这些文件会在内存中合并成一个文件。如果出现重复元素,比如具有相同的name属性的两个不同的form bean 声明,则最后一个读入的配置优先。

因为只是使用多配置文件并不意味着必须要使用Struts modules。事实上,你对一个模块也可以使用多配置文件。在上面的方案中,config元素的param-name子元素的值对ActionServlet规定了默认模块的Struts 配置文件的路径。附加模块是通过config/module-name的param-name值规定的。Example 2-10 展示了一个Struts ActionServlet声明,其中具有一个默认模块和两个附加模块。默认模块是用两个配置文件,module1只使用一个配置文件,而module2使用3个配置文件。

Example 2-10. 多配置文件(多模块)

 

<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/struts-default-config.xml,
      /WEB-INF/struts-default-config-2.xml
    
</param-value>
  
</init-param>
  
<init-param>
    
<param-name>config/module1</param-name>
    
<param-value>
      /WEB-INF/struts-module1-config.xml
    
</param-value>
  
</init-param>
  
<init-param>
    
<param-name>config/module2</param-name>
    
<param-value>
      /WEB-INF/struts-module2-config.xml,
      /WEB-INF/struts-module2-config-2.xml,
      /WEB-INF/struts-module2-config-3.xml
    
</param-value>
  
</init-param>
  
<load-on-startup>1</load-on-startup>
</servlet>

 

如果你是团队开发,可以考虑基于功能区域、用例、或者使用场景分解配置文件。每一个团对称员都可以集中于他们的职责领域而不用关心其他部分。

相关招式

第2.5式会详细讲解使用Struts module的细微之处。

第1.8式如何自动产生struts 配置文件。

posted on 2005-05-13 10:53 铁手 阅读(3601) 评论(6)  编辑  收藏 所属分类: JavaStruts系列

评论

# re: Struts秘籍之第1段:第2.4式:多配置文件 2005-05-17 11:36 hufan

难得的好文!正在学习struts,受益匪浅
期待续篇
  回复  更多评论    

# re: Struts秘籍之第1段:第2.4式:多配置文件 2005-05-19 10:47 ddx

对于多模块的JSP提交,怎么处理.action="/module1/login"显示出错?能讲将吗?
  回复  更多评论    

# re: Struts秘籍之第1段:第2.4式:多配置文件 2005-05-19 13:51 铁手

1,注意前缀的产生规则
2.使用Struts1.2
3.参见下一动作2.5式
  回复  更多评论    

# Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

本系列源改编自O'Reily的Strus Cookbook
[引用提示]阿泠引用了该文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
  回复  更多评论    

# re: Struts秘籍之第1段:第2.4式:多配置文件 2005-12-09 11:24 bigzhu

有个疑问
多个配置文件中如果有名字冲突的情况,Struts如何处理呢?

  回复  更多评论    

# re: Struts秘籍之第1段:第2.4式:多配置文件[未登录] 2008-09-25 11:03 东东

.action="/module1/login.do"试试
  回复  更多评论    

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


网站导航: