Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1967157
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类:

2008-07-19 21:58:10

struts-config.xmlStruts的主要配置文件,在该文件中,可以配置数据源、form-beanactionplug-in(插件)和资源文件的信息。其文件主要结构如下所示:


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

       当然struts-config.xml还有子元素,因为它们用得很少,在此不再赘述。只是讲述常用的子元素的配置。

1. data-sources

本节讲述子元素data-sources的配置,该元素可以配置一个或多个data-source元素,即数据源元素,可以通过设置driverClassurluserpassword等属性。配置实例如下:

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                  

开发人员还可以设置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元素的定义格式如下:

的名称" type="FormBean对应JavaBean类的全路径"/>

Eg.

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

            

            

3 global-forwards

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

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

Eg.

                  

                  

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

4 action-mappings

       该元素用于将Action元素定义到ActionServlet类中,它含有0到多个元素,其格式如下:

请求的相对路径"

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

name="Action绑定的FormBean"

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

       每个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.

 path="/userAction"

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

 name="UserForm"

 scope="request"

 validate = "false"

 parameter="method" >

            

        

                  

                  

                  

Eg2. input属性的例子:

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

name="CalcForm"

scope="request"

validate="true"

input="/index.">


Eg3. 仅有JSPaction元素:

parameter="/default.jsp"

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

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

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

5. message-resources

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

给定资源文件的全名"

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.

Eg2.

 parameter="com.amigo.struts. ApplicationResources "

null="false"/>

6. plug-in

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

Eg1. Struts的验证的plug-in

        

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

        

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

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

 

7. 完整配置实例

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

 

 

   

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

 

 

 

 

 

                path="/userAction"

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

                name="UserForm"

                scope="request"

                validate = "false"

                parameter="method" >

            

                 

                  

                  

                  

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

 



    

 

阅读(491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~