session&cookie

异同:cookie是客户端的对象,key-value键值对形式,只能存储String类型,数据量小,大约4k,             由于是存储在客户端安全性小

           session是服务器对象,key-value简直对形式,但是存储的是Object,数据量大,储存于服             务器,安全性较高。

           

  • 服务器会给每一个用户(浏览器)创建一个session对象
  • 一个session独占一个浏览器,主要浏览器没有关闭,这个session就存在
  • 用户登录后,整个网站它都可以访问——>保存用户的信息

方法:cookie

//从请求中获取Cookie  这里是数组形式,不止有一个
Cookie[] cookies = req.getCookies();
//判断Cookie是否存在
        if (cookies!=null){
            //如果存在怎么办
            out.write("When was your last visit: ");
            for (int i = 0; i <cookies.length ; i++) {
                Cookie cookie =  cookies[i];
                //或缺Cookie的名字
                if(cookie.getName().equals("LastLoginTime")){
                    //获取cookie中的值
                    long LastLoginTime = Long.parseLong(cookie.getValue());
                    Date date = new Date(LastLoginTime);
                    out.write(date.toLocaleString());
                }
            }
        }else {
            System.out.println("This is your first visit");
        }

//服务器给客户端响应一个Cookie
Cookie cookie = new Cookie("LastLoginTime", System.currentTimeMillis()+"");
//给cookie设置有效期为一天
cookie.setMaxAge(24*60*60);
resp.addCookie(cookie);

 session:

//获得Session
        HttpSession session = req.getSession();
        //给Session存东西
//        session.setAttribute("name","小狗");
        session.setAttribute("name",new Person(18,"小红",123456789));
        //获取Session的id
        String id = session.getId();
        System.out.println(id);
        //判断Session是不是新创建的
        boolean aNew = session.isNew();
        if (aNew){
            resp.getWriter().println("session创建成功! session id 为: "+id);
        }else {
            resp.getWriter().println("session已经创建了id 为: "+id);
        }
        //session在创建的时候做了啥?  将自己的sessionId,放到cookie中,传给客户端
        //下次客户端请求的时候,Cookie就会根据这个sessionId找到对象的服务器上session对象
        //从而可以从sessionId中获取其他属性,比如name=小狗
        //Cookie cookie = new Cookie("SESSIONID", id);
        //resp.addCookie(cookie);

每次新打开一个浏览器访问地址,都会新建一个session会话,也会向客户端存储一个值为sessionId的cookie!

session可以手动销毁,也可以设置失效时间

        HttpSession session = req.getSession();
        session.removeAttribute("name");
        session.invalidate();//注销
<!--设置Session默认的失效时间-->
<session-config>
    <!--15分钟后Session自动失效,以分钟为单位-->
    <session-timeout>15</session-timeout>
</session-config>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值