struts2中涉及到的配置文件有:web.xml、struts.xml、struts.properties、default.properties、struts-default.xmlweb.xmlStruts2与Web应用的整合需要借助于web.xml,通常,所有的MVC框架都需要Web应用加载一个核心控制器。struts2的核心控制器设计成一个Filter,为了让Web应用加载该Filter,需要在web.xml中配置该Filter。通常该Filter拦截所有的用户请求,如果Web应用使用Servlet2.4以前的规范,不会自动加载Struts2框架的标签文件(struts-tags.tld),必须手动加载。该标签文件位于struts2-core-x.x.x.jar下的META-INF下struts.xml(接触最多)该文件是struts2的核心配置文件,主要用于自定义配置其业务控制器Action、Interceptor、Result等。该文件是用DTD来验证的,可以通过其DTD验证文件(struts2-core-x.x.x.jar/struts-2.3.dtd)查看struts.xml中可以填写哪些标签。默认情况下struts2框架自动加载放在WEB-INF/classes路径下的struts.xml文件。在应用规模增大的时候,为了避免struts.xml文件过于臃肿,可以将其按模块分为多个配置文件,然后在struts.xml文件中包含这多个文件。该文件通常要extends于struts-default.xml使其具有struts2默认定义的一些行为。 struts2 org.apache.struts2.dispatcher.ng.filter .StrutsPrepareAndExecuteFilter ..... struts2 /* index.jsp 除此之外,Struts2还提供了一种插件式的方式来管理配置文件。 struts.properties该文件是struts2框架的全局属性文件,标准的properties文件,包含系列的key-value对。该文件通常存放于WEB-INF/classes路径下。 Struts2提供了三种方式来管理Struts2的属性: 1、通过struts.properties 2、在struts.xml中配置constant元素。 3、在web.xml中struts2 filter的 ... 元素 例如: struts.properties中的如下配置 struts.i18n.encoding=UTF-8相当于struts.xml中的如下配置 相当于web.xml中的如下配置 default.properties 该文件位于struts2-core-x.x.x.jar包下的org.apache.struts2包中。这个文件提供了一种更改框架默认行为方式的机制。一般情况下,不是打算让调试更加方便,根本无须修改这个文件。在struts.properties文件中定义的属性都可以在web.xml文件的init-param标签中定义,或者通过struts.xml文件中的constant标签修改, 还可以在类路径下直接定义一个struts.properties修改原文件中属性。该文件是一个只读文件,无法直接修改。 默认的default.properties ## $Id: default.properties 1384108 2012-09-12 20:18:45Z lukaszlenart $## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.#### START SNIPPET: complete_file### Struts default properties###(can be overridden by a struts.properties file in the root of the classpath)###### Specifies the Configuration used to configure Struts### one could extend org.apache.struts2.config.Configuration### to build one's customize way of getting the configurations parameters into Struts# struts.configuration=org.apache.struts2.config.DefaultConfiguration### This can be used to set your default locale and encoding scheme# struts.locale=en_USstruts.i18n.encoding=UTF-8### if specified, the default object factory can be overridden here### Note: short-hand notation is supported in some cases, such as "spring"### Alternatively, you can provide a com.opensymphony.xwork2.ObjectFactory subclass name here# struts.objectFactory = spring### specifies the autoWiring logic when using the SpringObjectFactory.### valid values are: name, type, auto, and constructor (name is the default)struts.objectFactory.spring.autoWire = name### indicates to the struts-spring integration if Class instances should be cached### this should, until a future Spring release makes it possible, be left as true### unless you know exactly what you are doing!### valid values are: true, false (true is the default)struts.objectFactory.spring.useClassCache = true### ensures the autowire strategy is always respected.### valid values are: true, false (false is the default)struts.objectFactory.spring.autoWire.alwaysRespect = false### if specified, the default object type determiner can be overridden here### Note: short-hand notation is supported in some cases, such as "tiger" or "notiger"### Alternatively, you can provide a com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation name here### Note: By default, com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer is used which handles type detection### using generics. com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer was deprecated since XWork 2, it's### functions are integrated in DefaultObjectTypeDeterminer now.### To disable tiger support use the "notiger" property value here.#struts.objectTypeDeterminer = tiger#struts.objectTypeDeterminer = notiger### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data# struts.multipart.parser=cos# struts.multipart.parser=pellstruts.multipart.parser=jakarta# uses javax.servlet.context.tempdir by defaultstruts.multipart.saveDir=struts.multipart.maxSize=2097152### Load custom property files (does not override struts.properties!)# struts.custom.properties=application,org/apache/struts2/extension/custom### How request URLs are mapped to and from actions#struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper### Used by the DefaultActionMapper### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do### The blank extension allows you to match directory listings as well as pure action names### without interfering with static resources, which can be specified as an empty string### prior to a comma e.g. struts.action.extension=, or struts.action.extension=x,y,z,,struts.action.extension=action,,### Used by FilterDispatcher### If true then Struts serves static content from inside its jar.### If false then the static content must be available at struts2 org.apache.struts2.dispatcher.ng.filter .StrutsPrepareAndExecuteFilter struts.i18n.encoding true /strutsstruts.serve.static=true### Used by FilterDispatcher### This is good for development where one wants changes to the static content be### fetch on each request.### NOTE: This will only have effect if struts.serve.static=true### If true -> Struts will write out header for static contents such that they will### be cached by web browsers (using Date, Cache-Content, Pragma, Expires)### headers).### If false -> Struts will write out header for static contents such that they are### NOT to be cached by web browser (using Cache-Content, Pragma, Expires### headers)struts.serve.static.browserCache=true### Set this to false if you wish to disable implicit dynamic method invocation### via the URL request. This includes URLs like foo!bar.action, as well as params### like method:bar (but not action:foo).### An alternative to implicit dynamic method invocation is to use wildcard### mappings, such as struts.enable.DynamicMethodInvocation = true### Set this to true if you wish to allow slashes in your action names. If false,### Actions names cannot have slashes, and will be accessible via any directory### prefix. This is the traditional behavior expected of WebWork applications.### Setting to true is useful when you want to use wildcards and store values### in the URL, to be extracted by wildcard patterns, such as### to match "/foo/edit" or### "/foo/save".struts.enable.SlashesInActionNames = false### use alternative syntax that requires %{} in most places### to evaluate expressions for String attributes for tagsstruts.tag.altSyntax=true### when set to true, Struts will act much more friendly for developers. This### includes:### - struts.i18n.reload = true### - struts.configuration.xml.reload = true### - raising various debug or ignorable problems to errors### For example: normally a request to foo.action?someUnknownField=true should### be ignored (given that any value can come from the web and it### should not be trusted). However, during development, it may be### useful to know when these errors are happening and be told of### them right away.struts.devMode = false### when set to true, resource bundles will be reloaded on _every_ request.### this is good during development, but should never be used in productionstruts.i18n.reload=false### Standard UI theme### Change this to reflect which path should be used for JSP control tag templates by defaultstruts.ui.theme=xhtmlstruts.ui.templateDir=template#sets the default template type. Either ftl, vm, or jspstruts.ui.templateSuffix=ftl### Configuration reloading### This will cause the configuration to reload struts.xml when it is changedstruts.configuration.xml.reload=false### Location of velocity.properties file. defaults to velocity.propertiesstruts.velocity.configfile = velocity.properties### Comma separated list of VelocityContext classnames to chain to the StrutsVelocityContextstruts.velocity.contexts =### Location of the velocity toolboxstruts.velocity.toolboxlocation=### used to build URLs, such as the UrlTagstruts.url.http.port = 80struts.url.https.port = 443### possible values are: none, get or allstruts.url.includeParams = none### Load custom default resource bundles# struts.custom.i18n.resources=testmessages,testmessages2### workaround for some app servers that don't handle HttpServletRequest.getParameterMap()### often used for WebLogic, Orion, and OC4Jstruts.dispatcher.parametersWorkaround = false### configure the Freemarker Manager class to be used### Allows user to plug-in customised Freemarker Manager if necessary### MUST extends off org.apache.struts2.views.freemarker.FreemarkerManager#struts.freemarker.manager.classname=org.apache.struts2.views.freemarker.FreemarkerManager### Enables caching of FreeMarker templates### Has the same effect as copying the templates under WEB_APP/templatesstruts.freemarker.templatesCache=false### Enables caching of models on the BeanWrapperstruts.freemarker.beanwrapperCache=false### See the StrutsBeanWrapper javadocs for more informationstruts.freemarker.wrapper.altMap=true### maxStrongSize for MruCacheStorage for freemarkerstruts.freemarker.mru.max.strong.size=100### configure the XSLTResult class to use stylesheet caching.### Set to true for developers and false for production.struts.xslt.nocache=false### Whether to always select the namespace to be everything before the last slash or notstruts.mapper.alwaysSelectFullNamespace=false### Whether to allow static method access in OGNL expressions or notstruts.ognl.allowStaticMethodAccess=false### Whether to throw a RuntimeException when a property is not found### in an expression, or when the expression evaluation failsstruts.el.throwExceptionOnFailure=false### Logs as Warnings properties that are not found (very verbose)struts.ognl.logMissingProperties=false### Caches parsed OGNL expressions, but can lead to memory leaks### if the application generates a lot of different expressionsstruts.ognl.enableExpressionCache=true### Indicates if Dispatcher should handle unexpected exceptions by calling sendError()### or simply rethrow it as a ServletException to allow future processing by other frameworks like Spring Securitystruts.handle.exception=true### END SNIPPET: complete_filestruts-default.xml 该文件位于struts2-core-x.x.x.jar文件下。是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和拦截器。我们自己定义的struts.xml通过继承struts-default.xml使其具有默认的一些行为。 源文件: Struts2配置文件加载顺序:1.struts-default.xml2.struts-plugin.xml3.struts.xml4.struts.properties5.web.xml越往后,级别越高。后面配置文件会覆盖前面配置文件中相同的配置。服务器启动时的读取信息:信息: Parsing configuration file [struts-default.xml]2013-1-11 14:29:31 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info信息: Unable to locate configuration files of the name struts-plugin.xml, skipping2013-1-11 14:29:31 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info信息: Parsing configuration file [struts-plugin.xml]2013-1-11 14:29:31 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info信息: Parsing configuration file [struts.xml] ............... ........... ............ ............... dojo\..*,^struts\..*, ^session\..*,^request\..*,^application\..*, ^servlet(Request|Response)\..*,parameters\...* input,back,cancel,browse input,back,cancel,browse