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类来实现子应用之间的切换。