概述
Struts 2用配置文件(struts.xml)初始化它的资源。这些资源包括:
拦截器---用于预处理和后处理请求的拦截器
Action类---用于调用业务逻辑处理和数据访问代码的Action类
结果---可以用JavaServer Pages, Velocity 和 FreeMarker模板预览的结果
在运行时,一个程序只有一个配置。这个配置是在运行前由一个或者多个的xml文件定义而成的,包括默认的struts.xml文件。可以配置的元素有:packages,namespaces, includes, actions, results, interceptors, 和 exceptions。
Struts.xml是Struts2 框架的核心配置,它要放在web程序的classpath中。
Struts 2 配置文件的特性:
Struts.xml允许被拆分成几个小的文件,然后可以根据需要引进要包含的配置文件。例如:
<struts>
.....
......
<include file="file1.xml"/>
<include file="file2.xml"/>
.....
.....
</struts>
你甚至可以将struts-plugin.xml文件放在一个JAR包里,它会自动被加载到程序中。这有助于程序员开发自配置的组件。
如果你想要使用其它框架如Freemaker和Velocity,这些模块也可以放到classpath中然后从classpath加载。这样开发人员就可以将所有的模块打包进一个JAR文件里。
Struts.xml文件结构
先看一下一个简单的struts.xml文件。
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE strutsPUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"value="false" />
<constant name="struts.devMode"value="true" />
<package name="com.stuqbx.helloworld.action"namespace="/action" extends="struts-default">
<action name="HelloWorld"class="com.stuqbx.helloworld.action. HelloWorld">
<result>/pages/HelloWorld.jsp</result>
</action>
<!-- Add actions here -->
</package>
<!-- Add packages here -->
</struts>
Struts.xml是由Struts2.0 DTD定义的(DTD(Document Type Definition)用于定义文档的合法性。它定义了文档应该有哪些元素及其属性,还有其他一些约束性规则。 DTD语言定义的文档类型是SGML家族的标记性语言(包括SGML,XML,HTML))。Struts 2.0 DTD定义了struts.xml的结构和元素信息。附Struts 2.0 DTD文件。
<!-- Strutsconfiguration DTD. Use the following DOCTYPE <!DOCTYPE struts
PUBLIC "-//Apache SoftwareFoundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">-->
<!ELEMENT struts(package|include|bean|constant)*>
<!ELEMENT package(result-types?, interceptors?,
default-interceptor-ref?,default-action-ref?, global-results?,
global-exception-mappings?,action*)>
<!ATTLIST packag
name CDATA #REQUIRE
extends CDATA #IMPLIE
namespace CDATA #IMPLIE
abstract CDATA #IMPLIE
externalReferenceResolver NMTOKEN #IMPLIE
>
<!ELEMENT result-types(result-type+)>
<!ELEMENT result-type (param*)>
<!ATTLIST result-typ
name CDATA #REQUIRE
class CDATA #REQUIRE
default (true|false) "false
>
<!ELEMENT interceptors(interceptor|interceptor-stack)+>
<!ELEMENT interceptor (param*)
<!ATTLIST intercepto
name CDATA #REQUIRE
class CDATA #REQUIRE
>
<!ELEMENT interceptor-stack(interceptor-ref+)>
<!ATTLIST interceptor-stac
name CDATA #REQUIRE
>
<!ELEMENT interceptor-ref(param*)>
<!ATTLIST interceptor-re
name CDATA #REQUIRE
>
<!ELEMENTdefault-interceptor-ref (param*)>
<!ATTLIST default-interceptor-re
name CDATA #REQUIRE
>
<!ELEMENT default-action-ref(param*)>
<!ATTLIST default-action-re
name CDATA #REQUIRE
>
<!ELEMENT global-results(result+)>
<!ELEMENTglobal-exception-mappings (exception-mapping+)>
<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>
<!ATTLIST actio
name CDATA #REQUIRE
class CDATA #IMPLIE
method CDATA #IMPLIE
converter CDATA #IMPLIE
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST para
name CDATA #REQUIRE
>
<!ELEMENT result(#PCDATA|param)*>
<!ATTLIST resul
name CDATA #IMPLIE
type CDATA #IMPLIE
>
<!ELEMENT exception-mapping(#PCDATA|param)*>
<!ATTLIST exception-mappin
name CDATA #IMPLIE
exception CDATA #REQUIRE
result CDATA #REQUIRE
>
<!ELEMENT include (#PCDATA)>
<!ATTLIST includ
file CDATA #REQUIRE
>
<!ELEMENT bean (#PCDATA)>
<!ATTLIST bea
type CDATA #IMPLIE
name CDATA #IMPLIE
class CDATA #REQUIRE
scope CDATA #IMPLIE
static CDATA #IMPLIE
optional CDATA #IMPLIE
>
<!ELEMENT constant (#PCDATA)>
<!ATTLIST constan
name CDATA #REQUIRE
value CDATA #REQUIRED
>
如果程序的功能不依赖于struts.xml可以将它彻底删除掉。有一些配置是可选的如:注释(annotations), web.xml启动参数(web.xml startupparameters), 和 变化的URL映射规则(alternate URL mapping schemes)。还有一些配置是需要struts.xml文件的支持的如:全局结果(global results), 异常处理(exception handling), 以及自定义拦截器栈(the custom interceptor stacks)。
Struts.xml分析
<struts>标签是整个struts.xml的根。它之下还包含package,include, bean和constant标签。
1. package标签
Package用来将actions, results, resulttypes, interceptors, and interceptor-stacks等组成一组并分成一个逻辑单元。每个package是多个Action、多个拦截器、多个拦截器引用的集合。Package和object类似,可以被继承,被子package重载(覆盖)。
Package用来组合具有相同属性的配置如相同的拦截器栈或者相同的命名空间。
属性
|
是否必须
|
描述
|
值
|
name
|
yes
|
用于其他package引用的唯一标识
|
必须唯一
|
extends
|
no
|
继承其他package的配置(在此之前配置的package)
|
要被扩展的包名
|
namespace
|
no
|
提供从URL到package的映射
|
例如:在两个namespace属性分别为pack1和pack2包中,访问的URL就应该是?/webApp/pack1/my.action和?/webApp/pack2/my.action
|
abstract
|
no
|
描述此package是否是abstract的(不能定义action)
|
true/false
|
注:配置文件是按顺序从头开始处理加载的,所以扩展package所引用的package必须在此之前就定义好的。
配置示例:
<strut>
<!--struts2的action必须放在一个指定的包空间下定义 -->
<package name="default"extends="struts-default">
<!-- 定义处理请求URL为login.action的Action -->
<action name="login"class="com.stuqbx.helloworld.action.Login">
<!-- 定义处理结果字符串和资源之间的映射关系 -->
<resultnameresultname="success">/success.jsp</result>
<resultnameresultname="error">/error.jsp</result>
</action>
</package>
</struts>
2. include标签
include节点是struts2中组件化的方式。可以将每个功能模块独立到一个xml配置文件中,然后用include节点引用。它只有一个属性file,指定要引用的xml文件。这些引用的xml文件具有和struts.xml文件相同的结构。引用方式如下 :
<struts>
<include file="invoices-config.xml"/>
<include file="admin-config.xml"/>
<include file="reports-config.xml"/>
</struts>
在include时,顺序很重要,因为配置信息是include之后才生效的。
另外,有一些文件是隐式include的,这些文件有:struts-default.xml和struts-plugin.xml。这两个文件都包含默认的result types, interceptors, interceptor stacks,packages的配置也包含了web程序运行环境的配置信息(这些信息也可以在struts.properties中配置)。所不同的是,struts-default.xml提供了struts2的核心配置,而struts-plugin.xml提供了相关插件的配置信息。每个JAR插件都应该包含有一个struts-plugin.xml文件,他们在启动时被加载。
3. bean标签
大部分的程序都不需要扩展bean配置。Bean元素提供了class属性,用来指定用来创建和操作的Java类。一个bean可以被框架容器创建并注入到框架的内部对象中,或者被注入到静态方法中。
第一种用法,对象注入,一般带有type属性,它告诉容器这个对象实现了那个接口。
第二种用法,值注入,允许不是容器创建的对象接收框架传来的常量。但是,用来值注入的对象必须定义成静态属性。
属性
|
是否必须
|
描述
|
class
|
yes
|
Bean class的名字
|
type
|
no
|
类实现的主要java接口
|
name
|
no
|
Bean的唯一名字;必须在指定相同type的bean中唯一
|
scope
|
no
|
Bean的有效范围;必须是default, singleton, request, session, thread中的一个
|
static
|
no
|
是否注入静态方法;当type指定时,不能为true
|
optional
|
no
|
这个bean是否是可选的
|
配置示例:
<struts>
<bean type="com.stuqbx.web.bean.ObjectFactory" name="factory"
class="com.stuqbx.web.bean.MyObjectFactory" />
...
</struts>
4. constant标签
Constant有两个重要的应用:
用来重新配置最大上传文件大小或者struts框架是否应该处于devMode(= development mode)模式。
用来指定在多个实现给定type的bean中应该选择哪一个。
Constants可以在多个文件中声明。默认的,constants是以下面的顺序搜索的,之后的覆盖之前的。
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
在struts.properties文件中,每个条目都被认为是一个常量。在web.xml中,任何FilterDispatcher的初始化参数都是以常量被加载的。
属性
|
是否必须
|
描述
|
name
|
yes
|
常量的名字
|
value
|
yes
|
常量的值
|
Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
配置示例:
<struts>
...
<constant name="struts.custom.i18n.resources"value="messages" />
<constant name="struts.devMode"value="true" />
</struts>
以上指定了资源文件的放置在classes目录下,基本名是messages,则在classes目录下您就应该放置类似messages_zh_CN.properties,message_en.properties名的文件。并且指定struts的模式是devMode(=development mode)模式。
分享到:
相关推荐
Struts 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架。在 Struts 应用程序中,`struts-config.xml` 文件是核心配置文件,它定义了应用的行为、控制器(Actions)、数据源(Form Beans)...
"Struts2 中 Struts.xml 配置文件详解" Struts2 中的 Struts.xml 配置文件是 Struts2 框架的核心配置文件,用于定义应用程序的行为和结构。在 Struts.xml 文件中,我们可以定义 package、action、interceptor、...
struts--config.xml详解
struts1 中 web.xml 配置详解 struts1 框架是一种基于 Java 语言的 Web 应用程序开发框架,它提供了一个灵活的、可扩展的框架来开发基于 Web 的应用程序。在 struts1 框架中,web.xml 文件是必不可少的配置文件之一...
Struts.xml文件是Apache Struts 2框架的核心配置文件,它用于定义应用程序的行为、Action映射、结果页面、拦截器等关键组件。在深入讲解struts.xml之前,我们先来了解与之相关的struts.properties文件。 struts....
综上所述,`struts.xml`和`struts.properties`是Struts 2框架的两个重要配置文件,它们共同决定了应用程序的行为和运行时的属性。理解并熟练配置这两个文件对于开发和维护Struts 2应用至关重要。在实际开发中,应...
### Struts struts-config.xml配置详解 #### 一、引言 在Java Web开发领域,Struts框架一直是构建MVC架构应用的重要工具之一。而`struts-config.xml`配置文件则是Struts应用的核心配置文件,它负责管理Struts应用中...
Struts的配置文件通常命名为struts-config.xml,它是整个Struts应用的核心配置文件,通过定义一系列的XML元素来设定框架的不同功能和行为。下面将详细介绍struts-config.xml中8个主要配置元素的功能和使用方法。 1....
韩顺平视频配套struts-config.xml配置详解.txt
### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...
第一行的DOCTYPE声明指定了Struts2配置的DTD(文档类型定义),它告诉解析器如何解析XML文件。这里使用的DTD是Struts 2.0版本的。 2. **struts标签**: `<struts>`是整个配置文件的根元素,所有其他配置都包含在...
### Struts_config.xml详解 #### 一、概述 在Java Web开发中,Struts框架作为MVC模式的一个经典实现,提供了强大的功能支持。Struts框架的核心配置文件`struts-config.xml`是整个应用的关键组成部分之一,它定义了...
Struts2是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。与Struts1相比,Struts2采用了拦截器(Interceptor)机制,这使得它更灵活、更强大。`struts.xml`...
Struts-config.xml 配置文件详解 Struts-config.xml 是 Struts 框架的主要配置文件,用于配置 Struts 应用程序的各种设置。在该文件中,可以配置数据源、Form Bean、Action 和插件等信息。下面是 Struts-config.xml...
Struts2的Struts.properties配置文件详解 Struts2是一个基于MVC模式的Web应用程序框架,它提供了一个名为Struts.properties的配置文件,该文件用于配置Struts2的各种参数和设置。下面将对Struts.properties配置文件...
The org.apache.struts2.config.Configuration implementation class org.apache.struts2.config.Configuration接口名 struts.configuration.files A list of configuration files automatically loaded by ...
struts-config.xml 文件详解 以下是一份完整的struts-config.xml文件,配置元素的说明详见注释.
`struts-config.xml`是Struts框架的核心配置文件,它定义了应用程序的行为和组件之间的交互。这个文件的主要目的是提供一个集中式的配置点,用于设置数据源、表单bean、异常处理、动作映射等关键元素。以下是每个...
Struts.xml文件是Apache Struts 2框架的核心配置文件,用于定义应用的MVC(Model-View-Controller)架构和动作映射。它为应用程序提供了一种声明式的方式来配置Struts2的行为,使得开发者能够控制请求如何被处理,...