Cookie和Session

Cookie的实现原理
浏览器将设置的cookie发送到客户端response.add(cookie)
客户端通过request.getCookie拿到cookie数组
将设置的cookie信息通过响应头set-cookie发送到客户端
客户端下一次请求将会带着请求头cookie去服务器中访问,实现数据共享
cookie的注意点
1.服务器一次可以发送多个cookie
2.默认情况下,cookie保存在浏览器内存中,将浏览器关闭后.cookie销毁,也可以通过setMaxAge(秒) 正数:持久化存储 负数:默认值,浏 览器关闭销毁,0:删除cookie信息 ;
cookie特点

  1. cookie存储数据在客户端
  2. 浏览器对个的cookie大小有限制,以及在同一个域名下的cookie大小也有限制

Cookie记住上一次访问时间

@WebServlet("/LastTime")
public class LastTime extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();
        boolean flag = false;
        response.setContentType("text/html;charset=utf-8");
        if (cookies!=null&&cookies.length>0){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                if ("lastTime".equals(name)){
                    //不是第一次访问
                    flag=true;
                    String value = cookie.getValue();
                    response.getWriter().write("欢迎回来,你上次的访问时间为"+value);
                    Date date = new Date();
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
                    String format = simpleDateFormat.format(date);
                    cookie.setValue(format);
                    cookie.setMaxAge(60*60);
                    response.addCookie(cookie);
                    break;
                }
            }
        }
        if (cookies.length==0||cookies==null||flag==false){
            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
            String format = simpleDateFormat.format(date);
            Cookie c = new Cookie("lastTime", format);
            c.setMaxAge(60*60);
            response.addCookie(c);
            response.getWriter().write("你好这是你首次访问");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

session

服务器端会话技术,在一次会话的多次请求间共享数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值