内容目录
在Struts 2的配置文件struts.xml中,我们可以在<struts>节点中添加一个或多个<constant>节点,以覆盖Struts的某些配置的默认属性值。例如:
<?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>
<!-- Struts常量配置 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.action.extension" value="htm" />
<!--...省略后面的内容...-->
</struts>
实际上,这些属性,我们也可以在struts.properties文件中进行设置。
那么,到底有哪些配置项可以设置呢,每个配置项又分别表示什么含义呢?此时,我们可以参考struts2-core.jar压缩文件中的default.properties文件(一般位于org/apache/struts2目录下),Struts2就是通过该文件来设置所有配置项的默认值的(我们在struts.properties或struts.xml等文件中的设置,只是为了覆盖该文件配置的属性默认值)。
下面,我们直接给出当前最新的Struts 2.3.16.3中的default.properties文件,并给出每个配置项的注释信息的中文翻译(未改动任何配置项,仅仅对注释信息进行了翻译)。
注意:不同版本的Struts,其配置项也略有不同。下面会用"####"标注出比较常用的配置项。
# 设置默认的locale区域信息,默认为request.getLocale()的值
# struts.locale=en_US
#### 设置请求的字符编码,Struts 2会调用request.setCharacterEncoding("UTF-8")
struts.i18n.encoding=UTF-8
#### 如果指定对象工厂类的全名,则默认的对象工厂(com.opensymphony.xwork2.ObjectFactory)将被覆盖
# 注意:某些情况下也支持简写形式,例如"spring",意即使用spring的对象工厂覆盖Struts 2自身默认的对象工厂
# 此外,你也可以在此处提供一个com.opensymphony.xwork2.ObjectFactory的子类
# struts.objectFactory = spring
# 当使用SpringObjectFactory时,指定自动装配的逻辑
# 有效值可以为:name(默认值)、type、auto、constructor
# 它们分别表示:根据属性名称、属性类型、自动(构造器+类型)、构造器进行装配
struts.objectFactory.spring.autoWire = name
# 指示struts-spring集成是否应该缓存类实例
# 通常不建议修改该值
# 有效值为:true(默认值), false
struts.objectFactory.spring.useClassCache = true
# 确保装配策略始终受到重视
# 有效值为:true、false(默认值)
struts.objectFactory.spring.autoWire.alwaysRespect = false
# 指定默认的对象类型鉴定器的类名。
# Struts 使用它来检测对象的类型。
# 注意:某些情况下Struts支持简写形式,例如:"tiger" 或者 "notiger"
# 你可以在此处自行指定一个com.opensymphony.xwork2.util.ObjectTypeDeterminer接口实现的类名
# 注意:Struts 默认使用com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer(即上面的"tiger"),它使用泛型来处理类型检测。
# 从XWork 2开始,com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer就已经过时了,现在它的功能已经被集成进了DefaultObjectTypeDeterminer。
# 使用"notiger"可以禁用"tiger"支持。
#struts.objectTypeDeterminer = tiger
#struts.objectTypeDeterminer = notiger
# 指定处理HTTP POST请求、采用"multipart/form-data"(一般用于文件上传)的MIME类型编码的解析器。
# struts.multipart.parser=cos
# struts.multipart.parser=pell
struts.multipart.parser=jakarta
#### 存储上传的文件的目录,默认使用javax.servlet.context.tempdir
struts.multipart.saveDir=
#### 指定允许接收multipart请求数据的最大字节数
struts.multipart.maxSize=2097152
# 加载自定义的附加属性文件,不用指定".properties后缀"(不会覆盖struts.properties!)
# struts.custom.properties=application,org/apache/struts2/extension/custom
# 指定用于处理URL和action如何映射的类
#struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper
#### 用于DefaultActionMapper
# 指定Struts 可以处理那些后缀的URL请求
# 你可以提供一个逗号分隔的列表,例如"struts.action.extension=action,jnlp,do"
# 这表示Struts 将处理 "*.action"、"*.jnlp"、"*.do"形式的URL请求
# 空白的extension(空字符串)允许你匹配目录列表以及纯粹的action名称
# 不过这样会干扰静态资源的访问,如果你不想干扰静态资源,你可以在逗号之前指定一个空字符串
# 例如:"struts.action.extension=," 或者"struts.action.extension=x,y,z,,"
struts.action.extension=action,,
# 用于FilterDispatcher
# 如果为true,Struts将会提供其jar文件中(struts-core.jar中的"/org/apache/struts2/static"目录)的静态内容
# 如果为false,只有位于"<context_path>/struts"的静态内容可用
struts.serve.static=true
# 用于FilterDispatcher
# 指定浏览器是否缓存静态内容
# 注意:该属性只有在struts.serve.static=true时才生效
# 如果为true,Struts将会写入让浏览器缓存内容的响应头信息
# (使用 Date、 Cache-Content、 Pragma、 Expires 头字段)
# 如果为false,Struts将会写入禁止浏览器缓存内容的响应头信息
# (使用 Cache-Content、 Pragma、 Expires 头字段)
# 在开发环境中,你可以将其改为false,以便于每次请求时反映出静态内容的更改
struts.serve.static.browserCache=true
#### 如果你希望禁用内置的通过URL请求的动态方法调用,你可以将其设为false
# 如果它包含:URL类似"foo!bar.action"(调用名为"foo"的action的bar()方法),或者参数类似"method:bar"(而不是"action:foo")
# 你可以使用通配符的方式来替代它,例如:<action name="*/*" method="{2}" class="actions.{1}">
struts.enable.DynamicMethodInvocation = false
# 指定action名称中是否允许包含斜杠"/"。
# 如果为false,Action名称不能有斜杠,也无法通过任何目录前缀来访问。
# 这是WebWork应用期望的传统行为
# 如果你想使用通配符,并在URL中保存值,以便于通过通配符模式来获取,你可以将其设为true。
# 例如:<action name="*/*" method="{2}" class="actions.{1}">
# 可以匹配"/foo/edit"或者"/foo/save"
struts.enable.SlashesInActionNames = false
# 禁用"action:"前缀支持
struts.mapper.action.prefix.enabled = false
# 阻止通过"action:"前缀来访问其他命名空间中的Action
struts.mapper.action.prefix.crossNamespaces = false
# 允许为Struts标签的字符串类型的属性使用%{}表达式
struts.tag.altSyntax=true
#### 指定是否是开发模式
# 如果设为true,Struts将会执行更多对开发人员友好的设置,这包括:
# struts.i18n.reload = true
# struts.configuration.xml.reload = true
# 将各种debug级别或可忽略的问题提升到错误级别
# 例如:通常情况下,一个到"foo.action?someUnknownField=true"的请求应该被忽略(因为来自网络的任何值都应该是不受信任的)
# 然而,在开发模式下,知道错误在什么时候发生,并且马上将它们告知给开发人员可能是非常有用的
struts.devMode = false
#### 当设为true时,资源包(resource bundle)将在会每次请求时被重新加载
# 这适用于开发环境,但绝不要用于生产环境
struts.i18n.reload=false
#### 标准的UI主题
# 改变它,将默认使用对应路径下的JSP控制标签模板
struts.ui.theme=xhtml
struts.ui.templateDir=template
# 改变此值,将使用一个不同的token来表示模板主题的扩展
struts.ui.theme.expansion.token=~~~
# 设置默认的模板类型(文件后缀):ftl、vm或jsp
struts.ui.templateSuffix=ftl
#### 配置重新加载
# 如果为true,当struts.xml被更改时,将导致重新加载配置
struts.configuration.xml.reload=false
# 指定velocity.properties文件的位置
# 默认为 velocity.properties
struts.velocity.configfile = velocity.properties
# 以逗号隔开的多个VelocityContext类名的列表,用于链接到StrutsVelocityContext
struts.velocity.contexts =
# 指定velocity toolbox的位置
struts.velocity.toolboxlocation=
# 用于创建URL,例如UrlTag
struts.url.http.port = 80
struts.url.https.port = 443
# URL标签生成URL时是否包含请求参数
# 可能的值为:none, get 或 all
# 分别表示:不包含、只包含get请求参数、包含所有请求参数
struts.url.includeParams = none
#### 加载自定义的默认资源包(resource bundles),多个资源以逗号隔开
# struts.custom.i18n.resources=testmessages,testmessages2
#### 某些应用服务器(例如:WebLogic, Orion, and OC4J)不支持调用HttpServletRequest.getParameterMap()
# 此时,应该将该值设为true。
struts.dispatcher.parametersWorkaround = false
# 配置使用的Freemarker Manager类
# 这允许用户在需要的时候插入自定义的FreeMarker Manager
# 它必须继承org.apache.struts2.views.freemarker.FreemarkerManager
#struts.freemarker.manager.classname=org.apache.struts2.views.freemarker.FreemarkerManager
# 是否启用FreeMarker的模板缓存
# 如果为true,它与将模板复制到"WEB_APP/templates"下具有相同的效果
struts.freemarker.templatesCache=false
# 对BeanWrapper启用数据模型缓存
struts.freemarker.beanwrapperCache=false
# 详情请参考freemarker的StrutsBeanWrapper的javadoc
# 将该值设为false,将使用常规的BeansWrapper逻辑来处理Map类型的数据
struts.freemarker.wrapper.altMap=true
# 配置freemarker的MruCacheStorage类的maxStrongSize属性
# 该属性表示允许MRU缓存引擎缓存的强引用模板的最大数量
# 当设为0时,可以在重度负载的应用中表现得更好
# 更多细节请检查WW-3766
struts.freemarker.mru.max.strong.size=0
# 配置XSLTResult类是否使用样式表缓存
# 建议对开发人员设为true,生产环境设为false
struts.xslt.nocache=false
#### 是否始终选择完整的命名空间
# 默认情况下(false),Struts2会根据URL逐级向上递归查找对应的命名空间
# 例如:如果请求URL为"/path1/path2/path3/test.action",配置文件的namespace为"/path1",
# Struts2 会递归向上查找是否存在命名空间为"/path1/path2/path3"、"/path1/path2"或"/path1",并且name为"test"的Action
# 如果找到就调用对应的Action。
# 如果该常量为true,则Struts2将不再递归查找,而是直接把URL中的目录部分当作完整的命名空间去查找
struts.mapper.alwaysSelectFullNamespace=false
# 是否允许OGNL表达式访问静态方法
struts.ognl.allowStaticMethodAccess=false
# 当表达式中的某个属性不存在,或表达式计算失败时,是否抛出一个RuntimeException
struts.el.throwExceptionOnFailure=false
# 对于未找到的属性,是否日志记录相应的警告信息(非常详细)
struts.ognl.logMissingProperties=false
# 缓存被解析的OGNL表达式,但如果应用程序生成了大量不同的表达式,则可能导致内存泄露
struts.ognl.enableExpressionCache=true
# 指示Dispatcher是否应该通过调用sendError()来处理未预料的异常
# 或简单地将它重新抛出为一个ServletException,以便于之后被类似Spring Security的其他框架处理。
struts.handle.exception=true
0 条评论
撰写评论