1、<struts-config>  元素

<struts-cofnig> 元素是 Struts 配置文件的根元素。<struts-config> 元素有 8 个子元素。在 Struts 配置文件中,必须按照它的 DTD 指定的先后顺序来配置 <struts-config> 元素的各个子元素,如果颠倒了这些子元素在配置文件中的顺序,在 Struts 应用启动时就会生成 XML 解析错误。
    它的DTD定义如下:

1
2
3
<!ELEMENT struts-config(
data-sources?,form-beans?,global-exception?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)
)>

配置时要按照上面的顺序。

2、 <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 类的完整类名(类的包名也包含在内),该属性是必需的
1
2
3
<form-beans >
    <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" />
</form-beans>

如果配置动态 ActionForm Bean ,还必须配置 <form-bean> 元素的 <form-property> 子元素。 <form-property> 元素用来指定表单字段,它有四个属性。

<form-property> 元素的属性
属性 描述
className 指定和 <form-property> 元素对应的配置类,默认值为 org.apache.struts.config.FormPropertyConfig
initial 以字符串的形式设置表单字段的初始值。如果没有设置该属性,则基本类型的表单字段的默认值为 0 ,对象类型的表单字段的默认值为 null
name 指定表单字段的名字。该属性是必需的
type 指定表单字段的类型。如果表单资源为 Java 类,必须给出完整的类名。该属性是必需的。
1
2
3
4
5
6
7
8
<form-beans >
   <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" />
   <form-bean name="userForm" type="org.apache.struts.DynaActionForm">
   <form-property name="firstName" type="java.long.String"></form-property>
   <form-property name="lastName" type="java.long.String"></form-property>
   <form-property name="age" type="java.lang.Integer" initial="18"></form-property>
   </form-bean>
 </form-beans>

3、<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
1
2
3
4
5
6
7
8
<strong><global-exception>
 <exception
   key="global.error.invalidlogin"
   path="/security/signin.jsp"
   scope="request"
   type="netstore.framework.exception.InvalidLoginException"
 />
</global-exception>   </strong>

4、 <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

例如:

1
2
3
4
<global-forwards>
    <forward name="forward1" path="/Action1.do"></forward>
    <forward name="forward2" path="/JSP2.jsp"></forward>
</global-forwards><span style="font-family:SimSun;"> </span>

如果JSP1.jsp把请求转发给Action1可以<html:link forward="forward1">/或者 <logic:forward name="forward1"/>
如果Action1的excecute()方法把请求转发给JSP2.jsp的话可以这样:return(mapping.findForward("forward2"));

5、<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 属性匹配的请求转发路径。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<action-mappings >
  <!-- input 验证失败时的转发路径 -->
  <!-- path请求访问的Action的路径 -->
  <!-- <forward>定义请求转发的路径 -->
  <!--   path指明调用者(JSP)能通过中心控制器ActionServlet找到该Action  -->
    <action
         path="/HelloWorld"
         type="com.yourcompany.struts.action.HelloAction"
         name="HelloForm"
         scope="request"
         validate="true" 
         input="/hello.jsp">
      <forward name="SayHello" path="/hello.jsp" />
    </action>
</action-mapping>

工作原理:
            这段代码表明,如果用户的请求的URI为"HelloWord.do",那么Struts框架会把请求转发给Hello.Action;与HelloAction关联的表单为:HelloForm,它位于request范围。Struts框架会首先在配置文件中检索匹配的<form-bean>元素:

1
2
3
<form-beans >
    <form-bean name="HelloForm" type="com.yourcompany.struts.form.HelloForm" />
</form-beans>

再把请求转发给HelloAction之前,先会调用HelloForm的validate()方法,如果表单验证失败则把请求转发给<action>元素的 
input属性指定的hello.jsp文件。

对应的hello.jsp文件如下:

1
2
3
4
5
6
<html:form action="/HelloWorld.do" focus="userName">
<bean:message key="hello.jsp.promt.person"/>
<html:text property="userName" maxlength="16" size="16"></html:text>
<html:submit property="submit" value="Submit"></html:submit>
<html:reset></html:reset>
</html:form>

6、<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 类。

1
2
3
4
<controller contentType="tex/html";charset="UTF-8"
  locale="true"
  processClass="CustomRequestProcessor"
/>

7、 <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 属性匹配。

如:<bean:message key="hello.jsp.page.hello"/>调用
           <bean:message key="hello.jsp.page.hello" bundle="images">指定bundle

<message-resources parameter="com.yourcompany.struts.ApplicationResources1" />配置
           <message-resources parameter="com.yourcompany.struts.ApplicationResources2" key="images" />配置
             hello.jsp.page.hello=Hello com.yourcompany.struts.ApplicationResources1.2定义

 10  <plug-in> 元素

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

属性 描述
className 指定 Struts 插件类。插件类必需实现 org.apache.struts.action.PlugIn 接口
1
2
3
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

11 配置多应用模块

    Struts 1.1 支持多应用模块,即同一个应用包含多个子应用,每个子应用可以处理相关的一组功能。 所有的子应用都共享同一个 ActionServlet 实例,但每个子应用都有单独的配置文件。把应用划分成多个子应用模块包含一下步骤:
(1)  为每个子应用创建单独的 Struts 配置文件。
(2)   在 web.xml 的 ActionServlet 的配置代码中添加每个子应用信息。

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

1
2
3
4
5
6
7
8
<init-param>
      <param-name>config</param-name><!--参数名  -->
      <param-value>/WEB-INF/struts-config.xml</param-value><!--文件名  -->
</init-param>
<init-param>
    <param-name>config/application2</param-name>
    <param-value>/WEB-INF/struts-module2.xml</param-value>
</init-param>

第二个<init-param>的名字必须以"config/"开头。子模块之间的切换有两种方式: 
   1、使用<forward>元素,全局或者局部的。但是它的contexRelative的属性应该设置为true.如:

1
2
3
4
5
6
<forward name="toModule2"
  contexRelative="true"
  path="/module2/index.do"
  redirect="true"
>
</forward>

2.使用org.apcahe.struts.actions.SwitchAction类

1
2
3
4
5
<action-mapping>
 <action path="/toModule"
         type="org.apache.struts.actions.SwitchAction"
 />
</action-mapping>

struts-config.xml的配置的更多相关文章

  1. Struts框架中struts-config.xml文件配置小结

    弄清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义 如下: ...

  2. Spring Web工程web.xml零配置即使用Java Config + Annotation

    摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Conf ...

  3. 学习Struts--Chap03:struts.xml常用配置(基础)

    1.package属性 name:包名 用来唯一的指定一个package.package可以扩展,当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的pac ...

  4. JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  5. mzy,struts学习(二):struts.xml的配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  6. SSH web.xml文件配置

    启动一个WEB项目的时候, WEB容器会去读取它的配置文件web.xml web.xml中配置的加载优先级:context-param -> listener -> filter -> ...

  7. struts2在web.xml中配置详情

    web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...

  8. Spring+Struts+Mybatis+Shiro整合配置

    Jar包

  9. Spring介绍及配置(XML文件配置和注解配置)

    本节内容: Spring介绍 Spring搭建 Spring概念 Spring配置讲解 使用注解配置Spring 一.Spring介绍 1. 什么是Spring Spring是一个开源框架,Sprin ...

随机推荐

  1. iframe 自适应内容高度

    在使用iframe的时候,会出现iframe不能随着内容的高度自动改变的情况,下面就介绍一种可以自适应高度的办法.<br/> <pre> <iframe id=" ...

  2. Linux集群

    集群的起源: 集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发.由于主要用于科学工程计算,所以这些系统并不为大家所熟知.直到Linux集群的出现,集群的概念 ...

  3. 老李推荐:第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源

    老李推荐:第5章6节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 初始化事件源   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试 ...

  4. 老李分享:HTTP协议之请求和响应

    老李分享:HTTP协议之请求和响应   HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.fo ...

  5. win8如何显示文件后缀名

    按快捷键[WIN+X]然后点击[文件资源管理器]   进入我的电脑后点击菜单栏的[查看]   查看下面有一个[文件扩展名]把前面那个勾,勾上就可以显示后缀名了.   同样的道理取消勾就是隐藏后缀名. ...

  6. 【Android】XML文件的解析

    1.首先我们可以在res包路径下创建一个raw包,然后在raw下创建一个email.xml 文件,并修改其内容如下: <?xml version="1.0" encoding ...

  7. node压力测试

    压力测试 ab测试(ApacheBench); 介绍: 这是apache提供的压测工具; 使用: 启动node服务; 我用的XAMPP,进入bin文件夹,打开命令行,执行下面命令: // -n: 总请 ...

  8. TDD 中关于mock一些理解

    最近在写代码的UT时case注意到: 在写某个类的test suit时,如果这个类既有组合(Composition),又有聚合关系(Aggregation). 组合关系(Composition):部分 ...

  9. 使用Block传值

    使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButto ...

  10. Linux学习(一)

    Linux系统 1.组成部分 1.1内核负责的功能 1.1.1:系统内存管理 内存管理即管理物理内存和虚拟内存 (通过硬盘实现的,即swap space),长时间为被访问的内存块会被放到虚拟内存中,当 ...