配置Struts应用--解读Struts应用的两大配置文件

转载 2007年09月23日 14:51:00

1.引言
关于Struts项目,在以前的文章中我已经做过一些介绍,在此不再赘述。写本文,旨在从纯Struts应用配置的角度深入剖析Struts配置文件在Web应用中的所扮演的角色及其工作机制,以加深对Struts内幕的理解和认知。以期在实际开发项目中灵活应用,提高分析和解决实际问题的能力。

2.进入主题
Struts应用采用两个基于XML的配置文件来配置应用。这两个配置文件为web.xml和struts-config.xml.其中,web.xml适用于所有的Java Web应用,它是web应用的发布描述文件,在Java Servlet规范中对它做了定义。struts-config.xml是Struts应用特有的配置了和Struts相关的信息。
2.1.web.xml——Web应用的发布描述文件
Web应用的发布描述文件可以在应用开发者、发布者和组装者之间传递配置信息。Web容器在启动时从该文件中读取配置信息,根据它来装载和配置Web应用。
所有和Servlet2.3规范兼容的容器支持以下的发布信息:
初始化参数
Session配置
Servlet声明
Servlet映射
应用生命周期的监听类
过滤器定义和映射
MIME类型映射
欢迎文件列表
出错处理页面
标签库映射
JNDI引用
2.1.1.Web应用发布描述文件的文档类型定义(DTD)
文档类型定义(DTD,Document Type Definition)对XML文档的格式做了定义。DTD把XML文档都划分为以下组件:
元素
属性
实体
下表为DTD代码中特殊符号的功能说明,了解他们将有利于我根据DTD书写正确、规范的各种XML配置文件。
无符号:该子元素在父元素内必须存在,且只能存在一次。
+:该子元素在父元素内必须存在,可以存在一次或者多次。
*:该子元素在父元素内可以不存在,或者存在一次或多次。
?:该子元素在父元素内可以不存在,或者只存在一次。
2.2.为Struts应用配置web.xml文件
web.xml文件对于配置任何Java Web应用都是必需的。当配置一个Struts应用时,还应该在web.xml中配置一些和Struts有关的信息。
2.2.1.配置Struts的ActionServlet
2.2.1.1.用<servlet>元素来声明ActionServlet
<servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>
       org.apache.struts.action.ActionServlet
      </servlet-class>
</servlet>
2.2.1.2.配置<servlet-mapping>元素,它用来指定ActionServlet可以处理那些URL
        <servlet-mapping>
            <servlet-name>action</servlet-name>
            <url-pattern>*.do</url-pattern>  
        </servlet-mapping>
2.1.2.声明ActionServlet的初始化参数
初始化参数用来对Servlet的运行时环境进行配置.<servlet>的<init-param>子元素用于配置Servlet的初始化参数.
<servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>
       org.apache.struts.action.ActionServlet
      </servlet-class>

      <init-param>
          <param-name>config/test</param-name>
          <param-value>/WEB-INF/model/struts-config-test.xml</param-value>
      </init-param>
</servlet>
说明:可以通过<init-param>元素加载多个struts-config配置文件,<param-name>的元素值为这个Struts模块的上下文环境.
2.1.3.配制欢迎文件清单
        <welcome-file-list>
            <welcome-file>/frame/welcome.jsp</welcome-file>
        </welcome-file-list>
2.1.4.配置错误处理页面
Struts框架会把不能处理的错误或异常抛给Web容器.在默认情况下,Web容器会向用户浏览器直接返回原始错误信息.我们可以通过配置<error-page>元素来自
定义错误页面.以下代码演示了如何避免用户直接看到HTTP404或HTTP500错误页面.
        <error-page>
          <error-code>404</error-code>
          <location>/common/404.jsp</location>
        </error-page>
我们也可以为Web容器捕获的Java异常配置<error-page>元素,这时需要设置<exception-type>子元素,它用于指定Java异常类.
        <error-page>
          <exception-type>java.io.IOException<exception-type>
          <location>/common/404.jsp</location>
        </error-page>
2.1.5.配置Struts标签库和自定义标签库
Struts提供了一些实用的客户化标签库.如果在应用中使用了这些标签库或其他基于Struts的第三方标签库,我们都要在Web应用发布描述符文件中配置它们.
        <taglib>
            <taglib-uri>/WEB-INF/struts-layout.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-layout.tld</taglib-location>
        </taglib>
2.3.Struts配置文件 struts-config.xml
在Struts应用启动时(通过web.xml加载其配置文件),会把Struts配置文件中的配置信息读入到内存中,并把她们存放在config包中相关JavaBean类的实例中.org.apache.struts.config包中的每一个类都和Struts配置文件中特定的配置元素对应.这些类的实例可以当做配置信息的运行时容器,Struts组件可以方便的通过他们来获取配置信息.
下面我们对Struts配置文件的每一个元素做进一步的认识.
2.3.1.<struts-config>根元素
此为根元素,和他对应的配置类为:org.apache.struts.config.MoudleConfig类.他有8个子元素,其DTD定义如下:
<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
2.3.2.<data-sources>元素
顾名思义,此元素可用来配制和数据库的连接.但考虑到,一般在J2EE项目中我们不在Struts层面上进行数据源的配置,所以在此就不对这个元素做过多介绍了.如需要,请查阅相关文档.
2.3.3.<form-beans>元素
<form-beans>元素包含零个或多个<form-bean>元素.每个<form-bean>元素又包行多个属性.如下为其属性说明:
className:指定和<form-bean>元素所对应的配置类.缺省则为默认类.
name:指定该ActionFormBean的唯一标识符.
type:指定这个ActionForm类的完整路径.
<form-beans type="com.eRedLab.eRedCIP.system.config.EredActionFormBean">
<!-- 登陆处理ActionForm -->
<form-bean name="loginActionForm" type="com.eRedLab.eRedCIP.frame.web.LoginForm" />
</form-beans>
如果配置动态ActionForm Bean的话,还必须配置<form-bean>元素的<form-property>子元素来指定表单字段.她有四个属性,见如下说明:
className:指定和<form-property>元素对应的配置类.缺省则为默认类.
initial:初始值.基本类型的表单字段默认值为0; 对象类型的表单字段默认值为:null.
name:指表单字段的名字.
type:指表单字段的Java数字类型.
<form-beans type="com.eRedLab.eRedCIP.system.config.EredActionFormBean">
<!-- 登陆处理动态ActionForm -->
<form-bean name="loginActionForm" type="com.eRedLab.eRedCIP.frame.web.LoginForm">
               <form-property name="userName" type="java.lang.String"/>
                      <form-property name="passWord" type="java.lang.String"/>
<form-bean>
</form-beans>
2.3.4.<global-exception>元素
采用配置方式处理异常.使用方法:略!
2.3.5.<global-forward>元素
该元素用来声明全局的转发关系。它由零个或多个<forward>元素组成。<forward>元素用于把一个逻辑名映射到一个特定的URL.通过之中方式,Action类或者JSP文件
无需指定实际的URL,只需要逻辑名就能实现请求转发或重定向。这可以减弱视图组件和控制组件之间的耦合度,并且有助于维护JSP文件。
<forward>元素的属性如下描述:
className:<forward>元素对应的配置类。缺省为默认类。
contextRelative:如果此项为true,表示当path属性以"/"开头时,给出的是相对于当前上下文的URL.默认值为:false.
name:转发路径的逻辑名。
path:指定转发或重定向的URI.必须以"/"开头。当contextRelative属性为true时,表示URI路径相对于当前上下文(context-relative);当contextRelative属性为false时,表示URI路径相对于当前应用。
redirect:当此项为true时,表示执行重定向操作;当此项为false时,表示执行请求转发操作。此项默认值为:false.
<global-forwards>
      <forward name="welcome" path="/common/welcome.jsp" contextRelative="true" />
      <forward name="syserror" path="/common/errors.jsp" contextRelative="true" />
</global-forwards>
多学一招:请求转发和重定向的区别:请求转发源组件和目标组件共享request作用域。
2.3.6.<action-mappings>元素
<action-mappings>元素包含零个或者多个<action>元素,<action>元素描述了从特定的请求路径到相应的Action类的映射。在<action>元素中,可以包含多个<exception>和<forward>子元素。它们分别配置局部的异常处理及请求转发,仅被当前的Action所访问。
<action>元素的属性说明如下:
attribute:设置和Action关联的ActionForm Bean在request或Session范围内的属性Key.
className:和<action>元素对应的配置类。缺省为默认类。
forward:指定转发的URL路径。
include:指定包含的URL路径。
input:指定包含输入表单的URL路径。当表单验证失败时,将把请求转发到该URL.
name:指定和该Action关联的ActionForm Beam的名字。该名字必须在<form-bean>元素中定义过。
path:指定访问Action的路径,它以"/"开头,没有扩展名。和JSP的<form>标签的Action属性相对应。
parameter:指定Action的配置参数。在对应Action类的execute()方法中可以调用ActionMapping对象的getParameter()方法来读取该配置参数。
scope:指定ActionForm Bean的存在范围。可选值为:request和session。默认值为:session。
type:指定Action类的完整类名。
validate:指定是否要先调用ActionFormbean中的validate()方法。默认值为:true.
注意:<action>元素的forward属性和include属性相互排斥。
示例代码如下:
<action-mappings type="com.eRedLab.eRedCIP.system.config.EredActionMapping">
      <!-- 登陆处理 Action -->
      <action name="loginActionForm"
              parameter="reqCode"
              path="/login"
              scope="request"
              validate="false"
              type="com.eRedLab.eRedCIP.frame.web.LoginAction">
                <forward name="jspView" path="/login.jsp" />
                <forward name="loginView" path="/index.jsp" />
      </action>
</action-mappings>
2.3.7.<controller>元素
<controller>元素用于配置ActionServlet。
2.3.8.<message-resource>元素
该元素用来配置Resource Bundle,Resource Bundle用于存放本地化消息文本。
<message-resource>元素的常用属性说明如下:
key:指定Resource Bundle存放在ServletContext对象中时采用的属性Key,默认值为由Globals.MESSAGES_KEY定义的字符串常量.只允许一个Resource Bundle采用默认的属性Key.
parameter:指定Resource Bundle的消息资源文件名.例如:如果此项设为:pack1.pack2.ApplicationResource.properties.那么对应的实际资源存放路径为:WEB-INF/classes/pack1/pack2/ApplicationResource.properties
以下是<messages-resource>的配置示例代码:注意他们的对应关系,只允许第一个消息资源文件采用默认属性key.
<message-resources parameter="eRedCIPResources"/>
<message-resources parameter="eRedCIPResources" key="database"/>
读取消息资源文件中的属性值:
<bean:message key="userName">
<bean:message key="userName" bundle="database">
2.3.9.<plug-in>元素
<plug-in>元素用于配置Struts插件.以下为该插件的常用属性描述:
className:指定Struts插件类.插件类必须实现org.apache.struts.action.PlugIn接口.
以下为配置示例代码:
      <plug-in className="com.eRedLab.eRedCIP.system.config.EredContextLoaderPlugIn">
       <set-property property="contextConfigLocation"
          value="WEB-INF/classes/config/eRedCIP.xml,
                 WEB-INF/classes/config/Dao.xml,
                 WEB-INF/classes/config/framework/eRedCIP-frame.xml,
                 WEB-INF/classes/config/framework/Dao.xml,
                 WEB-INF/classes/config/test/eRedCIP-test.xml,
                 WEB-INF/classes/config/test/Dao.xml"/>
      </plug-in>
 

相关文章推荐

Struts2框架的搭建及配置文件的配置

一、问题:Struts2框架的搭建,及jar包的使用, 二、Struts2简介(面试)面试资料及Struts2的介绍可下载资源: 三、搭建Struts2的开发环境 1、找到所需的jar包:官...
  • Mr_li13
  • Mr_li13
  • 2015年10月25日 00:05
  • 1303

Struts2为应用指定多个配置文件和动态方法调用以及通配符的使用方法

在开发中一般不会说将所有的配置都放在struts.xml这个一个配置文件中去,因为这样会使得整个配置文件臃肿不堪无法维护,一般来说会进行分模块的进行配置文件的编写。下面来演示一下分模块来进行配置 其...

struts2配置文件解读

http://blog.csdn.net/thinkscape/article/details/7462670
  • wym1581
  • wym1581
  • 2015年05月05日 15:27
  • 171

Struts六大配置文件

1、Struts-default.xml Struts默认配置 在struts-core-2.2.1.jar包中 请求的类型为action过滤链 转发 name=httpheader ...

三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用!         首先是web.xml配置文件,这里面就配置一些简单的监听器、过滤器,包括spring核心...

hibernate和struts2所需的配置文件

  • 2015年12月24日 09:36
  • 10.34MB
  • 下载

struts2+hibernate+spring的配置文件

  • 2013年05月04日 13:34
  • 30KB
  • 下载

struts1的配置文件详解

要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装Struts框架。而struts-config.xml用来配置在Struts...

Struts2的配置文件的详细说明

  • 2014年05月06日 10:37
  • 281KB
  • 下载

struts配置文件

  • 2013年08月04日 17:31
  • 352KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置Struts应用--解读Struts应用的两大配置文件
举报原因:
原因补充:

(最多只允许输入30个字)