cookie技术和Session技术(服务器)

cookie技术是客户端
cookie技术是一个打开浏览器访问某个站点(网页等),到关闭相关浏览器成功之间的一个会话。
他也就是字面意义上的缓存。
它是面向客户端的一个技术。
重点是服务器如何将cookie发送到客户端,
服务器如何接受客户端携带的cookie。
服务器→客户端cookie(响应头发送)

它的操作:
创建对象
Cookie cookie =new Cookie(“name”,“iPhone 11”); 键值对方式。不可以存中文。
cookie.setMaxAge(60*2);设置cookie在客户端的存取时间。
设置cookie的携带路径,也就是只有访问规定的路径的时候才能访问成功。
cookie.setPath("/WEB05");访问包下的所有都可以
cookie.setPath("WEB05/SendCookidServlet");访问固定路径
cookie.setPath("/");访问所有的资源路径
如果不写的话可以访问该cookie的所有可携带路径

Cookie不能存储中文

//获取session对象
        HttpSession session=request.getSession();
        //向session域中赋值
        session.setAttribute("name", "花开不纪年");
        //获取当前JSESSIONID------为了不让浏览器关了就没有,用同名的cookie对象替代一次会话结束就消失的cookie对象。
        String id=session.getId();
        //创建cookie对象
        Cookie cookie=new Cookie("JSESSIONID",id);
        //设置持久化时间
        cookie.setMaxAge(60*2);
        //设置携带路径
        cookie.setPath("/WEB06");
        //发送cookie
        response.addCookie(cookie);

cookie因为是客户端,所以它是

向客户端发送cookie
response.addCookie(cookie);

如果想要删除cookie就是顶一个一个同名的持久化cookie来进行覆盖。
Session技术(服务器)
它相当于起一个中转的作用,同时它还是一个域。

//获取当前请求客户端的session对象,只要不关闭浏览器,就用的是一个session
        HttpSession session=request.getSession();

setAttribute(name,value);
getAttribute(name);

后面用的非常之多。

    request.setCharacterEncoding("UTF-8");
        List<Fuwu> list=fuwuService.getZixun();
        request.setAttribute("GetFuwu", list);
        request.getRequestDispatcher("/right.jsp").forward(request, response);
如这里就是获取到service层的方法,然后将其集合存储到session域中,并且请求转发到right.jsp文件,jsp文件就可以通过域名,来循环遍历域中值。

它的流程是当客户端请求服务器时,Session域调用HttpSession session=request.getSession();
给每一个请求的对象都创一个session域,并且获得JSEESIONID响应给客户端。
然后客户端就可以拿着JESSSIONID用Cookie再去请求结算,服务器拿着id去session域寻找,完成后SET-Cookie响应给客户端信息。 注意:一次响应结束,因为cookie一次会话结束的技术不会再响应,如果重新获取的请求需要创建新的域。


如果不想关闭浏览器重新创建session,需要用cookie技术的同名同路径持久化时间设置的长一些。
生命周期时候调用request.getSession时创建。

创建时机

  1:这个浏览器在servlet中第一次使用session的时候会创建;

  2:这个浏览器第一次访问jsp的时候,服务器也会为这个浏览器创建一个session对象;

2:销毁时机

  1:程序员调用invalidate方法;(立刻销毁)

  2:设置的存活时间到了;(默认是30分钟)

  3:服务器非正常关闭;(突然断电)
30分钟结束或者关闭浏览器。
学习了携带web层的登录验证和验证码校验,区别是web层代替cotroller+view层

原文地址:https://www.cnblogs.com/a199706/p/11603370.html