zoukankan      html  css  js  c++  java
  • 【Struts1.2总结】strutsconfig.xml配置


    struts-config.xmlStruts的主要配置文件,在该文件中,可以配置数据源、form-beanactionplug-in(插件)和资源文件的信息。Struts-config.xml的每个部分的配置规范主要由该xml文件所使用的DTD文件决定。所使用的DTD版本在文件头部分,所以看DTD是了解该配置文件的最好起点。不同的版本所定义的元素和属性不同。 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">

    <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>设置driverClassurluserpassword等属性。配置实例如下:

    <data-source>

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

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

                                <!-- 所用的JDBCURL,必须-->

                                <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构建的系统中,一般使用Hibernatehibernate.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,它具有userNamepassword两个属性。该类的代码如下:

    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定义了userNamepassword属性,配置如下:

    <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子元素。除了pathtypename属性外,action还具有如下属性:

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

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

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

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

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

    forward属性也是可选的。

    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. 仅有JSPaction元素:

    <action path="/menu"

    parameter="/default.jsp"

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

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

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

    5. message-resources

           该元素用来定义资源文件,格式如下:

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

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

    factory="定义MessageResourcesFactory类的全名"

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

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

           message-resources的各属性中,只有parameter是必选的,其余都为可选,classname属性默认为:org.apache.struts.config.MessageResourcesConfigfactory属性默认为:org.apache.struts.util.property.MessageResourcesFacotrykey属性默认为:Action.MESSAGES_KEYnull属性默认为:true

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

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

    Eg2. <message-resources

     parameter="com.amigo.struts. ApplicationResources "

    null="false"/>

    6. plug-in

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

    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>

  • 相关阅读:
    [LeetCode] Max Area of Island
    [TCP/IP] TCP数据报
    [LeetCode] Number of Islands
    [LeetCode] Binary Number with Alternating Bits
    [TCP/IP] Internet协议
    [LeetCode] Isomorphic Strings
    [LeetCode] Path Sum
    [LeetCode] Count and Say
    [学习OpenCV攻略][001][Ubuntu安装及配置]
    [国嵌攻略][038][时钟初始化]
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887860.html
Copyright © 2011-2022 走看看