Strust中的多模块多配置文件技术

发表于:2007-07-04来源:作者:点击数: 标签:
Strust中的多模块多配置文件技术 1、Struts1.1中的多模块 (1)多模块概述 为了彻底解决单模块多配置文件所可能带来的共享配置项目的冲突,在Struts1.1版中又引进了多模块(Module)的概念。一个模块就是一个独立的子系统,实现者可以在其中进行任意所需的项
Strust中的多模块多配置文件技术
1、Struts  1.1中的多模块
(1)多模块概述
为了彻底解决单模块多配置文件所可能带来的共享配置项目的冲突,在Struts  1.1版中又引进了多模块(Module)的概念。一个模块就是一个独立的子系统,实现者可以在其中进行任意所需的项目配置,同时又不必担心所配置的项目可能会和其它的配置文件所可能发生的冲突。因为我们在前面的内容中讲过,ActionServlet是将不同的模块信息保存在不同的ModuleConfig对象中的。
(2)子模块的组成
应用模块允许将单个Struts应用划分成几个独立的子模块,每个模块允许有自己的Struts配置文件、JSP页面、Action类和FormBean类等等,从而更好地支持并行开发
Struts中的模块,实际上就类似于Web程序中的子目录。例如某一模块的名称为GroupBuy,则在其对应的子配置文件struts-config-GroupBuy.xml文件中的所有path默认即为/GroupBuy/xxx.do。要使用子模块的功能,需要进行以下的各项准备工作:
 为每个子模块准备一个自己的配置文件struts-config-XXXX.xml(其中XXXX为该子模块的名称,这与前面的介绍的多配置文件一样)。
 配置web.xml文件以通知ActionServlet控制器表明在本Web应用中存在那些子模块
 各个子模块可以共享web.xml文件和资源信息(这里是applicatonResources.properties)文件中的配置项目的内容。
  
2、多模块时的web.xml文件
在Web.xml配置文件中增加其它的子模块文件
 在WEB应用部署描述符中定义ActionServlet与多模块相关的参数
 config——逗号相隔的应用上下文相对的配置文件的路径(针对每个模块可以有一个或多个配置文件),这些配置文件包含了STRUTS  WEB应用的缺省模块的设置。缺省值为  /WEB-INF/struts-config.xml;
 config/${module}  ---逗号相隔的应用上下文相对的配置文件的路径(针对每个模块可以有一个或多个配置文件),这些配置文件包含了STRUTS  WEB应用的${module}模块的设置。这个模块的前缀是/${module},多个config/${module}参数定义了多个STRUTS  WEB应用模块;
 决定采用多个模块以后,你需要将这些信息告诉ActionServlet控制器,这需要在web.xml文件中进行如下的配置。下面是一个典型的多模块Web.xml文件中的各个子配置项目文件的配置说明:

        action
        netbook.NetBookActionServlet    
        
            config            /WEB-INF/struts-config.xml,/WEB-INF/struts-config_search.xml
        
      
        
      config/GroupBuy  
      /WEB-INF/struts-config-GroupBuy.xml
        

        
    CharsetName
    GBK
  
        1
    

 配置要点:
要配置多个模块,你需要在原有的一个(在Struts  1.1中将其对应的模块称为缺省模块)的基础之上,增加其它的模块所对应的
其中表示为config/XXXX的形式,其中XXXX为对应的模块名,中还要指定模块对应的配置文件(一般名称为struts-config-XXXX.xml)。
3、GroupBuy子模块的配置文件struts-config-GroupBuy.xml内容

                    "-//Apache  Software  Foundation//DTD  Struts  Configuration  1.1//EN"
                    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

    

                  
                                             
                                  
                           
                             
                     
    

    

         CCESS"    PATH=" GroupBuy gotoIndex.htm? />  
     http://localhost:8080/test/switchdo.do?prefix=/test1&page=/login3.do
则调用struts-test1-config.xml下的/login3.do

http://localhost:8080/test/switchdo.do?prefix=&page=/login1.do
则调用struts-config.xml下的/login1.do

http://localhost:8080/test/switchdo.do?prefix=&page=/login.do
则调用struts-config.xml下的/login.do
(3)实际上,一个传统的办法可以有效解决。即
                        input="/index.jsp"
                        name="registrationForm"
                        path="/registration"
                        type="com.i505.struts.registration.action.RegistrationAction"> 
                          </HTML:LINK&NBSP;&NBSP;ACTION="..>

原文转自:http://www.ltesting.net