会话技术值cookie

举例:当我们登入购物网站,选完商品加入购物车,当时我们没有登入,我们加入购物车中之后,网站是如何获得我们的加入购物车的物品呢。我们的理想状态是每个人选完之后,在服务器端给每个人开了一块区域进行存储购物信息,结算的时候再去对应获取各自的信息;或者说每个人选完之后在自己的客户端存储里购物信息,结算的时候自己带着这个信息去服务器端进行结算。两种方法如下图所示

 

 服务器端储存该类信息的会话技术叫做session技术 客户端自己储存该类信息的技术我们叫做cookie技术

Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie(缺点目前已经得到很好的解决)

Session:将数据存储到服务器端,安全性相对好,增加服务器的压力

从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端态的状与数据的。

(切记一定是打开一个浏览器,到关闭这个浏览器的这个过程被称作一次会话)

Cookie技术是将用户的数据存储到客户端的技术,我们分为两方面学习:

第一,服务器端怎样将一个Cookie发送到客户端

第二,服务器端怎样接受客户端携带的Cookie

请求头和响应头里分别装有与会话相关的技术,响应头中set-cookie服务器向浏览器中写入cookie,请求头中cookie用于存放浏览器中缓存的cookie信息 流程图如下

 

 先由服务器向客户端发送一个cookie对象,要创建一个cookie对象,cookie会以响应头的形式发送给客户端,cookie对象不能存中文,response.addcookie()方法,cookie信息默认一次浏览中,关了浏览器就没有了。

cookie持久化存储,如果设置了持久化时间,cookie信息会被持久化到磁盘文件中,直到指定时间后销毁 cookie.setMaxAge(n*60),如果需要删除cookie只需要,同名同路径下设置持有化时间为0覆盖即可

了解cookie的携带路径,首先我们可以通过cookie.setpath()设置携带路径,如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息,设置之后就会在该级目录下的路径有携带cookie信息,

服务器获得cookie对象,

1)通过request获得所有的Cookie:

 

Cookie[] cookies = request.getCookies();

 

2)遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie

 

for(Cookie cookie : cookies){

 

    if(cookie.getName().equal(cookieName)){

 

    String cookieValue = cookie.getValue();

 

  }

 

}

 

posted @ 2021-03-12 21:15  Dyl啊  阅读(35)  评论(0编辑  收藏  举报