首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 2 常用 Constant 配置全覽:從開發模式到國際化、主題、靜態資源一網打盡

     編輯:Java 相關知識

前言

Struts 2 通過 struts.xml 中的 <constant> 元素暴露 40+ 內建配置項,控制框架核心行為。本文按功能分類整理高頻配置,附上默認值、推薦值與避坑提示,作為開發、調試、上線的速查手冊。

核心配置分類速查表

1. 開發/調試相關

Constant默認值推薦(開發/生產)說明
struts.devModefalsetrue / false開啟詳細錯誤頁、配置熱加載、OGNL 表達式報錯堆棧。生產必須關閉,否則洩露敏感信息且性能下降。
struts.configuration.xml.reloadfalsetrue / falsestruts.xml 修改後自動重載,開發環境建議開啟。
struts.i18n.reloadfalsetrue / false國際化資源文件每次請求重載,開發調試語言包必開。

2. Action 映射與 URL 處理

Constant默認值推薦說明
struts.enable.DynamicMethodInvocationtruefalse允許 action!method 語法。安全起見生產建議關閉,改用通配符映射或 REST 插件。
struts.enable.SlashesInActionNamesfalsetrue允許 Action 名含斜線(如 user/profile),配合 REST 風格 URL。
struts.url.includeParamsnonegetURL 標簽生成鏈接時自帶參數:none/ get / all。分頁、篩選頁面建議 get。

3. 視圖與主題

Constant默認值說明
struts.ui.themexhtml表單標簽默認渲染模板風格:simple / xhtml / css_xhtml / ajax。
struts.ui.templateDirtemplate模板文件搜索基礎路徑(相對類路徑)。
struts.ui.templateSuffixftl模板後綴:ftl / vm / jsp,對應 FreeMarker / Velocity / JSP。
struts.tag.altSyntaxtrue標簽屬性是否支持 OGNL 表達式語法(如 value="%{user.name}")。

4. 靜態資源與緩存

Constant默認值說明
struts.serve.static.browserCachetrue瀏覽器緩存靜態資源(CSS/JS/圖片)。開發階段改 false 強制刷新。
struts.xslt.nocachefalseXSLT 結果是否禁用樣式表緩存。開發 true,生產 false。

5. 國際化與編碼

Constant默認值說明
struts.custom.i18n.resources—自定義資源文件基名(逗號分隔),如 global,messages,errors。
struts.dispatcher.parametersWorkaroundfalse針對 WebLogic/OC4J 等不支持 getParameterMap() 的容器,設置 true。

6. 對象工廠與 Spring 整合(關鍵)

<constant name="struts.objectFactory" value="spring" />
<!-- 等同於完整類名 org.apache.struts2.spring.StrutsSpringObjectFactory -->
  • 將 Action 實例化交給 Spring 容器,支持 @Autowired、AOP、事務等。
  • 需引入 struts2-spring-plugin 依賴。
  • 自動裝配策略可通過 struts.objectFactory.spring.autoWire 設置:name(默認)/ type / auto / constructor。

7. 多配置文件加載順序

<constant name="struts.configuration.files" 
    value="struts-default.xml,struts-plugin.xml,struts.xml" />

後加載的文件會覆蓋前者的同名 Bean 定義,利用此機制可在插件/模塊中覆蓋默認行為。

最佳實踐:分環境配置模板

<!-- struts.xml 通用部分 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.enable.SlashesInActionNames" value="true" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.tag.altSyntax" value="true" />
<constant name="struts.custom.i18n.resources" value="global,messages" />

<!-- struts-dev.xml 僅開發環境引入 -->
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.i18n.reload" value="true" />
<constant name="struts.serve.static.browserCache" value="false" />

<!-- struts-prod.xml 僅生產環境引入 -->
<constant name="struts.devMode" value="false" />
<constant name="struts.configuration.xml.reload" value="false" />
<constant name="struts.i18n.reload" value="false" />
<constant name="struts.serve.static.browserCache" value="true" />

通過 Maven Profile 或 Spring Profile 在打包時引入對應文件,實現「零代碼修改、環境隔離配置」。

總結

掌握上述高頻 Constant,能解決 90% 的 Struts 2 行為定制需求。核心原則:開發環境開啟熱加載與詳細報錯,生產環境鎖死配置、關閉調試、啟用緩存、禁用危險特性。建議將分環境配置模板納入項目骨架,新項目開箱即用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved