概述
专业解释:
Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
链接:https://www.jianshu.com/p/6fc9cea6daa2
生命周期:
定义 Cookie 的生命周期
Cookie 的生命周期可以通过两种方式定义:
- 会话期 Cookie 是最简单的 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。会话期Cookie不需要指定过期时间(
Expires
)或者有效期(Max-Age
)。需要注意的是,有些浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期Cookie 也会被保留下来,就好像浏览器从来没有关闭一样,这会导致 Cookie 的生命周期无限期延长。 - 持久性 Cookie 的生命周期取决于过期时间(
Expires
)或有效期(Max-Age
)指定的一段时间。
--------------------------------------------------------------------------------------------------------------------------------
由此来写一个网页。当该浏览器第一次访问,则显示“欢迎第一次访问该网页”,否则显示上一次访问该网页时间。
如果第一次访问,先创建一个日期对象,将日期转换为文本格式 (要注意其中 空 格 不能在浏览器中直接解析,要通过编码为"utf-8" 解码)
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String sdf_date = sdf.format(date);
sdf_date= URLEncoder.encode(sdf_date,"utf-8");
然后创建新的cookie对象 将其key设置为“lastTime” value为此时时间
sexMaxAge()设置存储到销毁的时间
setValue()将value值存入
response.addCookie(cookie)将cookie添加到服务器端
Cookie cookie = new Cookie("lastTime",sdf_date);
cookie.setMaxAge(60*60*24*30);
cookie.setValue(sdf_date);
response.addCookie(cookie);
response.getWriter().write("欢迎第一次访问该网页!");
如果不是第一次访问
先设置一下浏览器编码 获取当前cookie数组中所有值 然后通过if条件语句判断
//浏览器编码
response.setContentType("text/html;charset=utf-8");
//浏览器里面能永久存储的一种数据
Cookie[] cookies = request.getCookies();
boolean flag = false;
获取lastTime的value值 解码后 打印到浏览器上
String name = cookie.getName();
if ("lastTime".equals(name)) {
//获取value值
String value = cookie.getValue();
//解码
value= URLDecoder.decode(value,"utf-8");
response.getWriter().write("欢迎回来!上次访问时间为" + value);
之后再次更新当前新的访问时间 不赘述
再次访问截图:
doPost中完整代码:
//浏览器编码
response.setContentType("text/html;charset=utf-8");
//浏览器里面能永久存储的一种数据
Cookie[] cookies = request.getCookies();
boolean flag = false;
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
if ("lastTime".equals(name)) {
//获取value值
String value = cookie.getValue();
//解码
value= URLDecoder.decode(value,"utf-8");
response.getWriter().write("欢迎回来!上次访问时间为" + value);
//获取当前登录时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String sdf_date = sdf.format(date);
//编码
sdf_date= URLEncoder.encode(sdf_date,"utf-8");
//设置存储时间
cookie.setMaxAge(60*60*24*30);
//设值
cookie.setValue(sdf_date);
response.addCookie(cookie);
//编码
value= URLDecoder.decode(value,"utf-8");
flag=true;
break;
}
}
}
if(cookies==null||cookies.length==0||flag==false){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String sdf_date = sdf.format(date);
sdf_date= URLEncoder.encode(sdf_date,"utf-8");
Cookie cookie = new Cookie("lastTime",sdf_date);
cookie.setMaxAge(60*60*24*30);
cookie.setValue(sdf_date);
response.addCookie(cookie);
response.getWriter().write("欢迎第一次访问该网页!");
}
最后
以上就是傻傻微笑为你收集整理的Javaweb学习 对cookie的浅理解和应用的全部内容,希望文章能够帮你解决Javaweb学习 对cookie的浅理解和应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复