Struts配置文件

Struts框架在启动时会读入其配置文件,根据它来创建和配置各种Struts组件。Struts配置文件使得开发者可以灵活地组装和配置各个组件,提高了应用软件的可扩展性和灵活性,可以避免硬编码。Struts配置文件是基于XML的。

 

·1org.apache.struts.config

  Struts1.1中加入了org.apache.struts.config包。在Struts应用启动时,会把Struts配置文件中的配置信息读入到内存中,并把他们存放在cofnig包中相关JavaBean类的实例中。

org.apache.struts.config包中的每一个类都和Struts配置文件中特定的配置元素对应。

Struts框架完成了对配置文件的验证和解析后,就把配置文件中的信息存放在这些类的实例中。这些类的实例可以充当配置信息的运行时容器,Struts组件可以方便地通过他们来获取配置信息。

org.apache.struts.config.ModuleConfigStruts框架中扮演了十分重要的角色。它是整个org.apache.struts.config包的核心,在Struts应用运行时用来存放整个Struts应用的配置信息。如果有多个子应用,每个子应用都会有一个ModuleConfig对象。ModuleConfigStruts配置文件的根元素<struts-config>对应。<struts-config>根元素中包含<form-bean><action><forward>等一系列子元素,因此ModuleConfig中包含了和每个子元素对应的配置类实例。

org.apache.struts.config.ConfigRuleSet类的功能不同于其他类,它包含了解析Struts配置文件所需要的一组规则。在应用启动时,该类负责构造org.apache.struts.config包中其他用于保存配置信息的JavaBean类的实例。

下面分别介绍Struts配置文件中每个元素的用法。

 

·2<struts-config>元素

<struts-cofnig>元素是Struts配置文件的根元素,和它对应的配置类为org.apache.struts.config.ModuleConfig类。<struts-config>元素有8个子元素。

Struts配置文件中,必须按照它的DTD指定的先后顺序来配置<struts-config>元素的各个子元素,如果颠倒了这些子元素在配置文件中的顺序,在Struts应用启动时就会生成XML解析错误。

 

·3<data-sources>元素

<data-sources>元素用来配置应用所需要的数据源。数据源负责建立和特定数据库的连接,许多数据源采用连接池机制实现,以便提高数据库访问性能。Java语言提供了javax.sql.DataSource接口,所有的数据源必须实现该接口。许多应用服务器和Web容器提供了内在的数据源组件,很多数据库厂商也提供了数据源的实现。

<data-sources>元素包含零个,一个或多个<data-source>子元素。<data-source>元素用于配置特定的数据源,它可以包含多个<set-property>子元素。<set-property>元素用于设置数据源的各种属性。

<data-source>元素的type属性用来指定数据源的实现类。开发者应该根据实际应用的需要来选用合适的数据源实现。

配置了数据源后,就可以在Action类中访问数据源。在org.apache.struts.action.Action类中定义了getDataSource(HttpRequest)方法,它用于获取数据源对象的引用。

也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过该值来标识特定的数据源。

 

·4<form-beans>元素

<form-beans>元素用来配置多个ActionForm Bean<form-beans>元素包含零个或多个<form-bean>子元素。每个<form-bean>元素又包含多个属性。

<form-bean>元素的属性

属性

描述

className

指定和<form-bean>元素对应的配置类,默认值为org.apache.struts.config.FormBeanConfig。如果在这里设置自定义的类,该类必须扩展FormBeanConfig

name

指定该ActionForm Bean的唯一标识符,整个Struts框架用该标识符来引用这个bean。该属性是必需的。

type

指定ActionForm类的完整类名(类的报名也包含在内),该属性是必需的

 

  如果配置动态ActionForm Bean,还必须配置<form-bean>元素的<form-property>子元素。<form-property>元素用来指定表单字段,它有四个属性。

<form-property>元素的属性

属性

描述

className

指定和<form-property>元素对应的配置类,默认值为org.apache.struts.config.FormPropertyConfig

initial

以字符串的形式设置表单字段的初始值。如果没有设置该属性,则基本类型的表单字段的默认值为0,对象类型的表单字段的默认值为null

name

指定表单字段的名字。该属性是必需的

type

指定表单字段的类型。如果表单资源为Java类,必须给出完整的类名。该属性是必需的。

 

·5<global-exceptions>元素

<global-exceptions>元素用于配置异常处理。<global-exceptions>元素可以包含零个或者多个<exception>元素。

<exception>元素用来设置Java异常和异常处理类org.apache.struts.action.ExceptionHandler之间的映射。

<exception>元素的属性

属性

描述

className

指定和<exception>元素对应的配置类。默认值为org.apache.struts.config.ExceptionConfig

handler

指定异常处理类。默认值为org.apache.struts.action.ExceptionHandler

key

指定在Resource Bundle中描述该异常的消息key

path

指定当异常发生时的转发路径

scope

指定ActionMessages实例的存放范围,可选值包括requestsession,此项的默认值为request

type

指定所需处理的异常类的名字。此项是必需的

bundle

指定Resource Bundle

 

·6<global-forwards>元素

<global-forwards>元素用来声明全局的转发关系。<global-forwards>元素由零个或者多个<forward>元素组成。<forward>元素用于把一个逻辑名映射到特定的URL。通过这种方式,Action类或者JSP文件无需要指定实际的URL,只要指定逻辑名就能实现请求转发或者重定向,这可是减弱控制组件和视图组件之间的耦合,并且有助于维护JSP文件。

<forward>元素的属性

属性

描述

className

<forward>元素对应的配置类,默认值为org.apache.struts.action.ActionForard

contextRelative

如果此项为true,表示当path属性以“/”开头时,给出的是相对于当前上下文的URL。此项的默认值为false

name

转发路径的逻辑名。此项是必需的

path

指定转发或重定向的URL。此项是必需的,必需以“/”开头。当contextRelative属性为false时,表示URL路径相对于当前应用(application-relative);当contextRelative属性为true时,表示URL路径相对于当前上下文(context-relative)

redirect

当此项为true时,表示执行重定向操作;当此项为false时,表示执行请求转发操作。此项默认值为false

 

·7<action-mappings>元素

<action-mappings>元素包含零个或者多个<action>元素。<action>元素描述了从特定的请求路径到相应的Action类的映射。

<action>元素中可以包含多个<exception><forward>子元素,他们分别配置局部的异常处理及请求转发仅被当前的Action所访问。

<global-exceptions>元素中定义的<exception>子元素代表全局的异常配置。在<global-forwards>元素中定义的<forward>子元素代表全局的请求转发。在不同位置配置<exception><forward>元素的语法和属性是一样的。

<action>元素的属性

属性

描述

attribute

设置和Action关联的ActionForm Beanrequestsession范围内的属性key。例如,假定Form Bean存在于request范围内,并且此项为“myBean”,那么request.getAttribute(“MyBean”)就可以返回该Bean的实例。此项为可选项。

className

<action>元素对应的配置元素。默认值为org.apache.struts.action.ActionMapping

forward

指定转发的URL路径

include

指定包含的URL路径

input

指定包含输入表单的URL路径。当表单验证失败时,将把请求转发到该URL

name

指定和该Action关联的ActionForm Bean的名字。该名字必需在<form-bean>元素中定义过。此项是可选项

path

指定访问Action的路径,它以“/”开头,没有扩展名

parameter

指定Action的配置参数。在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数

roles

指定允许调用该Action的安全角色。多个角色之间以逗号隔开。在处理请求时,RequestProcessor会根据该配置项来决定用户是否有调用Action的权限

scope

指定ActionForm Bean的存在范围,可选值为requestsession。默认值为session

type

指定Action类的完整类名

unknown

如果此项为true,表示可以处理用户发出的所有无效的Action URL。默认值为false

validate

指定是否要先调用ActionForm Beanvalidate()方法。默认值为true

 

提示:<action>元素的forwardincludetype属性相互排斥,也就是说只能设置其中的一项。forward属性的作用和org.apache.struts.actions.ForwardAction类相同。Include属性的作用和org.apache.struts.actions.IncludeAction类相同。

  如果在<action>元素中定义了局部的<forward>元素,它的优先级别高于全局的<forward>元素。

<Action>forward属性和<forward>子元素是两个不同的概念。Forward属性指定和path属性匹配的请求转发路径。

 

·8<controller>元素

<controller>元素用于配置ActionServlet

<controller>元素的属性

属性

描述

bufferSize

指定上载文件的输入缓冲的大小。该属性为可选项,默认值为4096

className

指定和<controller>元素对应的配置类。默认值为org.apache.struts.config.ControllerConfig

contentType

指定响应结果的内容类型和字符编码。该属性为可选项,默认值为text/html。如果在ActionJSP网页中也设置了内容类型和字符编码,将会覆盖该设置

locale

指定是否把Locale对象保存到当前用户的Session中。默认值为false

processorClass

指定负责处理请求的Java类的完整类名。默认值为org.apache.struts.action.RequestProcessor。如果把此项设置为自定义的类,那么应该保持该类扩展了org.apache.struts.action.RequestProcessor

tempDir

指定处理文件上传的临时目录。如果此项没有设置,将采用Servlet容器为Web应用分配的临时工作目录

nochache

如果为true,在响应结果中将加入特定的头参数:PragmaCache-ControlExpires,防止页面被存储在客户浏览器的缓存中。默认值为false

 

如果应用包含多个子应用,可以在每个子应用的Struts配置文件中配置<controller>元素。这样,尽管这些子应用共享同一个ActionServlet对象,但是它们可以使用不同的RequestProcessor类。

 

·9<message-resources>元素

<message-resources>元素用来配置Resource BundleResource Bundle用于存放本地化消息文本。

<message-resources>元素的属性

属性

描述

className

<message-resources>元素对应的配置类。默认值为org.apache.struts.config.MessageResourcesConfig

factory

指定消息资源的工厂类。默认值为org.apache.struts.util.PropertyMessageResourcesFactory

key

指定Resource Bundle存放在ServletContext对象中时采用的属性key。默认值为由Globals.MESSAGES_KEY定义的字符串常量。只允许有一个Resource Bundle采用默认的属性key

null

指定MessageResources类如何处理未知的消息key。如果此项为true,将返回空字符串。如果此项为false,将返回类似“???global.label.missing???”的字符串。该属性为可选项,默认值为true

parameter

指定Resource Bundle的消息资源文件名。

 

许多Struts客户化标签都通过bundle属性来指定Resource Bundle,标签的bundle属性和<message-resources>元素的key属性匹配。

 

·10<plug-in>元素

<plug-in>元素用于配置Struts插件。

<plug-in>元素的属性

属性

描述

className

指定Struts插件类。插件类必需实现org.apache.struts.action.PlugIn接口

 

·11。配置多应用模块

Struts 1.1支持多应用模块,即同一个应用包含多个子应用,每个子应用可以处理相关的一组功能。

所有的子应用都共享同一个ActionServlet实例,但每个子应用都有单独的配置文件。把应用划分成多个子应用模块包含一下步骤:

(1)       为每个子应用传见单独的Struts配置文件。

(2)       web.xmlActionServlet的配置代码中添加每个子应用信息。

(3)       采用<forward>元素或SwitchAction类来实现子应用之间的切换。







                                   
2005年04月10日 9:38 PM