服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jakarta struts应用的七个经验(2)


  3. 使用应用模块(application modules)
  
  struts 1.1的一个新特性是应用模块的概念。应用模块允许将单个struts应用划分成几个模块,每个模块有自己的struts配置文件,jsp页面,action等等。这个新特性是为了解决大中型的开发队伍抱怨最多的一个问题,即为了更好的支持并行开发允许多个配置文件而不是单个配置文件。
  
  注:在早期的beta版本中,该特性被称为子应用(sub-applications),最近的改名目的是为了更多地反映它们在逻辑上的分工。
  
  显然,当很多开发人员一起参加一个项目时,单个的struts配置文件很容易引起资源冲突。应用模块允许struts按照功能要求进行划分,许多情况已经证明这样更贴近实际。例如,假设我们要开发一个典型的商店应用程序。可以将组成部分划分成模块比如catalog(商品目录), customer(顾客), customer service(顾客服务), order(订单)等。每个模块可以分布到不同的目录下,这样各部分的资源很容易定位,有助于开发和部署。图1 显示了该应用的目录结构。
  
  
   jakarta struts应用的七个经验(2)(图一)
  
  图 1. 一个典型的商店应用程序的目录结构 
  
  
  
  注:如果你无需将项目划分成多个模块,struts框架支持一个缺省的应用模块。这就使得应用程序也可以在1.0版本下创建,具有可移植性,因为应用程序会自动作为缺省的应用模块。
  
  为了使用多应用模块功能,必须执行以下几个准备步骤:
  
  ? 为每个应用模块创建独立的struts配置文件。
  
  ? 配置web 部署描述符 web.xml文件。
  
  ? 使用org.apache.struts.actions.switchaction 来实现程序在模块之间的跳转.
  
  创建独立的struts配置文件
  
  每个struts应用模块必须拥有自己的配置文件。允许创建自己的独立于其他模块的action,actionform,异常处理甚至更多。
  
  继续以上面的商店应用程序为例,我们可以创建以下的配置文件:一个文件名为struts-config-catalog.xml,包含catalog(商品目录)、items(商品清单)、和其它与库存相关的功能的配置信息;另一个文件名为struts- config-order.xml, 包含对order(订单)和order tracking(订单跟踪)的设置。第三个配置文件是struts-config.xml,其中含有属于缺省的应用模块中的一般性的功能。
  
  配置web部署描述符
  
  在struts的早期版本中,我们在web.xml中指定struts配置文件的路径。好在这点没变,有助于向后兼容。但对于多个应用模块,我们需要在web部署描述符中增加新的配置文件的设定。
  
  对于缺省的应用(包括struts的早期版本),struts framework 在web.xml文件中查找带有config的元素,用于载入action mapping 和其它的应用程序设定。作为例子,以下的xml片断展现一个典型的元素:
  
  
   jakarta struts应用的七个经验(2)(图二)
  
  注:如果在现有的元素中找不到"config"关键字,struts framework将缺省地使用/web/struts-config.xml
  
  为了支持多个应用模块(struts 1.1的新特性),必须增加附加的元素。与缺省的元素不同的是,附加的元素与每个应用模块对应,必须以config/xxx的形式命名,其中字符串xxx代表该模块唯一的名字。例如,在商店应用程序的例子中,元素可定义如下(注意粗体字部分):
  
  
  jakarta struts应用的七个经验(2)(图三)
  
  第一个 元素对应缺省的应用模块。第二和第三个元素分别代表非缺省应用模块catalog 和 order。
  
  当struts载入应用程序时,它首先载入缺省应用模块的配置文件。然后查找带有字符串config/xxx 形式的附加的初始化参数。对每个附加的配置文件也进行解析并载入内存。这一步完成后,用户就可以很随意地用config/后面的字符串也就是名字来调用相应的应用模块。
  
  多个应用模块之间调用action类
  
  在为每个应用模块创建独立的配置文件之后,我们就有可能需要调用不同的模块中action。为此必须使用struts框架提供的switchaction类。struts 会自动将应用模块的名字添加到url,就如struts 自动添加应用程序的名字加到url一样。应用模块是对框架的一个新的扩充,有助于进行并行的团队开发。如果你的团队很小那就没必要用到这个特性,不必进行模块化。当然,就算是只有一个模块,系统还是一样的运作。

扫描关注微信公众号