我是靠谱客的博主 自然耳机,最近开发中收集的这篇文章主要介绍Struts配置文件1、Struts配置文件详解2、 Struts-config.xml配置文件讲解3、多个Struts-config.xml配置4、配置命名空间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

回到首页☞

1、Struts配置文件详解

ActionServlet就是Struts的入口Servlet。< servlet-mapping >中所有*.action的请求都交给他处理。ActionServlet不负责任何业务处理,他只是查找Action名单,找到path属性与URL属性一直的Action。
把请求交给Action处理。这个Action名单就是struts配置文件。

1.1、web.xml配置ActionServlet

  <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>
    <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>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

1.2 struts-config.xml 简单配置

/WEB-INF/struts-config.xml 这个位置不是固定的,只是默认位置,可以通过web.xml config参数来指定

下面是简单的demo,只有如下两个是必须的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
        "struts-config_1_2.dtd">
<struts-config>
    <form-beans>
        <form-bean name="calculatorActionForm" type="com.wht.action.calculatorActionForm"/>
    </form-beans>
    <action-mappings>
        <action path="/CalculatorAction"
                type="com.wht.action.CalculatorAction"
                name="calculatorActionForm"
                validate="false"
                attribute="calculatorActionForm"
                scope="request">
            <forward name="success" path="/success.jsp"/>
            <forward name="error" path="/error.jsp"/>
        </action>
    </action-mappings>
</struts-config>

2、 Struts-config.xml配置文件讲解

Struts-config.xml 中可配置数据源、全局异常处理、全局JSP变量、FormBean、Action以及国际化等。

2.1 < struts-config >元素

struts配置文件的根元素。(和它对应的配置类为org.apache.struts.config.MouleConfig类)
8个子元素:(先后顺序不能变)

  • < data-sources >

  • < form-beans >

  • < global-exceptions>

  • < global-forwards>

  • < action-mappings>

  • < controller / >

  • < message-resources / >

  • < plug-in />

2.2 < data-sources>元素

用来配置应用所需要的数据源。

包含0,1或者多个元素,该元素用于配置特定的数据源。
元素包含多个元素,元素用于设置数据源的各种属性。
例如:

    <data-sources>

        <data-source type=”org.apache.commons.dbcp.BasicDataSource”>

            <set-property property=”autoCommit” value=true/>

            <set-property property=”description” value=”MYSQL Data Source”/>

            <set-property property=”driverClassName” value=”com.mysql.jdbc.Driver”/>

            <set-property property=”maxCount” value=10/>

            <set-property property=”minCount” value=2/>

            <set-property property=”user” value=”dev”/>

            <set-property property=”password” value=”hcgk*2020/>

            <set-property property=”url” value=”jdbc:mysql://localhost:3306/dev?characterEncoding=UTF-8/>

        </data-source>

    </data-sources>

配置了数据源后,就可在Action类中访问数据源了

Javax.sql.DataSource dataSource = getDataSource(request);

Javax.sql.Connection myConnection = dataSource.getConnection();

配置多个数据源:

  <data-source key=”A” type=”org.apache.commons.dbcp.BasicDataSource”>

       …property as before…

  </data-source>

<data-source key=”B” type=”org.apache.commons.dbcp.BasicDataSource”>

         …property as before…

    </data-source>

在Action中去得数据源:

	dataSourceA = getDataSource(request,”A”);
	dataSourceB = getDataSource(request,”B”);

其实使用数据库最大的问题是要知道到底依赖那些jar:驱动,映射工具,数据源等。
上例就可以用mysql:

      <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

2.3 < form-beans>元素:

用来配置多个ActionForm Bean。
包含元素,该元素的属性有:

  • 1.className:指定和元素对应的配置类,默认值为org.apache.struts.config.FormBeanConfig。如果在这里设置自定义类,则该类必须扩展FormBeanConfig类。

  • 2.name:指定该ActionForm的唯一标识符,整个struts框架利用该标识符来引用这个bean。(必需的)

  • 3.type:指定ActionForm类的完整实现类名(包括路径)。(必需的)

2.3.1 示例1

    <form-beans>
        <form-bean name="calculatorActionForm" type="com.wht.action.calculatorActionForm"/>
    </form-beans>

2.3.2 示例2:动态ActionForm

<!-- sample form bean descriptor for a DynaActionForm

        <form-bean

            name="logonForm"

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

            <form-property

                name="username"

                type="java.lang.String"/>

            <form-property

                name="password"

                type="java.lang.String"/>

       </form-bean>

2.4 < global-exceptions>元素:

用于配置异常处理类。

包含多个元素:用来设置java异常和异常处理类org.apache.struts.action.ExceptionHandler之间的映射。
属性:

  • className:指定和元素对应的配置类。默认值为org.apache.struts.config.ExceptionConfig。

  • Handler:指定异常处理类。默认值为org.apache.struts.action.ExceptionHandler。

  • Key:指定在Resource Bundle中描述该异常的消息key。

  • Path:指定当一场发生时的转发路径。

  • Scope:指定ActionMessages实例的存放范围,可选值包括request和session。默认值为request。

  • Type:指定所需处理的异常类的名称。(必需的)

  • Bundle:指定Resources Bundle。

示例:

<global-exceptions>

     <exception

          key="expired.password"

          type="app.ExpiredPasswordException"

          path="/changePassword.jsp"/>

</global-exceptions>

2.5 < global-forwards>元素:用来声明全局的转发关系。

包含多个元素,元素用于把一个逻辑名映射到特定的URL。

属性:

  • className:指定和元素对应的配置类。默认值为org.apache.struts.action.ActionForward。

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

  • Name:转发路径的逻辑名。(必需的)

  • Path:指定转发或重定向的URL。(必需的)而且必须以”/”开头。contextRelative为true时,表示URL路径相对于当前上下文(context-ralative); contextRelative为false时,表示URL路径相对于当前应用(application-ralative);

  • Redirect:此项为true,执行重定向操作;为false,执行请求转发操作。

示例:

           <global-forwards>

           <!-- Default forward to "Welcome" action -->

           <!-- Demonstrates using index.jsp to forward -->

           <forward

                name="welcome"

                path="/Welcome.do"/>

           </global-forwards>

如果.jsp文件把请求转发给Action,可以使用一下代码:

     <html:link forward=”forward1”>

如果Action把请求转发给.jsp文件,可以使用一下代码:

   Return (mapping.findForward(“forward2”);

2.6 < action-mappings>元素:

包含< action>元素,描述了从特定的请求路径到相应的Action类的映射。

在元素中可以包含多个< exception>和< forward>元素,它们分别配置局部的异常

处理及请求转发仅被当前的Action所访问。

属性:

  • attribute: 设置和Action关联的ActionForm Bean在request或session范围内的属性key。例如,假定Form Bean存在于request范围内,并且此项设置为”myBean”,那么request.getAttribute(“myBean”)就可以返回该Bean的实例。

  • className:和< Action>元素对应的配置元素。默认值为org.apache.struts.action.ActionMapping。

  • forward:指定转发的URL路径。

  • includes:指定包含的URL路径。

  • input:指定包含输入表单的URL路径。当表单验证失败时,将把请求转发到该URL。

  • name:指定和该Action关联的ActionForm Bean的名字。该名字必须在元素中一定过。

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

  • parameter:指定Action的配置参数。在Action类的execute()方法中,可以调用ActionMapping对象的getParamter()方法来读取该配置参数。

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

  • scope:指定ActionForm的存在范围。可选值为request和session。默认为session

  • type:指定实现该Action类的真实类的路径和名称。(完整类名)

  • unknown:如果此项为true,表示可以处理用户发出的所有无效的ActionURL。默认值为false。

  • validate:指定是否要先调用ActionForm Bean的validate()方法。默认为true

  • < Action>元素的forward,includes,type属性相互排斥(即只能设置其中一项)。

示例:

     <Action   path=/search”

               type=”addressbook.actions.SearchAction”

               name=”searchForm”

               scope=”request”

               validate=true”

               input=/search.jsp”>

               <forward name=”success” path=/display.jsp”/>

      </action>

注意:局部< forward>元素和< exception>元素的优先级大于全局的。

2.7< controller>元素:

用于配置ActionServlet。

属性:

  • bufferSize:指定上载文件的输入缓冲的大小。默认值:4096

  • calssName:指定和元素对应的配置类。默认值为org.apache.struts.config.ControllerConfig。

  • contentType:指定响应结果的内容类型和字符编码。默认值为text/html。如果在Action或jsp网页中也设置了内容类型和字符编码,将会覆盖该设置。

  • locale:指定是否把Locale对象保存到当前用户的session中。默认值false

  • processorClass:指定负责处理请求的Java类的完整类名。默认值为org.apache.struts.action.RequestProcessor。或者扩展了该类的自定义类。

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

  • nochache:如果为true,在响应结果中将加入特定的头参数:pragma,cache-control和Expires,防止页面被存储在客户浏览器的缓存中。默认值为false。

示例:

       <controller  

contentType=”text/html;charset=UTF-8”

locale=true”

processorClass=”CustomRequestProcessor”/>

2.8.< message-resources>元素:用来配置resource bundle,resource bundle用于存放本地化消息文本。

属性:

  • className:和.元素对应的配置类。默认值为org.apache.struts.config.MessageResourcesConfig

  • factory:指定消息资源的工厂类。默认值为org.apache.struts.util.property.MessageResourcesFacotry

  • key:绑定在这个资源包中的ServletContext的属性主键,缺省值是Action.MESSAGES_KEY.

  • Null:指定MessageResources类如何处理未知的消息key。如果此项为true,将返回空字符串。如果为false,将返回类似”???global.label.missing???”的字符串,默认值为true

  • Parameter:指定recourse bundle的消息资源文件名。该路径相对于WEB-INF/classes而言。

示例:

         <message-resources parameter="MessageResources" />

2.9.< plug-in>元素:

用于配置struts插件。

属性:className:指定struts插件类。该插件类必须实现org.apache.struts.action.PlugIn接口。

示例

<plug-in className="org.apache.struts.tiles.TilesPlugin" >

      <!-- Path to XML definition file -->

      <set-property property="definitions-config"

                       value="/WEB-INF/tiles-defs.xml" />

      <!-- Set Module-awareness to true -->

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

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

    <set-property

        property="pathnames"

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

  </plug-in>

3、多个Struts-config.xml配置

Struts支持模块化开发,各个模块可以相互独立,配置在自己的Struts配置文件中。系统集成时,可以将这些Struts配置文件配置在一起,中间用“,”隔开。

  <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,/WEB-INF/struts-config_login.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>

4、配置命名空间

另外Struts还可以配置命名空间用于区分不同的URL

<!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>Archetype Created Web Application</display-name>

  <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>
    <init-param>
      <param-name>config/job</param-name>
      <param-value>/WEB-INF/struts-config_job.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>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

/log.do 访问第一
job/task.do 访问第二个

回到首页☞

最后

以上就是自然耳机为你收集整理的Struts配置文件1、Struts配置文件详解2、 Struts-config.xml配置文件讲解3、多个Struts-config.xml配置4、配置命名空间的全部内容,希望文章能够帮你解决Struts配置文件1、Struts配置文件详解2、 Struts-config.xml配置文件讲解3、多个Struts-config.xml配置4、配置命名空间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部