Struts 应用配置概要

来源:互联网 发布:r常用的算法 编辑:程序博客网 时间:2024/06/04 21:16

 

Struts应用采用两个基于XML的配置文件来配置应用.分别为web.xmlstruts-config.xml. web.xml适用于所有的Java Web应用,Web应用的发布描述文件,Java Servlet规范中对它做了定义.struts-config.xml文件是Struts应用专有的配置文件.

 

Struts应用配置web.xml文件

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE web-app PUBLIC

        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

        "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <display-name>Struts Examples Application</display-name>

    <!-- Standard Action Servlet Configuration (with debugging) -->

    <servlet>

        <servlet-name>action</servlet-name>

        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <!-- Default -->

        <init-param>

            <param-name>config</param-name>

            <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>

        <init-param>

            <param-name>debug</param-name>

            <param-value>2</param-value>

        </init-param>

        <init-param>

            <param-name>detail</param-name>

            <param-value>2</param-value>

        </init-param>

        <load-on-startup>2</load-on-startup>

    </servlet>

    <!-- Standard Action Servlet Mapping -->

    <servlet-mapping>

        <servlet-name>action</servlet-name>

        <url-pattern>*.do</url-pattern>                                          

    </servlet-mapping>

    <!-- The Usual Welcome File List -->

    <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

        <welcome-file>index.html</welcome-file>

    </welcome-file-list>

    <error-page>

        <error-code>404</error-code>

        <location>/common/404.jsp</location>

    </error-page>

</web-app>

1.     配置StrutsActionServlet

web.xml中配置ActionServlet有两个步骤.第一步是用<servlet>元素来声明ActionServlet.<servlet>子元素中,经常会用到<servlet-name>,<servlet-class><init-param>,例如

    <servlet>

        <servlet-name>action</servlet-name>

        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <init-param>

            <param-name>config</param-name>

            <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>

    </servlet>

    <servlet-mapping>

        <servlet-name>action</servlet-name>

        <url-pattern>*.do</url-pattern>                                         

    </servlet-mapping>

   这里应当注意的是,<servlet>元素中的<servlet-name>必须同<servlet-mapping>元素中的<servlet-name>保持一致.<url-pattern>属性为”*.do”,表明ActionServlet负责处理所有以”*.do”扩展名结尾的URL.<init-param>子元素用于配置Servlet初始化参数.例如,以上代码为ActionServlet配置了初始化参数config,config参数是配置StrutsActionServlet专有的,它用来设置Struts配置文件的相对路径.

2.     配置欢迎文件清单

<welcome-file-list>元素可以包含多个<welcome-file>子元素,Web容器调用Web应用的欢迎文件时,首先寻找第一个<welcome-file>指定的文件,如果文件存在,将把这个文件返回给客户;如果不存在,Web容器将依次寻找下一个欢迎文件,直到找到为止,如果<welcome-file-list>元素中指定的所有文件都不存在,服务器将向客户端返回”HTTP 404 Not Found”的错误信息.注意,不能在<welcome-file-list>元素中配置Servlet映射,因此不能直接把StrutsAction作为欢迎页面.

3.     配置错误处理

当错误发生时,如果Struts框架不能处理这种错误,就会把错误抛给Web容器.在默认情况下,Web容器会向用户浏览器直接返回原始的错误信息.如果想避免直接让用户看到原始的错误信息,可以在Web应用的发布描述文件(web.xml)中配置<error-page>元素.也可以为Web容器捕或的Java异常配置<error-page>元素,这时候需要设置<exception-type>子元素,它用于指定Java异常类.web容器可能捕获如下异常:

RuntimeException Error

ServletException 或其子类

IOException 或其子类

<error-page>

    <exception-type>javax.servlet.ServletException</exception-type>

    <location>/common/system-error.jsp</location>

</error-page>

需要注意的是,<exception-type>元素中声明的Java异常类必需是以上所列举的情况之一.

4.     配置Struts标签库

Struts框架提供了一些实用的客户化标签库.如果在应用中使用了这些标签库,那么必须在Web应用发布描述文件中配置他们.

<taglib>

   <taglib-uri>/WEB-INF/struts-html.tld</taglib>

   <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

</taglib>

Struts配置文件

Struts框架在启动时会读入其配置文件,根据配置文件来创建和配置各种Struts组件.Struts1.1中加入了org.apache.struts.config,Struts启动时,会把Struts配置文件中的配置信息读入到内存中,并把它们存放在config包中相关JavaBean类的事例中,org.apache.struts.config包中的每一个类都和Struts配置文件中特定的配置元素对应,例如,<action>元素和ActionMaping类对应,<forword>元素和ActionForward类对应.由于一个<action>元素可以包含多个<forward>子元素,因此,ActionMapping类和ActionForward类之间存在一对多的关联关系.

1.       <struts-config>元素

<struts-config>元素是Struts配置文件的根元素,和它对应的配置类为org.apache.struts.config.ModuleConfig.<struts-config>元素有8个子元素.注意在配置文件中必须按照DTD指定的先后顺序来配置<struts-config>元素的各个子元素,如果颠倒了这些子元素在配置文件中的顺序,Struts应用启动时抛出XML解析错误.

2.       <data-source>元素

<data-source>元素用来配置应用所需要的数据源.数据源负责建立和特定数据库的连接,许多数据源采用连接池机制实现,以便提高数据库访问性能.下面的代码演示了如何在Struts配置文件中配置数据源

    <data-sources>

        <!--  为数据源分配唯一的key,通过该值来标识特定的数据源 -->       <data-source key="dbcp.mysql.ds"

            type="org.apache.commons.dbcp.BasicDataSource">

<!--  初始化时建立连接条数 -->

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

            <!--  最大可建立连接条数 -->

            <set-property property="maxActive " value="10" />

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

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

            <!-- 

                <set-property property="driverClassName"

                value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />

            -->

<!-- 连接数据库所依赖的库文件 -->

            <set-property property="driverClassName"

                value="com.mysql.jdbc.Driver" />

<!-- 为此数据源添加描述文字 -->

            <set-property property="description" value="" />

            <!--

                <set-property property="url"

            value="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubjobs"            />

            -->

            <set-property property="url"

                value="jdbc:mysql://127.0.0.1:3306/test" />

            <!-- 是否自动提交 -->

            <set-property property="defaultAutoCommit" value="true" />

<!-- 连接是否为只读 -->

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

            <!-- 最大响应时间 -->

            <set-property property="maxWait " value="15" />

        </data-source>

    </data-sources>

要使以上配置的数据源正常工作,要注意以下几点

1.     下载commons-dbcp-1.2.x  http://jakarta.apache.org/commons/dbcp/ 注意添加dbcp运行时依赖库

2.     加载连接数据库所依赖的库文件

3.     注意用户名,密码,数据库的url地址及驱动类全名

用以下方法可以得到数据源

    public ActionForward execute(ActiomMapping mapping,

                             ActionForm form,

                             HttpServletRequest request,

                             HttpServletResponse response) throws Exception {

        ………………………..

        DataSource ds =  getDataSource(rquest);

        Connection con = ds.getConnection();

        ……………………….

}

3.   <form-beans>元素

   <form-beans>元素来配置多个ActionForm Bean.<form-bean>元素包含零个或多个<from-bea n>子元素.<form-bean>元素主要属性如下

Ø         className 指定和<form-bean>元素对应的配置类,默认值为org.apache.struts.config. FormBeanConfig.如果在这里设置自定义的类,该类必须扩展FormBeanConfig

Ø         name 指定该ActionForm Bean 的唯一标识符,整个Struts框架用该标识来引用这个bean,该属性是必须的.

Ø         type 指定ActionForm类的完整类名,该属性是必须的.

   注意,在配置<form-bean>元素的type属性时,必须给出ActionForm类的完整类名,即应该把类的包名也包含在内,如下所示.

      <form-beans type="org.apache.struts.webapp.examples.CustomFormBean">

          <form-bean name="example"

                   type="org.apache.struts.webapp.examples.CustomFormBean">

         </form-bean>

      </form-beans>

   如果配置动态ActionForm Bean, 还必须配置<form-bean>元素的<form-property>子元素,<form-property>元素用来指定表单字段,它有四个属性,如下所示.

Ø       className 指定和<form-property>元素对应的配置类,默认值为org.apache.struts.config. FormPropertyConfig

Ø       initial 以自符串的形式设置表单字段的初始值,如果没有设置该属性,则基本类型的表单字段的默认值为0,对象类型的表单字段的默认值为null

Ø       name 指定表单字段的名字,该属性是必须的.

Ø       type  指定表单字段的类型.如果表单字段为本Java,必须给出完整类名.该属性是必须的.

      <form-bean name=”example”

type=”org.apache.struts.action.DynaActionForm”>

           <form-property name=”example” type=”java.lang.String” />

      </form-bean>

   Action中获取动态ActionForm Bean

    public ActionForward execute(ActiomMapping mapping,

                             ActionForm form,

                             HttpServletRequest request,

                             HttpServletResponse response) throws Exception {

        ………………………..

        DynaActionForm dynaForm = (DynaActionForm) form;

        String example = dynaForm.get(“example”);

        ……………………….

}

4.   <global-exceptions>元素

   <global-exceptions>元素用于配置异常处理,包含零个或者多个<exception>元素.

   <global-exception>元素用来设置Java异常和异常处理类 org.apache.struts.action. ExceptionHandler之间的映射.如下对<exception>元素的属性做了说明.

Ø       className 指定和<exception>元素对应的配置类.默认值为            org.apache.struts.config.   ExceptionConfig

Ø       hander 指定异常处理类.默认值为org.apache.struts.action.ExceptionHandler

Ø       key    指定Resource Bundle中描述该异常的消息Key

Ø       path   指定当异常发生时的转发路径

Ø       scope  指定ActionMessages实例的存放范围,可选值包扩requestsession.默认值    request

Ø       type   指定所需处理的异常类的名字.此项是必须的

Ø       bundle 指定Resource Bundle

 

5.   <global-forwards>元素

   <global-forwards>元素用来声明全局的关系转发.<global-forwards>元素由零个或多个<forward>子元素组成.<forward>元素用于把一个逻辑名映射到特定的URL.通过这种方式,Action类或者JSP文件无需指定实际的URL,只要指定逻辑名就能实现请求转发或者重定向,这可以减弱控制组件和视图组件之间的耦合,并且有助于维护JSP文件.

Ø       className <forward>元素对应的配置类,默认值为org.apache.struts.action. ActionForward

Ø       contextRelative 如果此项为true,表示当path属性以”/”开头时,给出的是相对于当前上下文的URL.默认值为false.

Ø       name 转发路径的逻辑名.次项是必须的.

Ø       path  指定转发或重定向的URI.此项是必需的.必须以”/”开头.contextRelative属性为false,表示URI路径相对于当前应用;contextRelative属性为true,表示URI路径相对于当前上下文.

Ø       redirect 当此项为true,表示执行重定向操作;当此项为false,表示执行请求转发操作.

 

6.   <action-mapping>元素

   <action-mapping>元素包含零个或者多个<action>元素.<action>元素描述了从特定的请求路径到相应的Action类的映射.<action>元素可以包含多个<exception><forward>子元素,它们分别配置局部的异常处理及请求转发仅被当前的Action所访问.<action>元素常用属性如下

Ø       attribute 设置和Action关联的ActionForm Beanrequestsession范围内的属性key,例如,名为”myBean”FormBean存在于request范围内,那么request. getAttribute(“myBean”)就可以返回该Bean的实例.此项可选.

Ø       className <action>元素对应的配置类.默认值为org.apache.struts.action. ActionMapping

Ø       forward  指定转发的URL路径

Ø       include  指定包含的URL路径

Ø       intput   指定包含输入表单的URL路径.当表单验证失败时,将请求转发到该URL

Ø       name   指定和该Action关联的ActionForm Bean的名字.该名字必须在<form-bean>元中定义过,此项是可选.

Ø       path    指定访问Action的路径,它以”/”开头,没有扩展名

Ø       parameter 指定Action的配置参数.Action类中的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数.

Ø         roles   指定允许调用该Action的安全角色,多个角色之间以逗号隔开.在处理请求时,RequestProcessor会根据该配置项来决定用户是否有调用Action的权限

Ø         scope   指定ActionForm Bean的存在范围,可选值为requestsession.默认为session

Ø         type    指定Action类的完整类名

Ø         unknown 如果此项为true,表示可以处理用户发出的所有无效的Action URL,默认值为false

Ø         validate  指定是否要先调用ActionForm Beanvalidate()方法.默认值为true.

   注意.<action>元素的forward.includetype属性相互排斥,也就是说只能设置其中的一项.

   forward属性的作用和org.apache.struts.action.ForwardAction类相同,include属性的作用和org.apache.struts.action.IncludeAction类相同

 

7.   <controller>元素

   <controller>元素用于配置ActionServlet.以下对<controller>元素的属性做了描述

Ø       bufferSize 指定上载文件的输入缓冲的大小.该属性为可选项,默认为4096

Ø         className 指定和<controller>元素对应的配置类.默认值为org.apache.struts.config. ControllerConfig.

Ø         contentType 指定响应结果的内容类型和字符编码.该属性为可选项,默认值为test/html.如果在ActionJSP网页中也设置了内容类型和字符编码,将会覆盖设置.

Ø         locale      指定是否把Local对象保存到当前用户的Session.默认为false

Ø         processorClass 指定负责处理请求的Java类的完整类名.默认值为org.apache.struts.action. RequestProcessor

Ø         tempDir     指定处理文件上载的临时工作目录.如果此项没有设置,将采用Servlet容器为Web应用分配的临时工作目录

Ø       nochache   如果为true,在响应结果中将加入特定的头参数:Paragme,Cache-Control,Expires,防止页面被存储在客户浏览器的缓寸中,默认值为false.

8.   <message-resource>元素

      <message-resources>元素用来配置Resource Bundle,Resource Bundle用于存放本地化消息文本,<message-resource>元素的属性如下

Ø       className <message-resources>元素对应的配置类.默认值为org.aplache.struts.config. MessageResourcesConfig

Ø         factory  指定消息资源的工厂类.默认值为org.apache.struts.util. PropertyMessageResourcesFactory

Ø         key       指定Resourcer Bundle存放在ServletContext对象中时采用的属性key.默认值为由Globals.MESSAGES_KEY定义的字符串常量,只允许有一个Resource Bundle采用默认的属性key.

Ø         null      指定MessageResources类如何处理未知的消息key.如果此项为true,将返回空字符串.如果此项为false,将返回类似”???global.lable.missing???”的字符串.该属性可选,默认值为true.

Ø         parameter  指定Resource Bundle的消息资源文件名.

9.   <plug-in>元素

   <plug-in>元素用于配置Struts插件.<plug-in>元素的属性如下

   <className> 指定Struts插件类. 插件类必须实现org.apache.struts.action.PlugIn接口

   <plug-in>元素可以包含零个或多个<set-property>子元素.以下是<plug-in>元素的配置代码示例.

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

    <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml,

                                              /WEB-INF/validator/validation.xml,

                                           /WEB-INF/validator/validation-bundles.xml,

                                      /WEB-INF/validator/validation-i18nVariables.xml,

                                            /WEB-INF/validator/validation-type.xml,

                                      /WEB-INF/validator/validation-validwhen.xml" />

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

  </plug-in>

   

 

 

 

 

 

 

 
原创粉丝点击