`
cheng5259
  • 浏览: 61766 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

struts-config.xml详解

阅读更多

  ActionServlet中RequestProcessor对象的process()方法自动读取struts-config.xml

struts-config.xml是Struts的主要配置文件,在该文件中,可以配置数据源、form-bean、action和plug-in(插件)和资源文件的信息。其文件主要结构如下所示:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<data-sources>

<data-source>

</data-source>

</data-sources>

<form-beans>

<form-bean / >

</form-beans>

<global-forwards>

<forward / >

</global-forwards>

<action-mappings>

<action / >

</action-mappings>

<controller / >

<message-resources / >

<plug-in />
</struts-config>

       以上各元素必须是按照这个顺序的,若开发人员打乱顺序,很可能引起Struts容器启动时出错。

       当然struts-config.xml还有<display-name />、<description />和<icon />子元素,因为它们用得很少,在此不再赘述。只是讲述常用的子元素的配置。

1. data-sources
本节讲述子元素data-sources的配置,该元素可以配置一个或多个data-source元素,即数据源元素,可以通过<set-property>设置driverClass、url、user、password等属性。配置实例如下:

<data-source>

                            <!-- 所用的JDBC驱动类,必须-->

                            <set-property property="driverClass" value="com.mysql.jdbc.Driver"/>

                            <!-- 所用的JDBC的URL,必须-->

                            <set-property property="url" value="jdbc:mysql://localhost/test"/>

                            <!-- 同时打开的最小连结数,缺省值为1,可选-->

                            <set-property property="minCount" value="1"/>

                            <!-- 同时打开的最大连结数,缺省值为2,可选-->

                            <set-property property="maxCount" value="5"/>

                            <!-- 连结到数据库的用户名,必须-->

                            <set-property property="user" value="root"/>

                            <!-- 连结到数据库的密码,必须-->

                            <set-property property="password" value="root"/>

                   </data-source>

开发人员还可以设置Key(绑定在ServletContext上的DataSource实例的索引键,若不设定则缺省为Action.DATA_SOURCE_KEY,如果在应用程序中有多于一个的DataSource,则必须设置Key的值)、Description(关于DataSource的描述信息)、ReadOnly(如果设为true,则表示该连结是只读的,缺省为false)、LoginTimeout(创建连结的最大允许时间,以秒为单位)和AutoCommit(如果为true,则每次execute之后会强制回滚。缺省为true)属性。

在实际项目中,例如在Hibernate + Struts构建的系统中,一般使用Hibernate的hibernate.cfg.xml文件来配置数据源的信息。而在Hibernate + Struts + Spring构建的系统中,一般使用spring的配置文件(eg. applicationContext.xml)来配置数据源的信息。

2. form-beans
子元素form-beans用来配置绑定到Action的各个FormBean的实例。每个FormBean实例用form-bans的子元素form-bean来定义。form-bean又分普通的FormBan和动态FormBean。

(1)普通form-bean

普通FormBean需要定义一个JavaBean类,在form-bean元素中指定该类。普通form-bean元素的定义格式如下:

<form-bean name="FormBean的名称" type="FormBean对应JavaBean类的全路径"/>

Eg. <form-bean name="UserForm"

              type="com.amigo.struts.form.user.UserForm" />

对应的FormBean类一般是继承ActionForm类,例如下面的例子定义了一个UserForm,它具有userName和password两个属性。该类的代码如下:

package com.amigo.struts.form.user;

import org.apache.struts.action.ActionForm;

public class UserForm extends ActionForm {

         private static final long serialVersionUID = 1L;

        

         /** 用户名.*/

         private String userName;

        

         /** 密码. */

         private String password;

         public String getPassword() {

                   return password;

         }

         public void setPassword(String password) {

                   this.password = password;

         }

         public String getUserName() {

                   return userName;

         }

         public void setUserName(String userName) {

                   this.userName = userName;

         }

}

(2)动态form-bean

       动态form-bean不需要定义对应的javabean类,其元素都在struts-config.xml中定义。其type为:org.apache.struts.validator.DynaValidatorForm。下面的动态FormBean定义了userName和password属性,配置如下:

<form-bean name="UserForm" type="org.apache.struts.validator.DynaValidatorForm">

             <form-property name="userName" type="java.lang.String"/>

             <form-property name="password" type="java.lang.String"/>

</form-bean>

3 global-forwards
       global-forwards用于配置全局转发,struts首先会在<action-mappings>元素中找对应的<forward>,若找不到,则到全局转发配置中找。它包含0个或多个<forward/>元素,格式如下所示:

<forward name="唯一的名称" path="指向资源的相对路径"/>

Eg.

<global-forwards>

                   <forward name="failed" path="/error.jsp" />

                   <forward name="success" path="/ success.jsp" />

</global-forwards>

<forward/>元素还有一个redirect属性,其默认值为false,如果redirect设为true的时候,则用HttpServletResponse.sendRedirect()方法,否则用RequestDispatcher.forward()方法,缺省为false。

4 action-mappings
       该元素用于将Action元素定义到ActionServlet类中,它含有0到多个<action/>元素,其格式如下:

<action-mappings>

<action path="Action请求的相对路径"

type="该Action的对应类的全路径"

name="该Action绑定的FormBean"

<forward name="指定处理相应请求所对应的地址" path="相对路径"/>

</action>

</action-mappings>

       每个action子元素可包含一个或多个forward子元素。除了path、type和name属性外,action还具有如下属性:

l         scope:指定ActionForm Bean的作用域(session和request),缺省为session。(可选);

l         input:当Bean发生错误时返回的路径(可选);

l         classname:指定一个调用这个Action类的ActionMapping类的全名。缺省用org.apache.struts.action.ActionMapping(可选);

l         include:如果没有forward的时候,它起forward的作用(可选);

l         validate:若为true,则会调用ActionForm的validate()方法,否则不调用,缺省为true(可选)。

forward属性也是可选的。

 

属性集合:

attribute:
这个属性用来指定ActionForm保存到指定上下文时所使用的属性名。如果不指定attribute属性的值,将使用name属性的值作为保存时的属 性名。也就是说,attribute属性的默认值就是name属性的值。

className:
指定自定义的配置对象。这个配置对象必须是ActionMapping的子类。如果不对这个属性进行指定,那么将使用默认值org.apache.struts.action.ActionMapping。通过自定义的ActionMapping类,可以在Action的配置中增加自定义属性。
forward:
置处理用户请求的servlet或者其他的资源,例如jsp。如果指定了这个属性,那么type属性所指定的Action类就将会失去作用。严格的说, 每个<action>元素中,forward,include,type属性应该使用且只使用其中一个。
inpute:
指定在数据校验失败的时候所要返回的页面或者Action。这种校验只有当name属性不为空以及validate属性为true的时候才会进行。
name:
指定表单Bean(ActionForm)的名称。
path:
指定此Action所响应的用户请求的路径,这个属性是与模块相关的,并且以“/”为起始字符。另外,需要注意的是在这里不需要增加扩展名,如:.do
parameter:
这是一个保留的配置参数,可以利用这个参数传递一些特殊的信息。但对于某些特殊的Action类已经为这个属性指定了明确的含义。
prefix:
用于指定需要向ActionForm赋值的用户参数的前缀。这个参数只有在name属性不为空的时候才可以设置。
roles:
以逗号分隔的用户角色名列表。在Action中可以通过ActionMapping对象的实例来得到这里设置的角色信息。用于在系统中实现权限校验功能。
scope:
用于指定保存ActionForm的上下文范围。其取值为requestsession
suffix:
用于指定需要向ActionForm赋值的用户参数的后缀。这个参数只有在name属性不为空的时候才可以设置。
type:
用于指定处理用户请求的Action(org.apache.struts.action)之类的全路径名。如果指定了forward或者include属性,那么这个属性将不起作用。
unknow:
用于设置当前这个Action是否为当前模块的默认Action。当一个用户请求没有匹配的Action时,将会交给默认的Action去处理。在一个模块中,只能设置一个Action为默认的Action
validate:
用于设置是否调用ActionForm中的validate()方法来进行数据合法性的校验。

 

 

action元素定义举例如下:

Eg1.

<action-mappings>

<action

 path="/userAction"

 type="com.amigo.struts.action.UserAction"

 name="UserForm"

 scope="request"

 validate = "false"

 parameter="method" >

             <forward name="error" path="/user/error.jsp" />

         <forward name="success" path="/user/success.jsp"/>

                   <forward name="add" path="/user/addUser.jsp"/>

                   <forward name="update" path="/user/updateUser.jsp"/>

                   <forward name="list" path="/user/userList.jsp"/>

</action>

</action-mappings>

Eg2. 有input属性的例子:

<action-mappings>

<action path="/calcAction"

type="com.amigo.struts.action.CalcAction"

name="CalcForm"

scope="request"

validate="true"

input="/index.jsp">

<forward name="success" path="/success.jsp"/>
<forward name="error" path="/error.jsp"/>

</action>

</action-mappings>

Eg3. 仅有JSP的action元素:

<action path="/menu"

parameter="/default.jsp"

type="org.apache.struts.actions.ForwardAction" />

首先,ActionServlet接到请求后调用ForwardAction的execute()方法,execute()根据配置的parameter属性值来forward到那个URI。

这样做的效果是:没有任何form被实例化,比较现实的情形可能是form在request更高级别的范围中定义;或者这个action被用作在应用程序编译好后充当系统参数,只需要更改这个配置文件而不需要重新编译系统。

5. message-resources
       该元素用来定义资源文件,格式如下:

<message-resources parameter="给定资源文件的全名"

classname="定义处理消息资源的类名的全名"

factory="定义MessageResourcesFactory类的全名"

key="定义绑定在这个资源包中的ServletContext的属性主键"

null=" 如果为true,则找不到消息key时,则返回null "/>

       message-resources的各属性中,只有parameter是必选的,其余都为可选,classname属性默认为:org.apache.struts.config.MessageResourcesConfig,factory属性默认为:org.apache.struts.util.property.MessageResourcesFacotry,key属性默认为:Action.MESSAGES_KEY,null属性默认为:true。

       举例如下,在struts配置文件中添加如下信息:

Eg1. <message-resources parameter="ApplicationResources" />

Eg2. <message-resources

 parameter="com.amigo.struts. ApplicationResources "

null="false"/>

6. plug-in
       该元素用于定义插件,可定义0到多个插件元素,最常见的plug-in为Struts的验证的插件,配置举例如下:

Eg1. Struts的验证的plug-in:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

         <set-property property="pathnames"

                   value="/WEB-INF/validator-rules.xml, /WEB-INF/manager/validation.xml" />

         <set-property property="stopOnFirstError" value="false" />

</plug-in>

Eg2. Spring提供的载入插件配置:

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

              value="/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml"/>

 </plug-in>

7. 完整配置实例
       本小节举例说明struts-config.xml文件的配置:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

 <data-sources />

 <form-beans>

    <form-bean name="UserForm"

                   type="com.amigo.struts.form.user.UserForm" />

 </form-beans>

 

 <global-exceptions />

 <global-forwards />

 <action-mappings>

<action

                path="/userAction"

                type="com.amigo.struts.action.UserAction"

                name="UserForm"

                scope="request"

                validate = "false"

                parameter="method" >

             <forward name="error" path="/user/error.jsp" />

                  <forward name="success" path="/user/success.jsp"/>

                   <forward name="add" path="/user/addUser.jsp"/>

                   <forward name="update" path="/user/updateUser.jsp"/>

                   <forward name="list" path="/user/userList.jsp"/>

</action>

</action-mappings>

<message-resources parameter="com.amigo.struts. ApplicationResources " />

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

<set-property property="pathnames"

value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

<set-property property="stopOnFirstError" value="false" />

</plug-in>

</struts-config>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/renhui15688/archive/2008/04/07/2257301.aspx

分享到:
评论

相关推荐

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

    ### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...

    配置struts--config.xml详解

    在 Struts 应用程序中,`struts-config.xml` 文件是核心配置文件,它定义了应用的行为、控制器(Actions)、数据源(Form Beans)以及视图(JSP 页面)之间的关系。本文将深入探讨 `struts-config.xml` 的主要元素和...

    Struts struts-config.xml配置

    ### Struts struts-config.xml配置详解 #### 一、引言 在Java Web开发领域,Struts框架一直是构建MVC架构应用的重要工具之一。而`struts-config.xml`配置文件则是Struts应用的核心配置文件,它负责管理Struts应用中...

    struts-config.xml配置文件详解

    Struts-config.xml 配置文件详解 Struts-config.xml 是 Struts 框架的主要配置文件,用于配置 Struts 应用程序的各种设置。在该文件中,可以配置数据源、Form Bean、Action 和插件等信息。下面是 Struts-config.xml...

    struts-config.xml 详解

    `struts-config.xml`是Struts框架的核心配置文件,它定义了应用程序的行为和组件之间的交互。这个文件的主要目的是提供一个集中式的配置点,用于设置数据源、表单bean、异常处理、动作映射等关键元素。以下是每个...

    Struts-config.xml配置详解

    Struts的配置文件通常命名为struts-config.xml,它是整个Struts应用的核心配置文件,通过定义一系列的XML元素来设定框架的不同功能和行为。下面将详细介绍struts-config.xml中8个主要配置元素的功能和使用方法。 1....

    struts-config.xml

    ### Struts-config.xml配置文件详解 #### 一、引言 在Java Web开发领域中,Struts框架作为经典的MVC(Model-View-Controller)架构实现之一,为开发者提供了便捷的方式来构建可维护性和扩展性高的Web应用程序。...

    struts-config.xml配置详解

    韩顺平视频配套struts-config.xml配置详解.txt

    SSH之Struts1之struts-config.xml常用配置详解(3-21-2008)

    SSH之Struts1之struts-config.xml常用配置详解(3-21-2008)

    struts-config.xml配置详解.txt

    这个strut-config配置详解是韩顺平老师指定的 很多同学都看过韩老师的视频或者上过韩老师的课程吧

    Struts_config.xml详解

    ### Struts_config.xml详解 #### 一、概述 在Java Web开发中,Struts框架作为MVC模式的一个经典实现,提供了强大的功能支持。Struts框架的核心配置文件`struts-config.xml`是整个应用的关键组成部分之一,它定义了...

    struts-config详解

    Struts-config详解 Struts-config.xml 是Struts框架的核心配置文件,它描述了所有的Struts组件。在这个文件中,我们可以配置主要的组件及次要的组件。下面是struts-config.xml文件的主要元素: 一、struts-config....

    Struts-config.xml 配置详解.doc

    Struts-config.xml是Struts框架的核心配置文件,用于定义应用程序的行为和组件间的交互。这个XML文件按照特定的结构和约定来组织,包含了多个主要元素,这些元素定义了数据源、表单bean、全局转发、动作映射、控制器...

    struts--config.xml详解

    struts--config.xml详解

    struts-config.xml 文件详解

    struts-config.xml 文件详解 以下是一份完整的struts-config.xml文件,配置元素的说明详见注释.

    struts-config文件详解

    `struts-config.xml`通常位于应用的`WEB-INF`目录下,它包含以下几个主要部分:`controller`, `form-beans`, `global-exceptions`, `global-forwards`, `actions`, 和 `data-sources`。 2. **controller** 这部分...

    struts-xml.zip

    首先,`struts-xml`通常指的是`struts-config.xml`或`struts2.xml`,这是Struts2的核心配置文件,用于定义应用的行为和结构。以下是一些关键配置元素的详解: 1. **package**:在Struts2中,package是配置的基本...

    Struts1.3和config配置详解

    `struts-config.xml`配置详解: 1. **全局常量配置**:此部分用于定义全局的框架配置参数,如`input`属性用于指定表单验证失败后的默认回跳页面,`message-resources`属性用于指定国际化资源文件。 2. **数据源配置...

    jakarta-struts-1.2.4-src.zip_jakarta struts 1_jakarta struts-1.1

    **Jakarta Struts 1.x 框架详解** Jakarta Struts 是一款经典的Java Web应用程序框架,由Apache软件基金会的Jakarta项目开发并维护。它在2000年代初期广泛流行,为构建MVC(Model-View-Controller)架构的Web应用...

Global site tag (gtag.js) - Google Analytics