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

Struts 2 常用 Constant 配置屬性完整指南

     編輯:Java 相關知識

Struts 2 透過 <constant> 元素在 struts.xml 中配置框架行為。本文彙整 35+ 常用常數,按功能分類說明用途、預設值與最佳實踐,並附完整配置範例,幫助開發者快速查閱與調優。

核心配置分類

1. 國際化與編碼

常數名稱預設值說明
struts.i18n.encodingUTF-8指定 Web 應用預設字元編碼,等同 HttpServletRequest.setCharacterEncoding()。處理中文參數建議設為 UTF-8 或 GBK。
struts.i18n.reloadfalse開發階段設 true 可熱重載資源檔,生產環境必須 false 以提升效能。
struts.custom.i18n.resources-指定自訂國際化資源檔(不含副檔名),多檔以逗號分隔。
struts.locale-預設 Locale,如 zh_CN、en_US。

2. Action 映射與 URL

常數名稱預設值說明
struts.action.extensionactionAction 處理的 URL 後綴,多值逗號分隔,如 action,do。
struts.enable.DynamicMethodInvocationtrue是否支援 action!method 語法動態調用方法。安全考量建議生產環境關閉(false)。
struts.enable.SlashesInActionNamesfalse允許 Action 名稱包含斜線(/),REST 風格 URL 常開啟。
struts.mapper.classDefaultActionMapper指定 URL 到 Action 的映射器實現類。
struts.mapper.alwaysSelectFullNamespacefalse是否總是選擇最後一個斜線前的路徑作為 namespace。

3. 開發模式與重載

常數名稱預設值說明
struts.devModefalse開發模式:true 顯示詳細錯誤、啟用熱重載;生產必須設 false。
struts.configuration.xml.reloadfalsestruts.xml 變更後是否自動重載,開發建議 true。
struts.convention.classes.reloadfalseConvention 插件類變更熱重載(需配合 devMode)。

4. 靜態資源與快取

常數名稱預設值說明
struts.serve.statictrue是否由 Struts 提供靜態資源服務(/struts、/static 路徑)。
struts.serve.static.browserCachetrue瀏覽器是否快取靜態資源。開發設 false,生產 true。

5. 檔案上傳

常數名稱預設值說明
struts.multipart.parserjakarta上傳解析器:cos、pell、jakarta。用 cos/pell 需額外放 JAR 到 WEB-INF/lib。
struts.multipart.maxSize2097152 (2MB)整個 multipart 請求最大位元組數,-1 表無限制。
struts.multipart.saveDirjavax.servlet.context.tempdir上傳暫存目錄。

6. Spring 整合

常數名稱預設值說明
struts.objectFactorystruts設 spring 讓 Spring 容器管理 Action 生命週期。
struts.objectFactory.spring.autoWirenameSpring 自動裝配策略:name、type、auto、constructor。
struts.objectFactory.spring.useClassCachetrue整合 Spring 時是否快取 Bean 實例。

7. 視圖與模板

常數名稱預設值說明
struts.ui.themexhtmlUI 標籤預設主題:simple、xhtml、ajax。simple 不生成額外 HTML。
struts.ui.templateDirtemplate模板檔案根目錄。
struts.ui.templateSuffixftl模板副檔名:ftl(FreeMarker)、vm(Velocity)、jsp。

8. FreeMarker / Velocity / XSLT

常數名稱預設值說明
struts.freemarker.templatesCachefalse是否快取 FreeMarker 模板,生產建議 true。
struts.freemarker.wrapper.altMaptrue通常無需修改。
struts.velocity.configfilevelocity.propertiesVelocity 設定檔路徑。
struts.xslt.nocachefalseXSLT 樣式表快取,開發 true,生產 false。

完整 struts.xml 配置範例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  "https://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <!-- 開發模式,上線改 false -->
  <constant name="struts.devMode" value="true" />
  <constant name="struts.convention.classes.reload" value="true"/>
  <constant name="struts.enable.DynamicMethodInvocation" value="true" />
  <constant name="struts.convention.result.path" value="/WEB-INF/content/" />
  <constant name="struts.convention.default.parent.package" value="struts-default"/>
  <constant name="struts.convention.package.locators" value="actions" />
  <constant name="struts.convention.action.suffix" value="Action"/>
  <constant name="struts.convention.action.mapAllMatches" value="true"/>
  <constant name="struts.convention.action.name.separator" value="-" />
  <constant name="struts.custom.i18n.resources" value="i18n" />
  <constant name="struts.i18n.reload" value="true" />
  <constant name="struts.serve.static.browserCache" value="false" />
  <constant name="struts.multipart.maxSize" value="-1" />
  <constant name="struts.ui.theme" value="simple" />
  <constant name="struts.i18n.encoding" value="UTF-8" />
</struts>

最佳實踐提醒

  • 生產環境務必關閉 devMode,否則洩露堆疊追蹤且嚴重影響效能。
  • 國際化重載(struts.i18n.reload)僅開發階段開啟。
  • 檔案上傳大小限制(struts.multipart.maxSize)依業務調整,防止惡意大檔撐爆記憶體。
  • 靜態資源快取(struts.serve.static.browserCache)生產開啟,開發關閉。
  • 動態方法調用(struts.enable.DynamicMethodInvocation)有安全風險,建議生產關閉並改用 Wildcard 映射或 REST 插件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved