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层