PackageProvider

PackageProvider 用于将struts xml中的package元素转成PackageConfig对象。

 

 由DefaultConfiguration 调用PackageProvider.loadPackages()方法,生成多个PackageConfig对象。

DefaultConfiguration 对PackageConfig对象处理生成RuntimeConfiguration。

 

RuntimeConfiguration在struts处理请求流程中被使用,struts解析请求的url而生成namesapce 和 actionName,从RuntimeConfiguration就可以获取对应Action的配置信息ActionConfig. 

 

 



 strus中 xml的配置元素:

 

<struts>  
    <!--用于对bean的定义,置于Contatiner中-->  
    <bean type="类型" name="实现类名称(为空则取默认值default)" class="实现类全路径" static="true/false(是否只是静态注入)" scope="default|request|session|singleton|thread"/>  
      
    <constant name="param1" value="value1">   
    <!--用于对bean参数的配置Contatiner中,可以代替properties文件-->  
      
      
 <package name="包名" namespace="/ 或 /xxx 或 /xxx/yyy " extends="struts-default(多个用逗号分隔,自动继承)" abstract="true/false (true:被子类扩展时才能被使用)" strict-method-invocation="">  
             <result-types>  
                <result-type name="结果类型名称" class="结果类型实现类" default="是否为默认的">  
                    <param name="param1">value1</param>  
                </result-type>  
              </result-types>  
            <interceptors>  
                <interceptor name="栏截器名称" class="栏截器实现类" >  
                        <param name="param1">value1</param>  
                </interceptor>      
          </interceptors>  
            <interceptor-stack name="栏截器堆栈名称">  
                    <interceptor-ref name="栏截器名称1|栏截器堆栈名称1">  
                        <param name="param1">value1</param>  
                    </interceptor-ref>  
                  <interceptor-ref name="栏截器名称2|栏截器堆栈名称2">  
                    <interceptor-ref name="栏截器名称3||栏截器堆栈名称3">  
          </interceptor-stack>  
          <interceptor-stack name="">  
                    。。。。。。  
          </interceptor-stack>  
            
          <default-interceptor-ref name="栏截器名称|栏截器堆栈名称">  
            <default-class-ref class=""/>  
              
       <global-results>  
           <result name="ACTION的返回值(不设置默认取success)" type="结果类型名称(如果为空则取本包或父包中result-type.default=true的)">  
            [<param name="param1">value1</param>|value值(需要result-type.class类中有DEFAULT_PARAM = 默认参数名,来对应value值)  ]  
           </result>  
       </global-results>  
  
  
       <global-exception-mappings>  
           <exception-mapping name ="为空取result属性" exception="java.lang.Exception" result="对应global-results.result.name">  
            <param name="param1">value1</param>  
           </exception-mapping>  
       </global-exception-mappings>  
  
       <action name="支持通配符 (如[*!*|*_*|User_*]),在method 或result中可以使用{1}或{2}表示第一个或第二个通配符值" class="如果未配置则取default-class" method="未定义则从url中获取,未取到则使用execute">  
            <result name="ACTION的返回值(不设置默认取success)" type="结果类型名称(如果为空则取result-type.default=true的)">  
            [<param name="param1">value1</param>|value值(需要result-type.class类中有DEFAULT_PARAM = 默认参数名,来对应value值)  ]  
           </result>  
            <!--本pagckage 和父package 中的global-results中的result 自动被添加进来 -->
            
           <exception-mapping name ="为空取result属性" exception="java.lang.Exception" result="对应action-results.result.name 或 global-results.result.name">  
            <param name="param1">value1</param>  
           </exception-mapping>
           <!--本pagckage 和父package 中的global-exception-mappings中的exception-mapping 自动被添加进来-->  
           
           
           <interceptor-ref name="栏截器名称1">  
                        <param name="param1">value1</param>(用于覆盖“栏截器名称1”定义时的参数)  
                    <interceptor-ref name="栏截器堆栈名称1">  
                        <param name="堆栈内栏截器名称1.param1">value1</param>(用于覆盖(栏截器堆栈名称1中某个栏截器)定义时的参数)  
                    </interceptor-ref> 
                    <!--如果未定义interceptor,则从本包中取默认的拦截器,没有默认则到父包中找--> 
                    
                    <allowed-methods>  
                    允许的方法名,多个方法名用逗号分隔  
                  </allowed-methods>  
       </action>  
         
       <default-action-ref name="name">  
   </package>  
   </struts>  
     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值