QQSpublic class QQS {
private static LinkedHashMap qqs = new LinkedHashMap<>();
static {
qqs.put(10001, "張三"); qqs.put(10002, "李四"); ...
}
public static LinkedHashMap getQqs() { return qqs; }
}
ListServlet)history 屬性(逗號分隔的 QQ 號字符串)。QQS 顯示姓名。/store?num=10001。StoreQQServlet)// 核心邏輯:LinkedList 維護有序、去重、固定長度(3)的訪問隊列
LinkedList list = new LinkedList<>(Arrays.asList(history.split(",")));
if (list.contains(num)) list.remove(num); // 去重
list.addFirst(num); // 置頂
if (list.size() > 3) list.removeLast(); // 截斷
session.setAttribute("history", String.join(",", list));
web.xml 配置:<session-timeout>2</session-timeout>(單位:分鐘)。當瀏覽器拒絕 Cookie,JSESSIONID 無法傳遞,導致 Session 失效。解決方案:對所有頁面 URL 調用 response.encodeURL()(超鏈接)或 encodeRedirectURL()(重定向),自動附加 ;jsessionid=xxx。
// ListServlet 中
String url = response.encodeURL("/store?num=" + num);
// StoreQQServlet 中
response.sendRedirect(response.encodeRedirectURL("/list"));
本例完整演示了 Session 存儲會話狀態、LinkedList 實現 LRU 訪問記錄、URL 重寫解決無 Cookie 環境下的會話追蹤,是 Java Web 會話管理的經典教學案例。