`
tianjun309
  • 浏览: 358265 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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> 元素用来配置多个 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 实例的存放范围,可选值包括 request 和 session ,此项的默认值为 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 Bean 在 request 或 session 范围内的属性 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 的存在范围,可选值为 request 和 session 。默认值为 session
type
指定 Action 类的完整类名
unknown
如果此项为 true ,表示可以处理用户发出的所有无效的 Action URL 。默认值为 false
validate
指定是否要先调用 ActionForm Bean 的 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> 元素用来配置 Resource Bundle , Resource 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.xml 的 ActionServlet 的配置代码中添加每个子应用信息。
(3)        采用 <forward> 元素或 SwitchAction 类来实现子应用之间的切换。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics