概述
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;
}
}
}
}