首页 > 代码库 > Struts2 -- 配置

Struts2 -- 配置

1.struts2配置文件加载顺序

    struts2框架要能执行,会先加载Web.xml文件中定义的StrutsPrepareAndExecuteFilter.

    在StrutsPrepareAndExecuteFilter类的的 init() 方法中对 Dispatcher 进行了初始化.

    在Dispatcher类的 init() 方法中描述了struts2配置文件加载的顺序:     

       init_FileManager();            init_DefaultProperties(); // [1] default.properties 默认常量配置文件。       
       init_TraditionalXmlConfigurations(); // [2] struts-default.xml, struts-plugin.xml(插件xml配置文件), struts.xml(自定义xml文件) init_LegacyStrutsProperties(); // [3] struts.properties(自定义的常量配置文件) init_CustomConfigurationProviders(); // [5] 自定义配置提供 init_FilterInitParameters() ; // [6] web.xml init_AliasStandardObjects() ; // [7] JavaBean加载

     /*  1.default.properties文件
                作用:定义了struts2框架中所有常量
                位置: org/apache/struts2/default.properties
                
            2.struts-default.xml
                作用:配置了bean,interceptor,result等。
                位置:在struts的core核心jar包.
                
              struts-plugin.xml
                它是struts2框架中所使用的插件的配置文件。
              struts.xml              
                我们使struts2所使用的配置文件。
                    
            3.自定义的struts.properties
                就是可以自定义常量。
                
            4.web.xml
            
            在开发中,后加载文件中的配置会将先加载文件中的配置覆盖。            
            default.properties
            struts-default.xml
            struts.xml

 

2.action的配置(struts.xml中)

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>       <package name="" namespace="/" extends="struts-default" abstract="">           <action name="" class="" method="" >              <result name="" type=""></result>          </action>      </package></struts>

1.<package>  作用:是用于声明一个包。用于管理action。
   1.name     它用于声明一个包名,包名不能重复,是唯一的。
     2.namespace  它与action标签的name属性合并确定了一个唯一访问action的路径。 默认值为""
     3.extends  它代表继承的包名。
     4.abstrace 它可以取值为true/false,如果为true,代表这个包是用于被继承的。

2<action>  用于声明 一个action
     1.name  就是action的一个名称,它是唯一的(在同包内) 它与package中的namespace确定了访问action的路径。
     2.class Action类的全名 默认值为:com.opensymphony.xwork2.ActionSupport
     3.method 要访问的Action类中的方法的名称,方法无参数 ,返回值为String. 默认值为:execute()

3.<result> 用于确定返回结果类型
     1.name  它与action中的方法返回值做对比,确定跳转路径。默认值是 "success"
   2.type  作用:是用于定义跳转方式
      type属性的值在struts-defalut.xml中可找到:
        <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
              <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
              <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
              <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
              <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
              <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
              <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
             <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
              <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
              <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
       dispatcher:它代表的是请求转发,也是默认值。它一般用于从action跳转到页面。
            chain:它也相当于请求转发。它一般情况下用于从一个action跳转到另一个action。
                
            redirect:它代表的是重定向  它一般用于从action跳转到页面
            redirectAction: 它代表的是重定向  它一般用于从action跳转另一个action。
                
           stream:代表的是服务器端返回的是一个流,一般用于下载。
    

4.默认的action

    <default-action-ref name="action的名称" />
  作用:配置了这个,当访问的路径,其它的action处理不了时,就会执行name指定的名称的action

5.action的默认处理类
    <default-class-ref class="cn.itcast.action.DefaultAction"/>
    如果设置了,那么在当前包下,默认处理action请的的处理类就为class指定的类。

    

 

  

 

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>        <!-- 常量配置 -->    <constant name="struts.action.extension" value="action,,"/>    <!-- 指定strus2框架默认拦截的后缀名 -->     <constant name="struts.i18n.encoding" value="utf-8"></constant>    <!-- 解决post请求乱码  -->    <constant name="struts.serve.static.browserCache" value="false"></constant>    <!-- 设置静态资源缓存  -->    <constant name="struts.devMode" value="true"></constant>    <!-- 提供详细报错页面,修改struts.xml后不需要重启服务器 -->          <package name="demo" namespace="/" extends="struts-default" abstract="">           <!--           标签写入顺序          1.result-types            2.interceptors           3.default-interceptor-ref           4.default-action-ref           5.default-class-ref           6.global-results            7.global-exception-mappings           8.action*          -->         <result-types>                 <result-type name="" class=""></result-type>         </result-types>                          <interceptors>                 <interceptor name="" class=""></interceptor>                 <interceptor-stack name=""></interceptor-stack>         </interceptors>        <default-interceptor-ref name=""></default-interceptor-ref>                  <default-action-ref name=""></default-action-ref>          <!-- 默认的Action:处理其它action处理不了的路径。  -->                    <default-class-ref class=""></default-class-ref>          <!-- action的默认处理类: 将默认处理action请的的处理类更改为指定的class类。 -->                     <global-results></global-results>
      <!-- 全局结果页面-->
<global-exception-mappings></global-exception-mappings> <action name="demo" class="" method="" > <result name="" type="">/index.jsp</result> </action> </package> <include file=""></include> <!-- 引入其他xml配置文件 --></struts>

 

Struts2 -- 配置