struts2 配置静态资源

Struts2框架有两个核心配置文件:struts.xml和Struts2默认属性文件default.properties(在struts2-core-2.3.20.jar中)

default.properties可以通过自己在classpath下写一个struts.properties文件进行定制改写

为什么是struts.properties,这可以看org.apache.struts2.config下的DefaultSettings和PropertiesSettings源码

DefaultSettings.java


1

2

3

4

5

6

7

8

9

10

public DefaultSettings() {

        ArrayList<Settings> list = new ArrayList<Settings>();

        // stuts.properties, default.properties

        try {

            list.add(new PropertiesSettings("struts"));

        catch (Exception e) {

            log.warn("DefaultSettings: Could not find or error in struts.properties", e);

        }

PropertiesSettings.java


1

2

3

4

5

6

7

8

9

10

11

public PropertiesSettings(String name) {

        

        URL settingsUrl = ClassLoaderUtil.getResource(name + ".properties", getClass());

        

        if (settingsUrl == null) {

            if (LOG.isDebugEnabled()) {

            LOG.debug(name + ".properties missing");

            }

            settings = new LocatableProperties();

            return;

        }

也可以把你想写在struts.properties的自定义配置写在struts.xml文件下<constant>节点中,java培训如果同时都在两个文件配置了,一个相同的项目, 先加载 struts.xml,再加载struts.properties也就是说 struts.properties 是可以覆盖 struts.xml里面的配置的


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<constant name="struts.devMode" value="false" />

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

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

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

    <constant name="struts.custom.i18n.resources" value="ApplicationResources,errors" />

    <constant name="struts.multipart.maxSize" value="2097152" />

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

    <constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/" />

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

    <constant name="struts.convention.action.disableScanning"

        value="true" />

    <constant name="struts.mapper.alwaysSelectFullNamespace"

        value="false" />

    <!-- Allow <s:submit> to call method names directly -->

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

    <constant name="struts.multipart.saveDir" value="/tmp"></constant>

在strut源码StrutsConstants.class包含了所有可配置项


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

package org.apache.struts2;

import org.apache.struts2.dispatcher.mapper.CompositeActionMapper;

/**

 * This class provides a central location for framework configuration keys

 * used to retrieve and store Struts configuration settings.

 */

public final class StrutsConstants {

    /** Whether Struts is in development mode or not */

    public static final String STRUTS_DEVMODE = "struts.devMode";

    /** Whether the localization messages should automatically be reloaded */

    public static final String STRUTS_I18N_RELOAD = "struts.i18n.reload";

    /** The encoding to use for localization messages */

    public static final String STRUTS_I18N_ENCODING = "struts.i18n.encoding";

    /** Whether to reload the XML configuration or not */

    public static final String STRUTS_CONFIGURATION_XML_RELOAD = "struts.configuration.xml.reload";

    /** The URL extension to use to determine if the request is meant for a Struts action */

    public static final String STRUTS_ACTION_EXTENSION = "struts.action.extension";

    /** Comma separated list of patterns (java.util.regex.Pattern) to be excluded from Struts2-processing */

    public static final String STRUTS_ACTION_EXCLUDE_PATTERN = "struts.action.excludePattern";

    /** Whether to use the alterative syntax for the tags or not */

    public static final String STRUTS_TAG_ALTSYNTAX = "struts.tag.altSyntax";

    /** The HTTP port used by Struts URLs */

    public static final String STRUTS_URL_HTTP_PORT = "struts.url.http.port";

    /** The HTTPS port used by Struts URLs */

    public static final String STRUTS_URL_HTTPS_PORT = "struts.url.https.port";

    /** The default includeParams method to generate Struts URLs */

    public static final String STRUTS_URL_INCLUDEPARAMS = "struts.url.includeParams";

    public static final String STRUTS_URL_RENDERER = "struts.urlRenderer";

    /** The com.opensymphony.xwork2.ObjectFactory implementation class */

    public static final String STRUTS_OBJECTFACTORY = "struts.objectFactory";

    public static final String STRUTS_OBJECTFACTORY_ACTIONFACTORY = "struts.objectFactory.actionFactory";

    public static final String STRUTS_OBJECTFACTORY_RESULTFACTORY = "struts.objectFactory.resultFactory";

    public static final String STRUTS_OBJECTFACTORY_CONVERTERFACTORY = "struts.objectFactory.converterFactory";

    public static final String STRUTS_OBJECTFACTORY_INTERCEPTORFACTORY = "struts.objectFactory.interceptorFactory";

    public static final String STRUTS_OBJECTFACTORY_VALIDATORFACTORY = "struts.objectFactory.validatorFactory";

    public static final String STRUTS_OBJECTFACTORY_UNKNOWNHANDLERFACTORY = "struts.objectFactory.unknownHandlerFactory";

    /** The com.opensymphony.xwork2.util.FileManager implementation class */

    public static final String STRUTS_FILE_MANAGER_FACTORY = "struts.fileManagerFactory";

    /** The com.opensymphony.xwork2.util.fs.FileManager implementation class */

    public static final String STRUTS_FILE_MANAGER = "struts.fileManager";

    /** The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation class */

    public static final String STRUTS_OBJECTTYPEDETERMINER = "struts.objectTypeDeterminer";

    /** The package containing actions that use Rife continuations */

    public static final String STRUTS_CONTINUATIONS_PACKAGE = "struts.continuations.package";

    /** The org.apache.struts2.config.Configuration implementation class */

    public static final String STRUTS_CONFIGURATION = "struts.configuration";

    /** The default locale for the Struts application */

    public static final String STRUTS_LOCALE = "struts.locale";

    /** Whether to use a Servlet request parameter workaround necessary for some versions of WebLogic */

    public static final String STRUTS_DISPATCHER_PARAMETERSWORKAROUND = "struts.dispatcher.parametersWorkaround";

    /** The org.apache.struts2.views.freemarker.FreemarkerManager implementation class */

    public static final String STRUTS_FREEMARKER_MANAGER_CLASSNAME = "struts.freemarker.manager.classname";

    

    @Deprecated

    /** Cache Freemarker templates, this cache is managed by struts2,instead of native freemarker cache,set STRUTS_FREEMARKER_MRU_MAX_STRONG_SIZE >0&&STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY>0*/

    public static final String STRUTS_FREEMARKER_TEMPLATES_CACHE = "struts.freemarker.templatesCache";

    

    /** Update freemarker templates cache in seconds*/

    public static final String STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY = "struts.freemarker.templatesCache.updateDelay";

    

    /** Cache model instances at BeanWrapper level */

    public static final String STRUTS_FREEMARKER_BEANWRAPPER_CACHE = "struts.freemarker.beanwrapperCache";

    

    /** Maximum strong sizing for MruCacheStorage for freemarker */

    public static final String STRUTS_FREEMARKER_MRU_MAX_STRONG_SIZE = "struts.freemarker.mru.max.strong.size";

    

    /** org.apache.struts2.views.velocity.VelocityManager implementation class */

    public static final String STRUTS_VELOCITY_MANAGER_CLASSNAME = "struts.velocity.manager.classname";

    /** The Velocity configuration file path */

    public static final String STRUTS_VELOCITY_CONFIGFILE = "struts.velocity.configfile";

    /** The location of the Velocity toolbox */

    public static final String STRUTS_VELOCITY_TOOLBOXLOCATION = "struts.velocity.toolboxlocation";

    /** List of Velocity context names */

    public static final String STRUTS_VELOCITY_CONTEXTS = "struts.velocity.contexts";

    /** The directory containing UI templates.  All templates must reside in this directory. */

    public static final String STRUTS_UI_TEMPLATEDIR = "struts.ui.templateDir";

    /** The default UI template theme */

    public static final String STRUTS_UI_THEME = "struts.ui.theme";

    /** Token to use to indicate start of theme to be expanded. */

    public static final String STRUTS_UI_THEME_EXPANSION_TOKEN = "struts.ui.theme.expansion.token";

    /** The maximize size of a multipart request (file upload) */

    public static final String STRUTS_MULTIPART_MAXSIZE = "struts.multipart.maxSize";

    /** The directory to use for storing uploaded files */

    public static final String STRUTS_MULTIPART_SAVEDIR = "struts.multipart.saveDir";

    /** Declares the buffer size to be used during streaming multipart content to disk. Used only with {@link org.apache.struts2.dispatcher.multipart.JakartaStreamMultiPartRequest} */

    public static final String STRUTS_MULTIPART_BUFFERSIZE = "struts.multipart.bufferSize";

    /**

     * The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation

     * for a multipart request (file upload)

     */

    public static final String STRUTS_MULTIPART_PARSER = "struts.multipart.parser";

    /** How Spring should autowire.  Valid values are ‘name‘, ‘type‘, ‘auto‘, and ‘constructor‘ */

    public static final String STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE = "struts.objectFactory.spring.autoWire";

    /** Whether the autowire strategy chosen by STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE is always respected.  Defaults

     * to false, which is the legacy behavior that tries to determine the best strategy for the situation.

     * @since 2.1.3

     */

    public static final String STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE_ALWAYS_RESPECT = "struts.objectFactory.spring.autoWire.alwaysRespect";

    /** Whether Spring should use its class cache or not */

    public static final String STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE = "struts.objectFactory.spring.useClassCache";

    /** Uses different logic to construct beans, see https://issues.apache.org/jira/browse/WW-4110 */

    public static final String STRUTS_OBJECTFACTORY_SPRING_ENABLE_AOP_SUPPORT = "struts.objectFactory.spring.enableAopSupport";

    /** Whether or not XSLT templates should not be cached */

    public static final String STRUTS_XSLT_NOCACHE = "struts.xslt.nocache";

    /** Location of additional configuration properties files to load */

    public static final String STRUTS_CUSTOM_PROPERTIES = "struts.custom.properties";

    /** Location of additional localization properties files to load */

    public static final String STRUTS_CUSTOM_I18N_RESOURCES = "struts.custom.i18n.resources";

    /** The org.apache.struts2.dispatcher.mapper.ActionMapper implementation class */

    public static final String STRUTS_MAPPER_CLASS = "struts.mapper.class";

    /**

     * A prefix based action mapper that is capable of delegating to other

     * {@link org.apache.struts2.dispatcher.mapper.ActionMapper}s based on the request‘s prefix

     * You can specify different prefixes that will be handled by different mappers

     */

    public static final String PREFIX_BASED_MAPPER_CONFIGURATION = "struts.mapper.prefixMapping";

    

    /** Whether the Struts filter should serve static content or not */

    public static final String STRUTS_SERVE_STATIC_CONTENT = "struts.serve.static";

    /** If static content served by the Struts filter should set browser caching header properties or not */

    public static final String STRUTS_SERVE_STATIC_BROWSER_CACHE = "struts.serve.static.browserCache";

    /** Allows one to disable dynamic method invocation from the URL */

    public static final String STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION = "struts.enable.DynamicMethodInvocation";

    /** Whether slashes in action names are allowed or not */

    public static final String STRUTS_ENABLE_SLASHES_IN_ACTION_NAMES = "struts.enable.SlashesInActionNames";

    /** Prefix used by {@link CompositeActionMapper} to identify its containing {@link org.apache.struts2.dispatcher.mapper.ActionMapper} class. */

    public static final String STRUTS_MAPPER_COMPOSITE = "struts.mapper.composite";

    public static final String STRUTS_ACTIONPROXYFACTORY = "struts.actionProxyFactory";

    public static final String STRUTS_FREEMARKER_WRAPPER_ALT_MAP = "struts.freemarker.wrapper.altMap";

    /** The name of the xwork converter implementation */

    public static final String STRUTS_XWORKCONVERTER = "struts.xworkConverter";

    public static final String STRUTS_ALWAYS_SELECT_FULL_NAMESPACE = "struts.mapper.alwaysSelectFullNamespace";

    /** XWork default text provider */

    public static final String STRUTS_XWORKTEXTPROVIDER = "struts.xworkTextProvider";

    /** The {@link com.opensymphony.xwork2.LocaleProvider} implementation class */

    public static final String STRUTS_LOCALE_PROVIDER = "struts.localeProvider";

    /** The name of the parameter to create when mapping an id (used by some action mappers) */

    public static final String STRUTS_ID_PARAMETER_NAME = "struts.mapper.idParameterName";

    

    /** The name of the parameter to determine whether static method access will be allowed in OGNL expressions or not */

    public static final String STRUTS_ALLOW_STATIC_METHOD_ACCESS = "struts.ognl.allowStaticMethodAccess";

    /** The com.opensymphony.xwork2.validator.ActionValidatorManager implementation class */

    public static final String STRUTS_ACTIONVALIDATORMANAGER = "struts.actionValidatorManager";

    /** The {@link com.opensymphony.xwork2.util.ValueStackFactory} implementation class */

    public static final String STRUTS_VALUESTACKFACTORY = "struts.valueStackFactory";

    /** The {@link com.opensymphony.xwork2.util.reflection.ReflectionProvider} implementation class */

    public static final String STRUTS_REFLECTIONPROVIDER = "struts.reflectionProvider";

    /** The {@link com.opensymphony.xwork2.util.reflection.ReflectionContextFactory} implementation class */

    public static final String STRUTS_REFLECTIONCONTEXTFACTORY = "struts.reflectionContextFactory";

    

    /** The {@link com.opensymphony.xwork2.util.PatternMatcher} implementation class */

    public static final String STRUTS_PATTERNMATCHER = "struts.patternMatcher";

    /** The {@link org.apache.struts2.dispatcher.StaticContentLoader} implementation class */

    public static final String STRUTS_STATIC_CONTENT_LOADER = "struts.staticContentLoader";

    /** The {@link com.opensymphony.xwork2.UnknownHandlerManager} implementation class */

    public static final String STRUTS_UNKNOWN_HANDLER_MANAGER = "struts.unknownHandlerManager";

    /** Throw RuntimeException when a property is not found, or the evaluation of the espression fails*/

    public static final String STRUTS_EL_THROW_EXCEPTION = "struts.el.throwExceptionOnFailure";

    /** Logs properties that are not found (very verbose) **/

    public static final String STRUTS_LOG_MISSING_PROPERTIES = "struts.ognl.logMissingProperties";

    /** Enables caching of parsed OGNL expressions **/

    public static final String STRUTS_ENABLE_OGNL_EXPRESSION_CACHE = "struts.ognl.enableExpressionCache";

    /** Enables evaluation of OGNL expressions **/

    public static final String STRUTS_ENABLE_OGNL_EVAL_EXPRESSION = "struts.ognl.enableOGNLEvalExpression";

    /** Disables {@link org.apache.struts2.dispatcher.StrutsRequestWrapper} request attribute value stack lookup (JSTL accessibility) **/

    public static final String STRUTS_DISABLE_REQUEST_ATTRIBUTE_VALUE_STACK_LOOKUP = "struts.disableRequestAttributeValueStackLookup";

    /** The{@link org.apache.struts2.views.util.UrlHelper} implementation class **/

    public static final String STRUTS_URL_HELPER = "struts.view.urlHelper";

    /** {@link com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter} **/

    public static final String STRUTS_CONVERTER_COLLECTION = "struts.converter.collection";

    public static final String STRUTS_CONVERTER_ARRAY = "struts.converter.array";

    public static final String STRUTS_CONVERTER_DATE = "struts.converter.date";

    public static final String STRUTS_CONVERTER_NUMBER = "struts.converter.number";

    public static final String STRUTS_CONVERTER_STRING = "struts.converter.string";

    /** Enable handling exceptions by Dispatcher - true by default **/

    public static final String STRUTS_HANDLE_EXCEPTION = "struts.handle.exception";

    public static final String STRUTS_CONVERTER_PROPERTIES_PROCESSOR = "struts.converter.properties.processor";

    public static final String STRUTS_CONVERTER_FILE_PROCESSOR = "struts.converter.file.processor";

    public static final String STRUTS_CONVERTER_ANNOTATION_PROCESSOR = "struts.converter.annotation.processor";

    public static final String STRUTS_CONVERTER_CREATOR = "struts.converter.creator";

    public static final String STRUTS_CONVERTER_HOLDER = "struts..converter.holder";

    public static final String STRUTS_EXPRESSION_PARSER = "struts.expression.parser";

    /** actions names‘ whitelist **/

    public static final String STRUTS_ALLOWED_ACTION_NAMES = "struts.allowed.action.names";

    /** enables action: prefix **/

    public static final String STRUTS_MAPPER_ACTION_PREFIX_ENABLED = "struts.mapper.action.prefix.enabled";

    /** enables access to actions in other namespaces than current with action: prefix **/

    public static final String STRUTS_MAPPER_ACTION_PREFIX_CROSSNAMESPACES = "struts.mapper.action.prefix.crossNamespaces";

    public static final String DEFAULT_TEMPLATE_TYPE_CONFIG_KEY = "struts.ui.templateSuffix";

    /** Allows override default DispatcherErrorHandler **/

    public static final String STRUTS_DISPATCHER_ERROR_HANDLER = "struts.dispatcher.errorHandler";

    /** Comma delimited set of excluded classes and package names which cannot be accessed via expressions **/

    public static final String STRUTS_EXCLUDED_CLASSES = "struts.excludedClasses";

    public static final String STRUTS_EXCLUDED_PACKAGE_NAME_PATTERNS = "struts.excludedPackageNamePatterns";

    /** Dedicated services to check if passed string is excluded/accepted **/

    public static final String STRUTS_EXCLUDED_PATTERNS_CHECKER = "struts.excludedPatterns.checker";

    public static final String STRUTS_ACCEPTED_PATTERNS_CHECKER = "struts.acceptedPatterns.checker";

    /** Constant is used to override framework‘s default excluded patterns **/

    public static final String STRUTS_OVERRIDE_EXCLUDED_PATTERNS = "struts.override.excludedPatterns";

    public static final String STRUTS_OVERRIDE_ACCEPTED_PATTERNS = "struts.override.acceptedPatterns";

    public static final String STRUTS_ADDITIONAL_EXCLUDED_PATTERNS = "struts.additional.excludedPatterns";

    public static final String STRUTS_ADDITIONAL_ACCEPTED_PATTERNS = "struts.additional.acceptedPatterns";

}

其中


1

2

/** Comma separated list of patterns (java.util.regex.Pattern) to be excluded from Struts2-processing */

    public static final String STRUTS_ACTION_EXCLUDE_PATTERN = "struts.action.excludePattern";

保存了不由struts2处理的路径,我们在struts.properties或者struts.xml中配置即可.

struts.action.excludePattern=/dwr/.*,/dwr/test/.*

正则表达式,并非URL匹配地址

时间: 2024-10-14 19:35:18

struts2 配置静态资源的相关文章

Django1.7如何配置静态资源访问

Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些资源我们并不需要过多的限制,所以任由用户访问,这时我们就没必要在加一个request请求,转发或重定向访问,我们可以直接使用Django的静态资源访问策略. 默认在django里是不支持静态资源访问的,我们需要稍微配置映射才可以. (1)确认你的INSTALLED_APPS里面有'django.co

Spring MVC配置静态资源和资源包教程

1- 介绍 这篇教程文章是基于: Spring 4 MVC 2- 创建一个项目 File/New/Other.. 输入: Group ID: com.yiibai Artifact ID: SpringMVCResource Package: com.yiibai.springmvcresource 项目被创建以后如下: 不要担心有错误消息在项目被创建时.原因是,我们还没有声明 Servlet 库. 注意: Eclipse 4.4(Luna)在创建 Maven 项目结构时可能是有错误的.需要修复

Nginx配置静态资源缓存时间及实现防盗链

环境源主机:192.168.10.158系统:centos 7.4域名:www.wuxier.cn盗链主机:192.168.10.191(使用Nginx+Tomcat实现负载均衡.动静分离的实验主机,点我进行复盘)系统:centos 7.4域名:www.ajie.com 和 www.taobao.com 创建软件包存放目录 [[email protected] ~]# mkdir /root/software [[email protected] ~]# cd /root/software/ [

SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class StaticResourceConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHand

配置静态资源放行的情况

<!--静态资源全部放行--> <mvc:default-servlet-handler></mvc:default-servlet-handler> 上面这一种替代下面的N种方法 <!--<mvc:resources mapping="/js/*" location="/js/"></mvc:resources>--> <!--<mvc:resources mapping=&quo

SpringBoot配置静态资源访问与本地路径的映射

1.配置工程访问路径映射本地路径: package com.liuyanzhao.chuyun.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annot

nginx配置静态资源压缩

sendfile on; #让nginx在传输文件时直接在磁盘和tcp socket之间传输数据 location ~ .*\.(txt|xml)$ { gzip on; #开启压缩 gzip_http_version 1.1; #协议版本配置 gzip_comp_level 1; #压缩等级 gzip_types text/plain application/xml; #需要压缩的MIME类型 } 原文地址:https://www.cnblogs.com/liyuchuan/p/1071468

【记录】nginx 配置静态资源图片访问

1:首先修改nginx的配置文件 nginx/conf/nginx.conf 2:将user nobady 改成 user root ( 原来是注释掉的) 意思是用root权限访问文件 3: nginx 配置指向地址文件 4:上传文件,我的是图片 5:重启nginx 访问地址,访问成功 参考地址:https://www.cnblogs.com/tangyin/p/9700852.html 原文地址:https://www.cnblogs.com/wbl001/p/12340984.html

Nginx配置静态资源

打开 /etc/nginx/sites-available 的 default文件 sudo cd /etc/nginx/sites-available sudo vim default 修改default文件添加要匹配的url路径 格式: location 要匹配的路径{ root 映射到服务器文件的父路径 } laction Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: - C