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. PHPSTORM下安装XDEBUG

    本文不是教程安装XDEBUG,具体的请自行百度(我也是按照百度上的一步步来的). 以下纠正几点目前我安装时查看播客的不对之处: 1. Setting > PHP > DEBUG > ...

  2. Dashboard登录成功后 RuntimeError: Unable to create a new session key.

    openstack按照官网docs部署horizon后,使用admin账号密码登录,但网页提示未知错误. 查看/var/log/httpd/error_log 提示这个:RuntimeError: U ...

  3. stl1

    #include<iostream> #include<map> #include<string> using namespace std;   map<st ...

  4. js正则表达test、exec和match的区别

    test的用法和exec一致,只不过返回值是 true false. 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用. 最近开发遇到一些 ...

  5. WCF消息压缩

    对于WCF应用来说,传输前压缩请求消息和回复消息,不但可以降低网络流量,也可以提高网络传输的性能 一.消息压缩方案 二.用于数据压缩与解压缩组件 三.用于消息压缩与解压的组件 四.用于对请求/回复消息 ...

  6. EDP转换IC NCS8803:HDMI转EDP芯片

    HDMI-to-eDP Converter w/ scaler1 Features    Embedded-DisplayPort (eDP) Output    1/2/4-lane eDP @ 1 ...

  7. 漫谈PHP代码规范

    前言 虽说PHP是世界上最好的语言,但是写出来的PHP代码却往往不是最美观的.究其原因,可能正式因为PHP简单易上手,适合快速迭代的特性,导致了我们沉浸在迅速完成需求迭代的窃喜中,却忘记了规范性.忽略 ...

  8. "!function",自执行函数表达式

    如题为自执行函数表达式.在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明.下面2个括弧()都会立即执行 (function ...

  9. ThinkPHP框架前后台的分页调用

    一般ThinkPHP框架在底层给开发者提供了一个基本的分页类Page.class.php里面规定了Page类的一些基本的参数和结构. 2.应用分页 1> 调取文件use Think\Page; ...

  10. 前馈神经网络-反向传播(Back Propagation)公式推导走读

        构造:输入神经元个数等于输入向量维度,输出神经元个数等于输出向量维度.(x1=(1,2,3),则需要三个输入神经元)   一 前向后传播   隐层: