使用Struts框架的一个好处就是可以用外部配置文件声明的方式来指定应用程序的很多配置,这样就可以不用将很多信息硬编码到应用程序里面,这样大大的简化了开发的过程.因为可以对应用程序进行各种更改而不需要重新编译任何的代码.所以struts的启动是这样的:在启动应用程序的时候Struts加载配置文件,并且创建了一系列与文件中的设置相对应的配置对象.然后,Struts使用这些配置来引导操作.
Struts配置文件是在定义Struts的ActionServlet的使用时,在Web.xml部署描述符文件中指定的,如下:
<web-app>
………..
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
………..
</web-app>
通过声明名为config的Servlet初始化参数来指定Struts配置文件,config参数必须设置成您配置文件相对于WEB应用程序的路径中,这个路径在受到保护的/WEB-INF/目录下,所以,只能通过服务器端应用程序对其进行访问.
从1.1版开始,Struts支持多个配置文件的使用,这样配置设置可以分解为多个单独的文件,以便于开发人员小组同时研究一个应用程序,而不会出现配置文件的使用冲突,要指定多个配置文件,只需要列出每个配置文件,并且用逗号将配置文件隔开.
<init-param>
<param-name>
config
</param-name>
<param-value>
/WEB-INF/struts-config1.xml,
/WEB-INF/struts-config2.xml,
/WEB-INF/struts-config3.xml
</param-value>
</init-param>
Struts在加载配置文件的时候,如果文件有任何的重叠,后面加载的配置文件将覆盖前面配置文件中的设置.
除了支持多个配置文件外,Struts1.1之后还添加了对应用程序模块的支持.如下配置.
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/ModuleA</param-name>
<param-value>/WEB-INF/struts-config-A.xml</param-value>
</init-param>
<init-param>
<param-name>config/ModuleB</param-name>
<param-value>/WEB-INF/struts-config-B.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
上面分别定义了ModuleA和ModuleB两个模块的逻辑名称.对于模块配置文件,参数名称必须以config/开头,这样Struts才能识别它们.
Struts配置文件标记:
标记 |
说明 |
action |
用于将应用程序URL映射至请求指定的URL时,将执行的Action对象或者将其映射至要将其转发到的另外的一个URL |
action-mappings |
用于封装应用程序的一组操作 |
controller |
为Struts应用程序定义许多全局配置设置 |
data-source |
用于定义应用程序可以用来访问数据库或者类似资源的java数据源. |
data-sources |
用于封装应用程序的一组数据源 |
exception |
用于定义处理Action抛出的特定的异常的异常处理程序 |
form-bean |
用于定义一个FormBean并且为其指定逻辑名称 |
form-beans |
用于封装应用程序的一组FormBeans |
form-property |
用于定义动态FormBean的表单属性 |
forward |
用于定义URL的逻辑名称,这样,代码可以引用逻辑名称而无需引用URL本身 |
global-exception |
用于封装exception标记定义的,应用程序的一组全局异常处理程序 |
global-forwards |
用于封装forward标记定义的,应用程序的一组全局forward |
message-resources |
用于定义在查找具体化的字符串,消息和标签的时候Struts将使用的资源束 |
plug-in |
用于定义Struts在应用程序启动时加载和在应用程序关闭时卸载的插件. |
set-property |
用于定义一种属性,并且为其赋值 |
struts-config |
该标记为Struts配置文件的根标记,因此封装文件中的所有的其他的标志. |
1) action标记
action标记用于将应用程序URL映射至当请求指定的URL时将执行的Action对象,或者将URL映射至要将请求转发的另外一个URL.
使用action标记有三个方法:
① 使用type属性将org.apache.struts.action.Action子类映射至path属性指定的应用程序URL.
② path属性指定的URL匹配时,使用forward属性通过调用RequestDispatcher.forward()来指定要转发的URL.
③ path属性指定的URL匹配时,使用include属性通过RequestDispatcher.include()来制定要转发的URL.
属性 |
说明 |
必需 |
attribute |
用于指定请求范围或者会话范围的名称,与当前操作相关联的FormBean将以该名称存储.通常情况下,name属性指定的名称用于查找FormBean,然而,如果使用了本属性,name属性将被替代,只有指定了name属性,本属性才有效. |
否 |
className |
为当前Action定义指定要实例化的配置对象的全限定类名,默认值为org.apach.struts.config.ActionConfig |
否 |
forward |
如果当前Action映射路径匹配,则指定一个要转发到的相对于模块的URL.使用RequestDispacher.forward()执行转发.每次只能指定本属性,include和type属性这三者中的一个. |
否 |
input |
如果与当前Action关联的FormBean被设置要进行验证并且验证过程失败,则指定一个相对于模块的URL,控制权将交给该URL,只有指定了name属性,本属性才有效. |
否 |
name |
指定由form-bean标记定义的FormBean的逻辑名称,此逻辑名称将与当前的操作关联. |
否 |
path |
指定要映射到的相对于模块的URL |
是 |
parameter |
指定一个值,该值将作为通用配置参数在每次执行操作时,传递到type属性定义的Action对象 |
否 |
prefix |
指定填充当前Action的关联FormBean时,要添加到请求参数名称的前缀.因此,如果请求参数名为”username”并且prefix属性被设置为”search”,则将对FormBean调用一个名为setSearchUsername()的方法,只有指定了name属性,本属性才有效. |
|
roles |
指定一个允许访问当前Action的安全角色列表,以逗号分隔 |
否 |
scope |
指定范围(“请求”或者”会话”),此范围将与name属性一起作用于访问与该操作相关联的FormBean.只有指定了name属性,本属性才有效. |
否 |
suffix |
指定填充当前Action的关联FormBean时,要添加到请求参数名称的后缀,因此如果请求参数名字为”username”并且suffix属性被设置为”search”,则将对FormBean调用一个名为setUserNameSearch()的方法,只有指定了name属性,本属性才有效 |
否 |
type |
指定要与当前Action映射关联的org.apache.struts.action.Action的子类的全限定类名.每次只能指定本书性,forward和include属性这三者中的其中一个. |
否 |
unkown |
可设置成true或者false,表示是否将该操作设置为应用程序的默认操作.如果设置为true,此操作定义将处理任何与其他映射不匹配的应用程序URL,只有在每个模块中配置一个action定义是,才可以将其设置为true,默认为false. |
否 |
vlidate |
可以设置成true或者false,表示name属性指定的FormBean在执行当前Action之前是否调用validate()方法.只有指定了name属性,本属性才有效,默认是是true.(后来改成false了?) |
否 |
正如上面所说的,使用action标记有三种方法,使用举例:
① 定义一个全局异常处理程序
<action-mapping>
<action path=”/search” type=”com.yinhai.app.SearchAction”/>
</action-mapping>
这个例子使用type属性指定一个Action对象,该对象将在指定的路径匹配的时候被执行.
② 使用action标记的方法如下所示:
<action-mapping>
<action path=”/search” forward=”/search.jsp”/>
</action-mapping>
该例子使用了forward属性指定当前的路径匹配时,将通过使用RequestDispatcher.forward()转发”/search.jsp”URL.
③ 使用了action标记的第三种方法:
<action-mapping>
<action path=”/search” include=”/search.jsp”/>
</action-mapping>
该示例使用include属性指定当指定的路径匹配时,将通过使用RequestDispatcher.include()转发”/search.jsp”URL.
2) action-mappings标记
action-mappings标记用于封装应用程序的一组操作.该标记只是action的一个容器.举例说明:
<action-mappings>
<action path=”/search1” type=”com.yinhai.app.SearchAction”/>
<action path=”/search2” forward=”/search2.jsp”/>
<action path=”/search3” include=”/search3.jsp”/>
</action-mappings>
3) controller标记
controller标记用于为Struts应用程序定义许多全局配置设置.在Struts的早期版本中,许多全局配置设置时通过在Web.xml中指定Struts的ActionServlet的初始化参数来进行配置的.但是在Struts1.1之后添加了对应用程序模块的支持之后,这些设置被转移到Struts的配置文件当中,从而可以在每一个模块的基础上对其进行配置.
属性 |
说明 |
必需 |
bufferSize |
指定用于文件加载的输入缓冲的大小,默认为4096字节 |
否 |
className |
为当前的controller定义指定要实例化的配置对象的全限定类名.默认值为org.apache.struts.config.ControllerConfig |
否 |
contentType |
指定将每个HTTP相应设置的内容类型以及可选字符编码,请注意,此设置可以由Action,JSP或者转发请求的类似资源覆盖,默认值为”text/html” |
否 |
debug |
已经过时了,通过配置您的底层记录库来替代 |
否 |
forwardPattern |
指定forward标记的path属性以何种方式映射到URL $M 由该模块的前缀替换 $P 由选中的forward的path值替换 $$ 产生一个要使用的文字美元符号留作将来使用并将被无提示忽略 默认值是$M$P |
否 |
inputForward |
可以设置成true或者设置成false,表示action标记的input属性是否可以作为使用其路径的forward的名称处理.如果设置成false(默认值),action标记的input属性将作为实际路径使用.默认值为false |
否 |
locale |
可以设置为”true”或者”false”,表示用户会话中将是否存储java.util.Locale对象,默认值是true |
否 |
maxFileSize |
为文件上载指定最大空间(以字节为单位).此外,如果您在值的末尾添加K,M,或者G,则此空间将分别解释为千字节,兆字节或者千兆字节.默认值为250M |
否 |
memFileSize |
指定文件上载时要将储存在内存中最大空间,以字节为单位.此外如果您在值的末尾添加K,M,G,则此空间将分别解释为千字节,兆字节,千兆字节.高于此阀值的文件将写入磁盘.默认的值为256K |
否 |
multipartClass |
指定要用来处理文件上载的对象的全限定类名,默认的名称为org.apache.struts.upload.CommonsMultipartRequestHandler |
否 |
nocache |
可以设置成true或者false,表示HTTP标头是否可以被添加到每个响应中以禁用浏览器缓存,默认值为false |
否 |
pagePattern |
指定Struts的标记库的page属性以何种方式映射到URL $M 由该模块的前缀替换 $P 由选中的标记的page属性替换 $$ 产生一个要使用的文字美元符号($) 所有其他的$x 变量,留作将来使用并将被无忽略提示 默认值为$M$P |
否 |
processorClass |
指定将要用于此模块的RequestProcessor子类的全限定类名 默认名称为org.apache.struts.action.RequestProcessor |
否 |
temDir |
指定在文件上载过程中用来存储数据的临时目录 |
否 |
使用示例:
由于controller标记的很多属性都是可选的,因此有许多不同的方法来使用此标记.
<controller maxFileSize=”3M”/>
将文件上传的最大空间设置为3MB.
4) data-source标记
data-source标记用于定义java的数据源,您的应用程序可以使用此数据源来访问数据库或者类似的资源.使用嵌套的set-property标记配置此数据源.
属性 |
说明 |
必需 |
className |
为当前数据源定义指定要实例化的配置对象的全限定类名 默认名称为org.apache.struts.config.DataSourceConfig |
否 |
key |
指定将存储数据源的Servlet环境属性关键字,如果使用应用程序模块,模块前缀将追加该关键字,比如说$key ${prefix} 默认为常量org.apache.struts.Globals.DATA_SOURCE_KEY的内容 |
否 |
type |
为此数据源指定要实例化的对象的全限定类名,必需要实现javax.sql.DataSource |
否 |
举例:
<data-sources>
<data-source>
<set-property property=”driverClass” value=”org.postgresql.Driver”/>
</data-source>
</data-sources>
一般情况下,如果您没有定义多个数据源,则无需为data-source标记自身设置任何属性.您所需要做的事情就是使用嵌套的set-property标记配置您的数据源.set-property标记将用于在初始化数据源时调用数据源的某些设置值方法.
5) data-sources标记
data-sources标记用于封装应用程序的一组数据源,该标记只是data-source标记的容器.
6) exception标记
exception标记用于定义异常处理程序以处理Action抛出的特定的异常.此 功能使您可以为操作抛出的每种类型的异常指派不同的处理程序.
使用exception标记有两种方法.
① 通过在global-exceptions标记中包含exception标记来定义全局异常处理程序.全局异常处理程序应用于所有操作
② 通过在action标记下嵌套exception标记来定义特定操作的异常处理程序.特定操作的异常处理程序只适用于包含它的操作,并将覆盖同一目标异常的所有全局异常处理程序.
属性 |
说明 |
必需 |
bundle |
指定资源的Servlet环境属性的关键字,该资源束由message-resources标记定义,bundle标记将用于检索包含key属性指定的关键字的信息 |
否 |
className |
为当前异常定义指定要实例化的配置对象的全限定类名,默认名称为org.apache.struts.config.ExceptionConfig |
否 |
handler |
指定异常处理程序的全限定类名称 |
否 |
key |
指定此处理程序要使用的资源束消息关键字 |
是 |
path |
指定当此异常处理程序被触发时要重定向到的相对于模块的URL |
否 |
scope |
指定将用于访问此异常的org.apache.struts.action.ActionError对象的范围,请求,或者是会话 |
否 |
type |
指定异常处理程序所对应的异常类的全限定类名 |
是 |
举例:
① 定义一个全局异常处理程序
<global-exceptions>
<exception type=”com.yinhai.app.DateFormatException” key=”errors.date.format”
path=”/error.jsp”/>
</global-exceptions>
② 以下是使用exception标记的第二种方法:
<action-mappings>
<action path=”/search” type=”com.yinhai.app.SearchAction”>
<exception type=”com.yinhai.app.DateFormatException”
key=”errors.date.format”
path=”/searchError.jsp”/>
</action>
</action-mappings>
第二个例子定义了一个特定操作的异常处理程序,此异常处理程序只适用于包含它的操作,并将覆盖同一目标异常的全局异常处理程序.
7) form-bean标记
form-bean标记用于定义一个FormBean,并且为之指派逻辑名称,Struts使用FormBean在提交表单并且在显示表单之前填充表单.
使用form-bean标记有两种方法,如下所示:
① 通过指定包含type属性的具体类来定义一个具体的FormBean.这要求创建org.apache.struts.action.ActionForm类的一个子类并且创建所有的值获取和值设置的方法.
② 通过使用type属性定义动态FormBean以指定类型为org.apache.struts.action.DynaActionForm或者其子类的FormBean,使用这种方法,您可以使用form-property标记在配置文件中指定FormBean的每个字段.
属性 |
说明 |
必需 |
className |
为当前FormBean定义指定要实例化的配置对象的全限制类名,默认名称为org.apache.struts.config.FormBeanConfig |
否 |
dynamic |
已经过时了…. |
否 |
name |
指定FormBean的逻辑名称(…attribute) |
是 |
type |
指定FormBean类的全限定类名 |
是 |
使用例子:
第一种方法:
<form-beans>
<form-bean name=”logonForm”
type=”org.apache.struts.action.DynaActionForm”>
<form-property name=”username”
type=”java.lang.String”/>
<form-property name=”password”
type=”java.lang.String”/>
</form-bean>
</form-beans>
第二种方法:
<form-beans>
<form-bean name=”logonForm”
type=”com.yinhai.app.logonForm”/>
</form-beans>
上面第一个实例定义了其属性由嵌套的form-property标记指定的动态FormBean.请注意,type属性被设置为org.apache.struts.action.DynaActionForm,这告诉Struts,FormBean的属性石在配置文件中定义的.
8) form-beans标记
form-beans标记用于封装应用程序的一组FormBeans,该标记只是FormBean标记的容器
相关推荐
3. **配置文件**:`struts-config.xml`是Struts1.x的核心配置文件,用于定义Action、ActionForm、ActionForward等元素,以及数据源和国际化资源等。 二、ActionForm与数据绑定 1. **ActionForm**:ActionForm对象...
### Struts1.x 标签详解 #### 一、引言 Struts 是 Apache Jakarta 的一个著名开源项目,旨在为构建基于 Java 的 Web 应用程序提供一个强大的框架。Struts 提供了大量的标签来帮助开发者简化开发过程。本文将详细...
5. **Struts-config.xml**:配置文件,包含了ActionMapping、ActionForm、数据源等设置。 **I18N国际化:** 在Struts1.x中,实现I18N(Internationalization)主要是通过资源文件(如*.properties)来管理不同语言...
**Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...
**Struts1.x框架详解:** Struts1.x 是Apache软件基金会下的一个项目,它的出现是为了解决JSP和Servlet在大型项目中的组织和管理问题。它提供了一个规范化的架构,使开发者能够更有效地分离业务逻辑、视图和控制层。...
这个例子虽然简单,但涵盖了 Struts 1.x 开发的基本流程,包括环境搭建、ActionForm 和 Action 类的编写以及配置文件的设置。接下来,你可以继续探索更多关于 Struts 的高级特性,如拦截器、国际化支持等,以进一步...
- **struts-config.xml**: 这是 `Struts 1.x` 的核心配置文件,定义了动作映射(Action Mapping)、表单bean、数据源等。通过这个文件,你可以明确地指定每个HTTP请求应如何映射到特定的 `Action` 类。 ### 4. 请求...
#### 二、Struts 配置文件详解 **1. `struts-config.xml` 文件解析** `struts-config.xml` 是 Struts 1.x 中的核心配置文件,用于定义应用程序的行为和结构。主要包括以下几个部分: - **Form Beans 定义**:用于...
### Struts1.x教程知识点详解 #### 一、Struts框架概述 Struts是一个开源的MVC(Model-View-Controller)框架,最初由Tangent Systems公司开发,并于2000年捐赠给Apache Software Foundation,成为Apache Jakarta...
### Struts 1.x 在MVC架构中的角色与工作流程详解 #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计...
### Struts1多模块多配置文件的开发流程详解 #### 一、引言 在大型项目的开发过程中,为了更好地组织代码结构,提高系统的可维护性和扩展性,通常会采用多模块的设计模式。对于使用Struts1框架进行开发的项目而言,...
通过本实例,我们可以了解到 Struts 1.x 框架的基本使用流程和关键组件,包括如何创建 ActionForm、Action 以及配置文件等。这为后续深入学习 Struts 提供了良好的基础。 - **ActionForm**:封装用户输入数据,通常...
### Struts 1.x 学习笔记 #### 一、MVC 概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用程序开发中非常常见。它将应用程序分为三个核心部分: 1. **模型(Model)**...
而`struts-config.xml`配置文件则是Struts应用的核心配置文件,它负责管理Struts应用中的各种组件配置。本文将详细介绍`struts-config.xml`配置文件的关键组成部分及其作用。 #### 二、文件结构 `struts-config.xml...
### Struts配置文件详解 #### 一、概述 Struts框架是Java Web开发中的一个重要工具,它使用MVC(Model-View-Controller)设计模式来组织应用逻辑,从而提高代码的可维护性和可读性。Struts框架的核心是通过两个XML...
用AJAX+STRUTS写的登陆程序,并且附加了超级详尽的源码注释,...各个配置文件 各个JSP文件 ... 总之,就是整个AJAX+STRUTS项目登陆程序打包,可以在ECLIPSE下导入,在TOMCAT5.X下运行(这需要将下载包当中的sql先执行)
在Struts1.3版本中,`struts-config.xml`配置文件扮演着至关重要的角色,它是Struts框架的核心配置文件,定义了控制器的行为和应用的结构。 `struts-config.xml`配置详解: 1. **全局常量配置**:此部分用于定义...
- **配置文件(struts-config.xml)**:定义应用的行为规则,如Action映射等。 **3. 开发环境搭建** - **MyEclipse**:一款集成开发环境,支持多种语言开发,特别适合Java Web项目。 - **数据库连接**:使用JDBC...
### 配置文件详解 #### 1. web.xml配置 在`web.xml`中配置Struts2过滤器是非常重要的一步,因为这会直接影响到Struts2框架的初始化和请求处理流程。以下是文件中的关键部分: ```xml <filter-name>Struts2 ...