文章翻译自Struts 2官方文档。
开发模式(也称为“devMode”)
部署应用到生产环境之前请关掉这个选项 - 它会暴露你的应用的敏感数据。
Struts 2有一个称为devMode(= development mode)的设置(可以在struts.properites文件中设置为true或者false)。当设置了开发模式,Struts 2会添加额外的日志和调试信息,这可以极大的加快开发速度。
你也可以在你的struts.xml文件中设置这个常量:<constant name="struts.devMode" value="true" />。
这时首选的方法。更多信息参考常量配置。
开发模式可以做什么?
- 设置开发模式后,Struts 2会在每次请求时重新加载你的资源绑定文件(意味着你可以修改你的.properties文件,保存它们,然后在下次请求时就会反应你的修改)。注意:这个选项也可以通过struts.i18n.reload = true独立设置。
- 它也会在每次请求时重新加载你的xml配置文件(struts.xml),你的验证文件,等等。这在测试或微调你的配置是很实用,你不用每次都宠幸部署你的应用。注意:这个选项也可以通过struts.configuration.xml.reload = true独立设置。
- 第三点,可能设置不是广为人知的,因此是混乱的源头:它会提升调试的级别或者通常可以忽略的问题变成了错误。例如:当你提交一个不能映射到一个action的域‘sonmeUnknownField’,它通常可以忽略。但是,当你在开发模式中时,将会抛出一个异常,告诉你提交了一个无效的域。这在调试或测试大表单时很实用,但是假如你依赖请求中的不能设置到action的参数,这也会造成混乱,除非你正好在视图层使用(警告:这是不好的实践,你应该总是验证来自web的输入)。
不要忘了...
默认情况下,没有设置开发模式,因为它对性能有显著的影响,因为每次请求都会加载全部的配置。
扫描二维码关注公众号,回复:
670800 查看本文章
页面渲染缓慢
在打开devMode时,假如你感受到页面渲染缓慢,通常是因为在devMode禁用了Freemarker缓存。你可以明确的设置被devMode禁用的缓存或者其他任何选项,就像下面这样:
<constant name="struts.devMode" value="true" /> <constant name="struts.i18n.reload" value="false"/> <constant name="struts.configuration.xml.reload" value="false"/> <constant name="struts.freemarker.templatesCache" value="true"/> <constant name="struts.freemarker.templatesCache.updateDelay" value="120"/> <constant name="struts.freemarker.mru.max.strong.size" value="120"/>
就像你看到的,你可以选择打开devMode,同时也可以打开其他Struts选项。
在开发过程中,请记住使用Struts的优化选项,可以和这里的使用方式不同(尤其是缓存相关的选项)。