如果我的博客能够帮到大家能够点个赞,关注一下,以后还会更新更过JavaWeb的高级技术,大家的支持就是我继续更新的动力。谢谢。
案例: 可以显示上一次登陆时间
记录上次访问的时间
需求:
当用户第一次登陆的时候,提示:你是第一次登陆,且记录该次访问时间。
下一次访问的时候,获取上次访问时间且展示出来.
cookie 由服务器生成,通过response将cookie写回浏览器(set-cookie),保留在浏览器上,
下一次访问的时候,浏览器会根据一定的规则携带不同的cookie(通过request的头cookie),我们服务器可以接收cookie
会话分类:
cookie:浏览器端会话技术
session:服务器端的会话技术
cookie的api:
new Cookie(String key,String value)
写回浏览器:
response.addCookie(Cookie c);
获取cookie:
Cookie[] request.getCookies();
Cookie的常用方法:
getName():获取Cookie的key名称
getValue():获取Cookie的值步骤分析:
1.创建一个servlet RemServlet lastTime
2.在servle中:
获取指定cookie 例如:名称为lastTime
request.getCookies()
判断cookie是否为空:
若为空:提示信息,第一次访问
若不为空:'
获取此cookie的value
展示信息:你上次访问的时间是...
将这次访问时间记录,写回浏览器
cookie总结:
常用总结:
setMaxAge("秒"); //设置Cookie在浏览器端的存活时间
若设置成为0:删除该Cookie(前提必须路径一致)
setPath(String path):设置cookie的路径.
当我们访问的路径中包含了此Cookie的Path,则携带过去
默认路径:
访问servlet的路径,从"/项目名称"开始,到最后一个"/"结束
例如:
访问的servlet的路径:
/Cookie_Session/servlet/RemberServlet
手动设置路径:
以"/项目名"开始,以"/"结尾
package com.nyist.Cookie.Rem;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RemberServlet extends HttpServlet {
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//0.设置编码
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter outPrintWriter = resp.getWriter();
//1.获取指定的cookie
Cookie cookie = getCookieByName("lastTime",req.getCookies());
//2.判断cookie 是否为空
if(cookie==null){
//cookie 为空提示第一次时间
outPrintWriter.write("您是第一次访问!");
}else{
//cookie 不为空 显示上一次登陆时间
String value = cookie.getValue(); //lastTime=12123454
long time = Long.parseLong(value);
Date date = new Date(time);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss");
outPrintWriter.print("Cookie名称:"+cookie.getName()+"\n"+"Cookie值:"+cookie.getValue()+"\n"+"CookeiePath:"+cookie.getPath());
outPrintWriter.print("你上次访问的时间:"+simpleDateFormat.format(date));
}
//3.将当前访问时间记录
//3.1创建Cookie
cookie = new Cookie("lastTime",new Date().getTime()+"");
//3.2 写回浏览器
resp.addCookie(cookie);
}
private Cookie getCookieByName(String value, Cookie[] cookies) {
if(cookies!=null){
for (Cookie cookie : cookies) {
if(cookie.getName().equals(value)){
return cookie;
}
}
}
return null;
}
}
结果: