本文展示基於 Java Web 技術棧 (JSP/Servlet/JSTL) 的圖書銷售系統核心用戶流程頁面設計,包含首頁導航、用戶註冊、登錄認證、會話管理與登出功能的完整界面邏輯。
功能區塊:
動態數據:${hotBooks}、${newBooks}、${categories} 由 IndexServlet 預載入 request 域。
表單字段:
提交流程:
核心邏輯:
// LogoutServlet.doGet()
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate(); // 銷毀會話
}
// 清除記住我 Cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if ("rememberMe".equals(c.getName())) {
c.setMaxAge(0); c.setPath("/"); response.addCookie(c);
}
}
}
response.sendRedirect(request.getContextPath() + "/index.jsp");
| 場景 | 策略 |
|---|---|
| Session 固定攻擊 | 登錄成功後 request.changeSessionId() (Servlet 3.1+) |
| CSRF 防護 | 表單隱藏 ${_csrf.token}、雙重提交 Cookie 模式 |
| 密碼存儲 | BCrypt/SCrypt/Argon2 + 隨機鹽、工作因子可配置 |
| 記住我功能 | 持久化 Token (UUID) + 系列標識、資料庫存儲、自動登入時輪換 |
| 會話超時 | web.xml <session-timeout>30</session-timeout>、前端心跳檢測 |
header.jsp:導航欄、用戶狀態顯示 (JSTL <c:choose> 判斷登錄態)footer.jsp:版權、備案號、統計代碼taglib.jsp:統一引入 JSTL/core、fmt、fn、自定義標簽庫message.jsp:統一錯誤/成功/警告訊息顯示組件這套頁面設計遵循「高內聚、低耦合、安全優先、體驗流暢」原則,為後續購物車、訂單、支付、後台管理等模塊奠定堅實用戶體系基礎。