Struts2-----4、Struts2的常量配置

                Struts2默认配置文件(struts.xml):放在Web应用类加载路径(WEB-INF/classes路径)下,其最大的作用就是配置Action和请求间的对应关系,并配置逻辑视图名和物理视图资源之间的对应关系。此外还可配置Bean、常量、导入其他配置文件等

Eclipse生成、部署Web项目时,自动将src路径下除*.java外的所有文件都复制到Web应用的WEB-INF/classes路径下


   (1)、常量配置

                 Struts2除用struts.xml文件来管理配置外,还可用struts.properties(置于类加载路径下,Struts2框架就可加载该文件)文件来管理常量

                 在struts2-core-2.2.1.jar压缩文件的org/apache/struts2路径下有一个default.properties文件,该文件里为Struts2的所有常量指定了默认值(Struts2支持的常量)

                 

                 可在struts.properties中定义的Struts2常量:

                 struts.configuration:指定加载Struts2配置文件的配置管理器;默认值是org.apache.struts2.config.DefaultConfiguration,这是Struts2默认的配置文件管理器;若需实现自己的配置管理器,开发者可实现一个Configuration接口的类,该类可自己加载Struts2配置文件

                struts.locale:指定Web应用的默认Locale;默认Locale是en_US

                struts.i18n.encoding:指定Web应用的默认编码集;该常量对于处理中文请求参数非常有用,对于获取中文请求参数的值,应将该常量值设为GBK或GB2312;默认值为UTF-8;设置参数为GBK时,相当于执行了HttpServletRequest的setCharacterEncoding(“GBK”)方法


                struts.objectFactory:指定Struts2默认的ObjectFactory Bean

                struts.objectFactory.spring.autoWire:指定Spring框架的自动装配模式,默认值为name,即默认根据Bean的name自动装配

                struts.objectFactory.spring.useClassCache:指定整合Spring框架时,是否缓存Bean实例;默认为true

                struts.objectFactory.spring.autoWire.alwaysRespect:保证总是使用自动装配策略

                struts.objectTypeDeterminer:指定Struts2的类型检测机制,支持tiger和notiger两个常量值

                struts.multipart.parser:指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该常量支持cos(cos文件上传框架)、pell(pell文件上传框架)和jakarta(common-fileupload文件上传框架,默认值)等常量值

                struts.multipart.saveDir:指定上传文件的临时保存路径;默认值javax.servlet.context.tempdir

                struts.multipart.maxSize:指定Struts2文件上传中整个请求内容允许的最大字节数

                struts.custom.properties:指定Struts2应用加载用户自定义的常量文件,该自定义常量文件指定的常量不会覆盖struts.properties文件中指定的常量,如需加载多个自定义常量文件,多个自定义常量文件的文件名以英文逗号隔开

                struts.mapper.class:指定将HTTP请求映射到指定Action的映射器;默认org.apache.struts2.dispatcher.mapper.DefaultActionMapper:根据请求的前缀与Action的name常量完成映射

                struts.action.extension:指定需要Struts2处理的请求后缀,该常量默认值是action,即所有匹配*.action的请求都由Struts2处理;如需指定多个请求后置,则多个后缀之间以英文逗号隔开

                struts.serve.static:设置是否通过Jar文件提供静态内容服务,默认true

                struts.serve.static.browserCache:设置浏览器是否缓存静态内容;当应用处于开发阶段时,希望每次请求都获得服务器的最新响应,则可设置该常量为false

                struts.enable.DynamicMethodInvocation:设置Struts2是否支持动态方法调用(默认true)

                struts.enable.SlashesInActionNames:设置Struts2是否允许在Action名中使用斜线。默认false

                struts.tag.altSyntax:指定是否允许在Struts2标签中使用表达式语法,因通常需在标签中使用表达式语法,故应设为true;默认为true

                struts.devMode:设置Struts2应用是否使用开发模式,若为true,则可在应用出错时显示更多、更友好的出错提示;默认false;通常,应用在开发阶段,该常量设为true,相当于把struts.i18n.reload、struts.configuration.xm.reload都设为true;当进入产品发布阶段后,设为false

                struts.i18n.reload:设置是否每次HTTP请求到达时,系统都重新加载资源文件;默认false;在开发阶段将该常量设为true有利于开发,在产品发布阶段应设为false

                struts.ui.theme:指定视图标签默认的视图主题;默认xhtml

                struts.ui.templateDir:指定视图主题所需模板文件的位置,默认是template;即默认加载template路径下的模板文件

                struts.ui.templateSuffix:指定模板文件的后缀,默认为ftl(FreeMarker);还可取值vm(Velocity)、jsp(JSP)模板

                struts.configuration.xml.reload:设置当struts.xml文件改变后,系统是否自动重新加载该文件;默认值false

                struts.velocity.configfile:指定Velocity框架所需的velocity.properties文件的位置;默认为velocity.properties

                struts.velocity.contexts:指定Velocity框架的Context位置,若该框架有多个Context,多个Context间用英文逗号隔开

                struts.velocity.toolboxlocation:指定Velocity框架的toolbox的位置

                struts.url.http.port:指定Web应用所在的监听端口;该常量通常没有太大的用处,只是当Struts2需要生成URL时(如Url标签),该常量才提供Web应用的默认端口

                struts.url.https.port:类似struts.url.http.port常量的作用。区别是该常量指定的是Web应用的加密服务端口

                struts.url.includeParams:指定Struts2生成URL时是否包含请求参数;该常量接受none、get、all三个常量值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数

                struts.custom.i18n.resources:指定Struts2应用所需的国际化资源文件,如有多个国际化资源文件,则多个资源文件的文件名以英文逗号隔开

                struts.dispatcher.parameterWorkaround:对于某些Java EE服务器,不支持HttpServletRequest调用getParameterMap()方法,此时可设置该常量值为true来解决该问题;默认false;对于WebLogic、Orion和OC4J服务器、设为true


                struts.freemarker.manager.classname:指定Struts2使用的FreeMarker管理器;默认值org.apache;.struts2.views.freemarker.FreemarkerManager(Struts2内建的FreeMarker管理器)

                struts.freemarker.templatesCache:设置是否缓存FreeMarker模板;默认false

                struts.freemarker.beanwrapperCache:设置是否缓存FreeMarker的Bean模型;默认false

                struts.freemarker.wrapper.altMap:默认true

                struts.freemarker.mru.max.strong.size:默认100


                struts.xslt.nocache:设置XSLT Result是否使用样式缓存

                struts.mapper.alwaysSelectFullNamespace:设置是否总是使用命名空间;默认false


                struts.ognl.allowStaticMethodAccess:设置是否允许在OGNL表达式中调用静态方法;默认false

                struts.throwExceptionOnFailure:设置当表达式计算失败时、或表达式里某个常量不存在时是否抛出一个RuntimeException;默认false

                struts.ognl.logMissingProperties

                struts.ognl.enableExpressionCache:设置对OGNL表达式的计算结果进行缓存;这种缓存可能导致内存泄露;默认true


                Struts2默认会加载类加载路径下的struts.xml(开发者定义的默认配置文件)、struts-default.xml(Struts2框架自带的配置文件)、struts-plugin.xml(Struts2插件的默认配置文件)


                Struts2配置常量有3种方式:

                1.通过struts.properties文件


                2.通过struts.xml配置文件(推荐)  

<struts>
      <!—通过constant元素配置Struts2的属性 -->
      <constant name=”struts.custom.il8n.resources” value=”mess”/>
      ......
</struts>


     3.通过Web应用的web.xml文件

 <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      <init-param>
         <param-name>struts.custom.il8n.resources</param-name>
         <param-value>mess</param-value>
      </init-param>
</filter>
 

              Struts2的所有配置文件(包括struts-default.xml、struts-plugin-xml甚至用户自定义的、只要能被Struts2加载的配置文件中都可使用常量配置的方式来配置Struts2常量)


             

通常Struts2框架按如下搜索顺序加载Struts2常量:

struts-default.xml:该文件保存在struts-core-2.1.1.jar文件中

struts-plugin.xml:该文件保存在struts2-Xxx-2.1.1.jar等Struts2插件Jar文件中

struts.xml:该文件时Web应用默认的Struts2配置文件

struts.properties:该文件时Struts2默认的配置文件

Web.xml:该文件时Web应用的配置文件

 

如果在多个文件中配置了同一个Struts2常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值


完整的struts.xml文件骨架:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
 "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<!-- Struts2配置文件的根元素  -->
<struts>
   <!—可出现 >=0 次-->
   <constant name="" value=""></constant>
  
   <!—可出现 >=0 次-->
   <bean class="" name="" type="" scope="" static="" optional="" />
  
   <!—可出现 >=0 次-->
   <include file=""/>
  
   <!-- 可出现0或1次 -->
<unknown-handler-stack >
       <unknown-handler-ref name="处理器名">...</unknown-handler-ref>
    </unknown-handler-stack>
  
   ********************************************************************
   <!—Struts配置文件的核心,可出现 >=0 次 -->
   <package name="必填的包名" extends="[struts-default]" namespace="" abstract="" externalRefernceResolver="">
      <!-- 可出现0或1次 -->
      <result-types>
         <!—必须出现,可出现无限次 -->
         <result-type name="" class="" default="true|false"></result-type>
         <!—可出现 >=0 次 -->
         <param name="参数名">参数值</param>
      </result-types>
     
      <!-- 可出现0或1次;interceptor和interceptor-stack至少出现其中之一,也可二者都出现-->
      <interceptors>
         <!—可出现 >=0 次 -->  
         <interceptor name="" class="">
            <!—- 可出现 >=0 次 -->
            <param name="参数名">参数值</param>
         </interceptor>
          
         <!—- 可出现 >=0 次 -->
         <interceptor-stack name="">
            <!—- 必须出现,可出现无限次 -->
            <interceptor-ref name="">
                  <!—- 可出现 >=0 次 -->
                  <param name="参数名">参数值</param>
            </interceptor-ref>
        </interceptor-stack>
      </interceptors>
      
      <!-- 该元素可出现0或1次 -->
      <default-interceptor-ref name="">
         <!—- 可出现 >=0 次 -->
         <param name="参数名">参数值</param>
      </default-interceptor-ref>
     
      <!-- 该元素可出现0或1次 -->
      <default-action-ref name="">
         <!—- 可出现 >=0 次 -->
         <param name="参数名">参数值</param>
      </default-action-ref>
 
      <!-- 该元素可出现0或1次 -->
      <default-class-ref class="">...</default-class-ref>
     
      <!-- 该元素可出现0或1次 -->
      <global-results>
         <!—- 必须出现,可出现无数次 -->
         <result name="" type="">
映射资源
            <!—- 可出现 >=0 次 -->
            <param name="参数名">参数值</param>
         </result>
      </global-results>
     
      <!-- 可出现0或1次 -->
      <global-exception-mappings>
         <!-- 必须出现,可出现无限次 -->
         <exception-mapping result="" exception="" result="">
            异常处理资源
            <!—- 可出现 >=0 次 -->
            <param name="参数名">参数值</param>
         </exception-mapping>
      </global-exception-mappings>
    
      <!—定义Action,可出现 >=0 次 -->
      <action name="" class="" method="" converter="">
         <!—- 可出现 >=0 次 -->
         <param name="参数名">参数值</param>
        
         <!—- 可出现 >=0 次 -->
         <result name="" type="">
映射资源
            <!—- 可出现 >=0 次 -->
            <param name="参数名">参数值</param>
         </result>
         
<!—- 可出现 >=0 次 -->
         <interceptor-ref name="">
            <!-- 该元素可出现0或多次 -->
            <param name="参数名">参数值</param>
         </interceptor-ref>
           
         <!—- 可出现 >=0 次 -->
         <exception-mapping result="" exception="" result="">
            异常处理资源
            <!—- 可出现 >=0 次 -->
            <param name="参数名">参数值</param>
         </exception-mapping>
      </action>
      </package>
</struts>
   

   (2)、包含其他配置文件

         <struts> 

            <!—通过include元素导入其他配置文件 -->

            <include file=”struts-part1.xml” />

            ......

         </struts>

         

         通过这种方式,Struts2能以一种模块化的方式来管理struts.xml配置文件

         被包含的文件(置于类加载路径下)是标准的Struts2配置文件,一样包含了DTD信息、Struts2配置文件的根元素等信息




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值