Struts2 -- 配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 -- 配置的主要内容,如果未能解决你的问题,请参考以下文章

struts2基本的配置代码

struts2的文件配置以及注释代码

Struts2基本使用--配置文件简述

struts2之day01——04Struts2相关配置

漏洞通告Struts2远程代码执行漏洞通告(S2-057)

Struts2请求参数校验