Servlet-Cookie物件
阿新 • • 發佈:2021-01-10
概述
servlet-api 4.0.1版本
常用方法
public Cookie(String name, String value) {...} // 構造具有指定名稱和值的cookie public String getName() {...} // 返回cookie的名稱。 建立後不能更改名稱 public String getValue() {...} // 獲取此Cookie的當前值 public void setValue(String newValue) {...} // 為該Cookie分配一個新值 public void setMaxAge(int expiry) {...} // 設定此Cookie的最長使用期限(以秒為單位) public int getMaxAge() {...} // 獲取此Cookie的最長使用期限(以秒為單位) public void setComment(String purpose) {...} // 指定描述cookie用途的註釋 public String getComment() {...} // 返回描述此cookie用途的註釋;如果cookie沒有註釋,則返回null public void setDomain(String domain) {...} // 指定該cookie應在其中顯示的域 public String getDomain() {...} // 獲取此Cookie的域名 public void setPath(String uri) {...} // 指定客戶端應向其返回cookie的cookie的路徑 public String getPath() {...} // 返回瀏覽器向其返回此cookie的伺服器上的路徑。 該cookie對伺服器上的所有子路徑可見 public void setSecure(boolean flag) {...} // 向瀏覽器指示cookie是否僅應使用安全協議(例如HTTPS或SSL)傳送 public boolean getSecure() {...} // 判斷瀏覽器是否通過安全協議傳送cookie public int getVersion() {...} // 返回此cookie遵循的協議的版本 public void setVersion(int v) {...} // 設定此cookie遵循的協議的版本 public void setHttpOnly(boolean isHttpOnly) {...} public boolean isHttpOnly() {...}
獲取上次訪問時間
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); Cookie[] cookies = request.getCookies(); // 第一次訪問瀏覽器時cookie為null if (cookies == null) { out.print("這是你第一次訪問"); Cookie cookie = new Cookie("LastAccessTime", System.currentTimeMillis() + ""); cookie.setMaxAge(10); // 設定cookie失效時間(視窗不關閉一直有效),設定-1失效 response.addCookie(cookie); // 新增cookie } else { // 第n次訪問 for (Cookie cookie : cookies) { if ("LastAccessTime".equals(cookie.getName())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); out.print("上次訪問時間:" + sdf.format(new Date(Long.parseLong(cookie.getValue())))); cookie.setValue(System.currentTimeMillis() + ""); // 修改cookie的值 response.addCookie(cookie); // 更新cookie break; } } } }
儲存中文
Cookie的name和value都不能使用中文,如果希望在Cookie中使用中文,那麼需要先對中文進行URL編碼,然後把編碼後的字串放到Cookie中
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); Cookie[] cookies = request.getCookies(); // 第一次訪問瀏覽器時cookie為null if (cookies == null) { Cookie cookie = new Cookie("name", URLEncoder.encode("張三", "UTF-8")); response.addCookie(cookie); // 新增cookie } else { // 第n次訪問 for (Cookie cookie : cookies) { if ("name".equals(cookie.getName())) { out.print(URLDecoder.decode(cookie.getValue(), "UTF-8")); break; } } } }