在開發 Java Web 專案時,「記住帳號密碼」是提升使用者體驗的常見需求。本文將透過實際畢業專案案例,詳細說明如何利用 Cookie 在 SSM 框架下實作此功能,包含前端 JSP 頁面邏輯、後端 Controller 處理,以及完整的程式碼範例。
登入頁面需在載入時讀取 Cookie,若存在則自動填充帳號密碼欄位:
<%@page import="org.apache.commons.lang.StringUtils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String name = "";
String password = "";
try {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("cookie_user".equals(cookie.getName())) {
String value = cookie.getValue();
if (StringUtils.isNotBlank(value)) {
String[] parts = value.split("-");
if (parts.length >= 2) {
name = parts[0];
password = parts[1];
}
}
}
}
}
} catch (Exception e) {
// 記錄日誌或忽略
}
%>
<div class="wrapper">
<div class="content">
<div class="login">
<form action="${pageContext.request.contextPath}/login" method="post">
<input type="text" name="username" value="<%=name%>" placeholder="帳號" />
<input type="password" name="password" value="<%=password%>" placeholder="密碼" />
<input type="checkbox" name="rememberMe" <%=StringUtils.isNotBlank(name) ? "checked" : ""%> /> 記住密碼
<button type="submit">登入</button>
</form>
</div>
</div>
</div>
登入成功後,若使用者勾選「記住密碼」,將帳號密碼以特定格式寫入 Cookie:
@PostMapping("/login")
public String login(@RequestParam String username,
@RequestParam String password,
@RequestParam(required = false) Boolean rememberMe,
HttpServletResponse response) {
// 驗證邏輯...
if (loginSuccess) {
if (Boolean.TRUE.equals(rememberMe)) {
String cookieValue = username + "-" + password; // 實務上建議加密
Cookie cookie = new Cookie("cookie_user", cookieValue);
cookie.setMaxAge(7 * 24 * 60 * 60); // 7 天有效期
cookie.setPath("/");
response.addCookie(cookie);
} else {
// 清除 Cookie
Cookie cookie = new Cookie("cookie_user", "");
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
}
return "redirect:/index";
}
return "login";
}
cookie.setHttpOnly(true) 防止 XSS 攻擊cookie.setSecure(true)SameSite=Lax 或 Strict 防禦 CSRF

透過 Cookie 實作「記住帳號密碼」功能相對簡單,但在實務應用中必須重視資安風險。建議搭配加密、HttpOnly、Secure 等防護措施,或改用更安全的 Token 機制(如 JWT)搭配 LocalStorage 實現。