详解struts.xml配置文件constant常量配置问题

constant添加位置如下:

 

1.在开发中我们,一般action的请求struts2都会自动默认加上后缀.action,但是有些项目的时候,我们需要的是其他后缀名

因此可以通过常量来定义,如下:

<constant name="struts.action.extension" value="do,action,ims"/>

因此,在这里就给大家简介一下,这些常量一般会在哪里配置,

struts.xml

struts-default.xml

struts-plugin.xml

struts.xml

struts.properties

web.xml

注意,如果多个文件都配置了常量,后面的会覆盖前面的,因此,我们通常的配置时在struts.xml中配置。当然也有配置在web.xml里面这个也是常见的,如下:

<filter-mapping>

<filter-name>SignOnFilter</filter-name>

<url-pattern>*.imus</url-pattern>

</filter-mapping>

那么如果你想在constant中启用多个后缀名,只需要用,分割开来,就ok了。

2.struts2指定默认编码集

<constant name="struts.i18n.encoding" value="UTF-8"/>

Tomcat接收中文时默认是以8859接收的

为什么需要这个配置呢?因为HttpServletRequest的setCharacterEncoding方法和freemarker、valocity的输出

指定Web应用的默认编码集.该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312
提示:当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法

3.改变常量后不重启服务器

<constant name="struts.configuration.xml.reload" value="true"/>

系统默认为false 这个我们通常是在开发环境中来使用,这样我们修改完配置文件之后,就不需要重启服务器,在应用环境中设为false

4.设置浏览器是否缓存静态内容,默认为TRUE  开发阶段最好关闭,以免导致更改之后看不到效果

<constant name="struts.server.static.browserCache" valur="false"/>

因为应用环境牵涉到系统速度的问题,所以我们一般设为true,这样可以提高系统的加载速度

5.默认的视图主题

<constant name="struts.ui.theme" value="simple"/>

为什么这样设置呢?因为struts2一些标签除了会产生本身需要的html代码之外,还可能产生一些系统本身不需要的乱七八糟的html代码,会影响到我们的界面,所以我们经常如此设置该属性的默认值是xhtml

6.与spring集成时,指定spring负责action对象的创建

<struts name="struts.objectFactory" value="spring"/>

不加这个常量配置,我们无法集成struts2和spring,意思就是说action创建交由spring工厂创建

7.上传文件大小限制

<struts name="struts.multipart.maxSize" value="10701096"/>

该属性指定Struts 2文件上传中整个请求内容允许的最大字节数

8.struts2支持动态方法调用

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

具体点应该如下: 
其实在url里我们可以这样访问 
http://localhost:8080/exam/login!checkLogin.action 
login!checkLogin    login是我的struts.properties配置文件中的一个action的名字 而checkLogin是这个action类里的一个方法。 
我们可以使用action名 + 感叹号 + 方法名进行方法调用  这个在开发阶段开启可以加速我们开发人员的开发调试,但是在项目完成时还是设为false的好。毕竟直接访问类的方法是不安全的。 
至于xml中的通配符(*)在设为 false时还是可以用的 

9.在如下面多个星号的配置:

<action name=”*/*” method=”{2}” 
class=”com.zhang.action.{1}Action”>
<result name=”success”>/pages/success.jsp</result>
<result name=”error”>/pages/error.jsp</result>
</action>

    其中第一个“*”映射到具体的某个action类,第二个“*”映射到该类的方法。不过这里要注意的name=”*/*",是相当于客户端要发送如 “Login/init.action”,在地址栏里就变成了/struts/Login/init.action,那服务器到底是会认 /init.action还是/Login/init.action呢。其实服务器默认还是/init.action,如果要使带"/"的action生 效,需要把default.properties中的

struts.enable.SlashesInActionNames = false改为true就可以

参考博客:https://blog.csdn.net/u010506940/article/details/37969435

                  https://blog.csdn.net/youlingqishi11/article/details/7626060?utm_source=blogxgwz9

                  https://blog.csdn.net/wfcaven/article/details/5937557

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值