struts配置文件详解

<zt>http://blog.csdn.net/FutureInHands/archive/2006/11/15/1385681.aspx

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

·1。org.apache.struts.config包

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

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

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

org.apache.struts.config.ModuleConfig在Struts框架中扮演了十分重要的角色。它是整个org.apache.struts.config包的核心,在Struts应用运行时用来存放整个Struts应用的配置信息。如果有多个子应用,每个子应用都会有一个ModuleConfig对象。ModuleConfig和Struts配置文件的根元素<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>元素用来配置多个ActionFormBean。<form-beans>元素包含零个或多个<form-bean>子元素。每个<form-bean>元素又包含多个属性。

<form-bean>元素的属性

属性描述

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

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

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

如果配置动态ActionFormBean,还必须配置<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指定在ResourceBundle中描述该异常的消息key

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

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

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

bundle指定ResourceBundle

·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关联的ActionFormBean在request或session范围内的属性key。例如,假定FormBean存在于request范围内,并且此项为“myBean”,那么request.getAttribute(“MyBean”)就可以返回该Bean的实例。此项为可选项。

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

forward指定转发的URL路径

include指定包含的URL路径

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

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

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

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

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

scope指定ActionFormBean的存在范围,可选值为request和session。默认值为session

type指定Action类的完整类名

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

validate指定是否要先调用ActionFormBean的validate()方法。默认值为true

提示:<action>元素的forward、include和type属性相互排斥,也就是说只能设置其中的一项。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。如果在Action和JSP网页中也设置了内容类型和字符编码,将会覆盖该设置

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

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

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

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

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

·9。<message-resources>元素

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

<message-resources>元素的属性

属性描述

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

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

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

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

parameter指定ResourceBundle的消息资源文件名。

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

·10。<plug-in>元素

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

<plug-in>元素的属性

属性描述

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

·11。配置多应用模块

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

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

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

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

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

相关推荐