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

JSP 分頁顯示新增數據即時刷新技巧:Forward 替代 Redirect

     編輯:Java 相關知識

在「保存按鈕與分頁列表同頁」的場景下,保存後若直接返回,分頁查詢常因未重新執行 SQL 而顯示舊數據。核心原因在於:保存動作結束時未重新觸發分頁查詢邏輯。

問題現場

  • 保存按鈕與分頁在同一頁面
  • 保存後轉向分頁 Action,但分頁邏輯「取值不走 SQL」(可能用緩存或 Session 數據)
  • 導致剛插入/修改/刪除的數據不顯示

一行代碼解決:使用 Forward 而非 Redirect

在保存 Action 的執行末尾,將 return mapping.findForward("success") 類型的跳轉改為 RequestDispatcher Forward 到分頁 Action:

// 保存成功後
servlet.getServletContext()
       .getRequestDispatcher("/ProtectListPage.do")
       .forward(request, response);
return null; // 關鍵:阻斷後續 forward/redirect

原理差異

方式請求對象分頁 SQL 執行地址欄 URL
Redirect (sendRedirect)新請求視分頁邏輯而定,常不執行變為分頁 Action URL
Forward (RequestDispatcher)同一請求強制重新執行分頁 Action 邏輯(含 SQL)保持保存 Action URL

Forward 共享 request/response 對象,分頁 Action 完整執行查詢邏輯,最新數據即時呈現。同理適用於修改、刪除操作。

適用場景與注意點

  • ✅ 保存/修改/刪除後需即時刷新同頁列表
  • ✅ 分頁邏輯在獨立 Action 中,需重新執行
  • ⚠️ Forward 後瀏覽器地址欄不變,用戶刷新頁面會重複提交保存(需配合 Token 機制或 PRG 模式防重)
  • ⚠️ 若分頁邏輯依賴 Session 緩存而非即時查詢,需同步清理緩存

來源:黑色頭發 https://heisetoufa.iteye.com

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