Struts1.x系列教程(24):配置文件总结

简介:
  要想使用 Struts ,至少要依靠两个配置文件: web.xml struts-config.xml 。其中 web.xml 用来安装 Struts 框架。而 struts-config.xml 用来配置在 Struts 框架中要使用的资源。如 Formbean Action 、插件等。如果使用了某些插件,如 Validator Tiles 等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对 Struts 的配置有一个更清醒的认识。
一、在 web.xml 中安装 Struts
     要想使用Struts ,我们接触到的第一个配置文件就是web.xml 。实际上,Struts 的入口点是一个名为ActionServlet Servlet 。在第一次访问Struts 时,建立这个ActionServlet 类的对象实例,并调用ActionServlet 类中的init 方法来进行初始化(其实是读取struts-config.xml 文件中的内容,并根据struts-config.xml 中的内容来初始化相关的资源)。因此,就要在web.xml 文件中安装这个ActionServlet ,并在ActionServlet 的初始化参数中指定struts-config.xml 的位置。
二、 struts-config.xml 文件的结构
    struts-config.xml Struts 的核心配置文件。也就是说,只要是使用Struts ,就必须配置struts-config.xml 文件。struts-config.xml 文件的所有配置项都要放到顶层元素<struts-config> 中,主要配置项有如下七个:
1.       FormBean :在<form-beans> 元素中配置。
2.       Action 映射:在<action-mappings> 元素中配置。
3.        全局Forwards :在<global-forwards> 元素中配置。
4.        全局异常(Exception) :在<global-exceptions> 元素中的配置。
5.        控制器(Controller) :在<controller> 元素中配置。
6.        信息资源:在<message-resources> 元素中的配置。
7.        插件:在<plug-in> 元素中配置。
   下面我们就分别来看一下这七部分的具体配置方法。
三、配置 Formbean Action 映射

     这两个配置项是Struts 配置的核心,也就是说我,一个完整的Struts 应用程序都会拥有这两项配置。
     每一个Formbean 要在<form-beans> 元素中定义一个<form-bean> 子元素。下面的代码给出了一个标准的Formbean 的配置方法:
< form-beans >
    < form-bean  name ="myForm"  type ="actionform.MyActionForm"   />
</ form-beans >
     其中name 属性表示Formbean 名,type 属性表示Formbean 类的全名(包名+ 类名),一般type 属性值需要指定一个org.apache.struts.action.ActionForm 类或其子类。type 属性值还可以指定一个动态form ,如org.apache.struts.action.DynaActionForm ,或这个类的子类。
<form-beans> 元素中定义的Formbean 一般用于将客户端浏览器提交的数据映射为Java Bean 的形式,最终开发人员可以直接使用Java Bean 来操作客户端提交的数据。Formbean 同时还有验证数据的功能(在validate 方法中验证)。Formbean 有时还会作为其他用途使用,如使用动态form LocaleAction 类配合使用来进行本地化操作。
每一个Action 映射要在<action-mappings> 元素中定义一个<action> 子元素。Action 映射的主要功能是将Struts 动作的访问路径(一般以.do 结尾)和Struts 动作类相对应。同时可以指定一个Formbean 来接收和验证客户端提交的数据。下面的代码给出了一个标准的配置Action 动作的方法:    
< action-mappings >
    < action  name ="myForm"  path ="/myaction"   scope ="request"   validate ="true"  type ="action.MyAction"  input ="/mystruts/error.jsp" >
         
< forward  name ="success"  path =" /mystruts/success.jsp"   />
    
</ action >
</ action-mappings >
四、配置全局 Forwards

    每一个全局的Forwards需要在<global-forwards>元素中定义一个<forward>子元素。全局 Forwards可以被所有的Action、异常处理以及一些Struts标签(如<html:link>)访问。下面的代码给出了一个标准的全局Forward的配置方法:

< global-forwards >
     < forward  name ="myforward"  path ="/mystruts/newProduct.jsp"   />
</ global-forwards >

五、配置局部和全局异常 (Exception)

     Struts 中处理异常的方法非常多,然后,为了使处理异常的方式更灵活。Struts 框架允许以配置的方式来处理异常。
    Struts 中的异常配置可分为局部和全局异常。这两种异常配置的方法完全一样,只是配置代码的位置不同。配置局部异常的<exception> 元素在<action> 元素中,而全局异常的<exception> 元素在 <global-exceptions > 元素中。局部异常的优先级大于全局异常的优先级。
     下面的代码给出了一个标准的全局异常的配置方法:
< global-exceptions  >
    < exception  key ="error.name.blank"   type ="java.lang.Exception"  path ="/error.jsp" />
</ global-exceptions >
     其中key 属性表示在属性文件中的key ,一但Struts Action execute 方法抛出异常,Struts 首先会在局部和全局异常中匹配type 属性所指定的异常类型。如果匹配成功,就会跳转到path 属性所指的Web 资源(在本例中是“/error.jsp ”)。如果在error.jsp 页面中使用<html:errors/> 标签显示错误信息,就会输出key 属性所对应的值。    
    <exception>元素除了可以使用path属性指定要跳转的Web资源外,也可以使用handler属性指定用于处理异常的类。如下面的代码所示:    
< global-exceptions >
    < exception  key ="error.email. invalid"   type ="java.lang.Exception"  handler ="exceptions.EmailException" />
</ global-exceptions >
    其中exceptions.EmailException类必须继承org.apache.struts.action.ExceptionHandler类,而且我们必须覆盖execute方法。  
    ExceptionHandler类的execute方法的定义如下:
   public  ActionForward execute( Exception ex, ExceptionConfig ae, ActionMapping mapping,
                           ActionForm formInstance, HttpServletRequest request,
                           HttpServletResponse response) 
throws  ServletException ;
六、配置控制器 (Controller)

    控制器可能是这七个配置项上使用最少的一项。它主要用来覆盖一些默认的Struts设置。下面是几个常用的Struts设置:

    1. maxFileSize:指定在文件上传时的最大文件尺寸。可以使用K、M和G作为单位。如maxFileSize="2M"。maxFileSize的值只能是整数,不能是小数,如maxFileSize=1.2M是不合法的。

    2. nocache:告诉Struts是否应该缓冲内容。指定为nocache="true”,Struts将不会缓冲内容。默认值为true。

    3. contentType:指定默认的ContentType字段值,如果要发送的内容的默认格式是HTML,我们可以指定contentType的值为“text/html”。

    下面的代码是一个完成的控制器的配置:    

< controller  maxFileSize ="2M"   contentType  = “text/html”   nocache  = “false”  />
   
七、配置信息资源

    信息资源使用<message-resources>元素进行配置。下面是一个配置信息资源的例子:

< message-resources  parameter ="struts.application"  key ="global"   />

     其中parameter 属性表示保存信息资源的属性文件的位置,对于上面的代码来说,属性文件的位置是<Web 根目录>"WEB-INF"classes"struts"application.properties key 属性表示application.properties 文件的标识。如果没有key 属性,这个属性文件就是默认的属性文件。当指定key 属性时,在使用这个属性文件时,需要使用相关标签的bundle 属性指定这个key 值。
     属性文件中的值可以使用Struts 标签来获取,如属性文件中的一个key key.msg.submit 。那么使用<bean:message> 标签获取这个属性文件中的key 值的代码如下:

   < bean:message  key ="key.msg.submit"  bundle =”global”/>

      
属性文件也可以用在获得错误信息上,如在validate方法中使用如下的代码来指定错误提示信息:

  errors.add( " name " , new  ActionMessage( " error.name.blank " )); 

     而在JSP 页面中可以使用如下的代码来显示这个错误信息:
< html:errors  property ="name"  bundle ="global" />
八、配置 Struts 插件
    Struts 之所以强大,在很大程度上取决于它支持通过插件的方式进行扩展,如前面讲的Validator Tiles ,都是以Struts 插件形式发布的。Struts 插件使用<plug-in> 元素进行配置,如下面的代码所示:
< plug-in  className ="org.apache.struts.validator.ValidatorPlugIn" >
     < set-property  property ="pathnames"  value ="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml"   />
</ plug-in >
     其中className 属性指定了Struts 要调用的插件类名。property 属性指定了插件需要的属性名,而value 属性指定了相应的属性值。






 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214842 ,如需转载请自行联系原作者

相关文章
|
XML Java Apache
struts2源码分析之配置文件加载顺序
struts2源码分析之配置文件加载顺序
123 0
|
Java
Struts2【配置】 (二)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
146 0
Struts2【配置】 (二)
|
Java 应用服务中间件
Struts2【配置】 (三)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
91 0
Struts2【配置】 (三)
|
Java
Struts2【配置】 (一)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
103 0
Struts2【配置】 (一)
|
XML Java 数据格式
springmvc使用配置文件
springmvc使用配置文件
117 0
|
前端开发 Java 开发框架
|
XML Java 数据格式
|
XML Java 数据格式
Struts2的常见的配置文件介绍
1:package 定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)  常见属性及其说明:     (1)name  包的名字;以方便在其他处引用此包,此属性是必须的。 包名不能重复;            (2)extends 当前包继承自哪个包,用于声明继承的包。
1186 0