原專案純 JSP 實現登入模組,存在三大痛點:無統一登入驗證、登入頁每次查資料庫、缺乏系統級日誌與下載功能。本文規劃完整改造藍圖,引入 Servlet 解決上述問題。
T_USER,效能差。單一 LoginCheckFilter 攔截所有請求,Session 檢查 ses_userBean,未登入導向 login.jsp。排除登入/處理頁。
UserCacheServlet 配合 <load-on-startup>2</load-on-startup>,容器啟動時執行 UserList.fillUser() 將用戶 ID/名稱載入靜態 Map。登入頁改讀快取,手動呼叫 Servlet 可刷新。
實作 ServletContextListener,contextInitialized() 寫入啟動時間,contextDestroyed() 寫入關閉時間,輸出 Excel 格式日誌檔。
ExcelFileServlet 設定 Content-Disposition: attachment,依年月參數讀取日誌目錄輸出二進位流,瀏覽器彈出存檔對話框。
bookStore 專案 + webModule Web 模組| 層面 | 原專案 (純 JSP) | 改造後 (Servlet + JSP) |
|---|---|---|
| 登入驗證 | 各頁面手寫判斷 | Filter 統一攔截 |
| 用戶下拉選單 | 每次查 DB | 啟動快取 + 手動刷新 |
| 系統日誌 | 無 | Listener 記錄 + Servlet 下載 |
| 程式碼結構 | 業務與呈現混雜 | 關注點分離 |
後續文章將逐一實作各功能模組。