HTTP无状态协议之Cookie与Session!

在讨论什么是Cookie和Session之前要先了解HTTP的无状态协议。

  因为Cookie与Session是为了解决无状态协议而诞生的。

HTTP的无状态协议:

  当客户端向服务器发起请求并且在接收到服务器返回给它的响应后,它就已经完成了一次传输的过程。这个过程是独立的,也是一个新的过程。

  如果客户端下次再发起请求并得到对应的响应,那么下次的过程与这次其实没有任何关联。无论是客户端还是服务端,都不会去记录这个过程。

  而无状态带来的影响就是,当后续的请求需要之前的信息的话,则它必须重新上传,因为服务器不会记住之前你上传的信息是什么。

  这样就会导致每次发起请求的数据量都会非常的大。

Cookie: 

  Cookie是一种通过在客户端保存状态的解决方案,Cookie是由服务端生成的,但是以文件的形式保存在客户端。每次客户端向服务端发起请求后,都会带上对应

扫描二维码关注公众号,回复: 2961555 查看本文章

  Cookie内的信息一并发送到服务端。Cookie的信息不同于请求的内容信息,它不是放在响应体(Response Body)中,而是放在响应头(Response header)中,这样

  客户端通过Cookie向服务端发起请求后,服务端就能解析Cookie来识别该客户端是否在之前就有发起过请求。就能保证客户端和服务端之间的关系持久。

  

     // cookie的名称  
        String name = "cookie test";  
        // cookie的值  
        String value = "default value";  
        // 新建cookie实例,cookie的构造函数是new Cookie(name,value)  
        Cookie cookie = new Cookie(name, value);  
        // 时间单位为"秒",设置成-1表示关闭浏览器即清除cookie,默认为-1  
        cookie.setMaxAge(9999);  
        //设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问   
        cookie.setPath("/");
     //由服务器生成Cookie下发给客户端
     HttpServletResponse response = response.addCookie(cookie);
        
// 解析客户端请求头中的Cookie HttpServletRequest request = null; // 返回cookie数组 Cookie[] cookies = request.getCookies(); for (Cookie cookie : cookies) { System.out.println(cookie.getName() + "的值为:" + cookie.getValue()); } //删除其实就只将cookie保存时间设置为“0” cookie.setMaxAge(0); response.addCookie(cookie);

猜你喜欢

转载自www.cnblogs.com/culushitai/p/9559352.html
今日推荐