什么是cookie
客户端会话技术, 将使用信息数据保存到客户端, 也就是浏览器
cookie简单使用
// 创建cookie
Cookie msg = new Cookie("msg", "hello, cookie");
// 发送cookie
response.addCookie(msg);
// 获取cookies
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(name + ":" + value);
}
cookie实现原理
在响应头设置cookie
在请求头获取cookie
cookie存活时间
-
默认情况下: 浏览器关闭, cookie销毁
-
使用setMaxAge()方法设置cookie存活时间, 单位秒(s)
- 设置负数时, 代表存活时间为默认值
- 设置正数时, 当这个时间到后, cookie才销毁
- 设置0时, 删除cookie信息
cookie的特点和作用
特点
- cookie存储的数据在用户的浏览器上
- 浏览器对每一个的cookie的大小, 对cookie的数量也有限制
作用
- cookie一般用于存储比较小量的数据
- 在用户不登录的情况下, 识别用户
cookie实例
根据用户是否访问过, 来提示用户或者上次访问时间
// 设置格式
response.setContentType("text/html;charset=utf-8");
// 获取所有cookie
Cookie[] cookies = request.getCookies();
// 建立标记
boolean flag = false;
if (cookies != null && cookies.length > 0) {
// 遍历cookie
for (Cookie cookie : cookies) {
String msg = cookie.getValue();
String name = cookie.getName();
// 如果有这个时间cookies, 表示用户不是第一次访问
if (name.equals("lastTime")) {
flag = true;
// 重新设置登录时间
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String format = dateFormat.format(date);
String encode = URLEncoder.encode(format, "utf-8");
Cookie lastTime = new Cookie("lastTime", encode);
response.addCookie(lastTime);
// 向用户回写信息
PrintWriter writer = response.getWriter();
writer.write("欢迎回来! 您上次访问时间为"+ URLDecoder.decode(msg, "utf-8"));
break;
}
System.out.println(msg);
}
}
// 如果用户第一次访问
if (cookies == null || cookies.length == 0 || flag == false) {
// 设置登录时间
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String format = dateFormat.format(date);
String encode = URLEncoder.encode(format, "utf-8");
Cookie lastTime = new Cookie("lastTime", encode);
response.addCookie(lastTime);
// 向用户回写信息
PrintWriter writer = response.getWriter();
writer.write("欢迎您!!!");
}
总结 : 学了几天JavaEE, 感觉甚是好玩呢, 双胞胎兄弟很多, 诸如: request和response, cookie和session, 热情还在, 我还会继续哦!!!