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

Struts 高效分頁實作:分離關注點的最佳實踐

     編輯:Java 相關知識

前言

在網路上尋找 Struts 分頁方案時,發現多數實作要么耦合度過高,要么效能不佳。基於實務經驗,本文提出一套結構清晰、效能優異的分頁架構,核心在於將資料存取邏輯與分頁控制邏輯徹底解耦,避免一次性載入海量資料造成記憶體壓力。

開發環境

本範例採用:JBuilder X + WebLogic 8.1 + Oracle 9i + Windows Server 2003。但架構設計不依賴特定環境,可輕鬆移植至其他技術棧。

架構設計:MVC 分層落地

分頁功能同樣遵循 MVC 模式,六大模組各司其職:

1. 資料庫與實體對應

以 TCertificate 表為例,建立對應的值物件 CertificateVO,封裝證書編號、名稱、照片路徑、描述、畢業生 ID 等欄位。

2. 資料存取層(DAO)

採用基底類別 CommonDAO 統一管理資料庫連線、關閉、交易回滾等通用邏輯,子類別 CertificateDAO 專注於具體查詢。關鍵方法 findCertificateList(offset, limit) 僅撈取當頁所需記錄,配合 rsHandler 在 ResultSet 層面直接定位游標,避免全量載入。

public List findCertificateList(int offset, int limit) throws SQLException {
    // 僅建立當頁資料的 ArrayList,透過 rs2VO 封裝 VO,保持方法精簡
    // 使用 if (rs != null && rs.next()) 配合 while 迴圈,兼顧健壯性與效能
}

3. 分頁模型組件

Pager 類別獨立於 DAO,僅接收 offset、totalRows、pageSize、actionUrl 四個參數,產生分頁導航 HTML 片段。這樣 DAO 只負責「查資料」,Pager 只負責「算頁碼」,兩者零耦合。

4. 控制器

CertificateAction 協調全局流程:

  • 從 DataSource 取得連線並實例化 DAO
  • 解析請求參數 pager.offset 計算當前偏移量
  • 呼叫 DAO 取得當頁資料清單與總筆數
  • 委託 Pager.generate() 產生分頁字串
  • 將 list 與 pager 放入 request 轉向 JSP

5. 視圖層

listcertificate.jsp 使用 Struts 標籤庫(logic:iterate、bean:write)渲染資料表格,分頁導航直接輸出 ${pager},零 Java 程式碼混入。

6. Struts 設定

在 struts-config.xml 定義 /graduatedata/list 對應 CertificateAction,參數 LIST 驅動 performList(),成功轉向 listcertificate.jsp。

核心優勢

  1. 資料庫層面分頁:僅傳輸單頁資料,大幅降低網路與記憶體開銷。
  2. 職責單一:DAO、Pager、Action、JSP 各司其職,易於單元測試與維護。
  3. 擴充性強:更換資料庫、調整頁碼樣式、增加查詢條件,皆可單點修改。

完整程式碼參考

文中已包含 CommonDAO、CertificateDAO、CertificateAction、listcertificate.jsp、struts-config.xml、Pager 六大核心檔案完整原始碼,可直接參考專案導入。

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