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

Struts 2 結果類型完整指南:dispatcher、redirect、redirectAction、chain、stream 等

     編輯:Java 綜合教學

Struts 2 結果類型完整指南

<result> 元素的 type 屬性決定 Action 執行後的視圖處理方式。Struts 2 內建多種結果類型,涵蓋轉發、重導向、串流、鏈式呼叫等場景。

內建結果類型總覽

類型用途典型場景
dispatcher預設。請求轉發至 JSP/頁面一般頁面渲染
redirect瀏覽器端重導向(HTTP 302)表單提交後防重複提交、登入成功跳轉
redirectAction重導向至另一個 Action跨模組流程跳轉、權限檢查後導向
chainAction 鏈式呼叫(同一請求)多 Action 共同處理單一請求
stream直接輸出 InputStream 至瀏覽器檔案下載、圖片驗證碼、報表匯出
freemarkerFreeMarker 模板渲染模板引擎視圖
plainText以純文字顯示視圖資源原始碼除錯、顯示設定檔內容
httpheader控制特殊 HTTP 行為(狀態碼、Header)REST API 狀態控制

重點類型詳細範例

1. plainText - 顯示頁面原始碼

<result type="plainText">
    <param name="location">welcome.jsp</param>
    <param name="charSet">UTF-8</param>
</result>

2. redirect - 重導向至視圖資源

<result type="redirect">welcome.jsp</result>

特性:瀏覽器地址列變更、請求參數/屬性/Action 實例全部丟失。

3. redirectAction - 重導向至另一 Action

<result type="redirectAction">
    <param name="actionName">test2</param>
    <param name="namespace">/b</param>
</result>

特性:前一 Action 的處理結果、參數、屬性全部丟失,適用於完整流程切換。

選型決策樹

  • 需保留請求屬性、同一請求內轉發 → dispatcher(預設)。
  • 需改變瀏覽器 URL、防重複提交 → redirect。
  • 需跳轉至另一業務 Action、重新執行邏輯 → redirectAction。
  • 需在同一請求串聯多個 Action → chain。
  • 需直接輸出二進位資料 → stream。

最佳實踐提醒

  • redirect 後無法存取原請求的 request.getAttribute(),若需傳值請用 Flash 機制或 Session。
  • redirectAction 的 namespace 必須以 / 開頭,否則相對當前命名空間。
  • 檔案下載請使用 stream 搭配 contentType、contentDisposition 參數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved