JavaWeb-Cookie、Session
Cookie、Session
Session会话
什么是有状态对话
一个网站,这么证明客户访问过?
1.服务端给客户端标记,下次访问时带上标记。----Cookie
2.服务器登记来访记录,下次访问时来匹配。----Session
保存会话的两种技术
网站登入过,下次打开时不需要再次登入
Cookie
-客户端技术(请求、响应)
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
//Cookie从客户端获取
Cookie[] cookies = req.getCookies();//cookie可以存在多个
//判断cookie是否为空
if(cookies!=null){
out.write("上一次访问时间:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookie.getName().equals("lastlogintime")){
//获取cookie中的值
long lastlogintime = Long.parseLong(cookie.getValue());
Date date = new Date(lastlogintime);
out.write(date.toLocaleString());
}
}
}else {
out.write("这是第一次访问");
}
//服务器给客户返回一个cookie
Cookie cookie = new Cookie("lastlogintime", System.currentTimeMillis()+"");
cookie.setMaxAge(24*60*60);//设置cookie有效期
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
一个网站 cookie 是否存在上限!
一个 cookie 只能保存一个信息;
一个 web 站点可以给浏览器发送多个 cookie ,最多20个
大小限制4kb
300 个 cookie 浏览器上限
删除
不设有效期或者设置为0
Session
-服务端技术,保存用户会话信息(将客户信息放在session中)