java学习日记1(HttpSession和Cookie)

今天第一天记学习日记。

今天学习了HttpSession和Cookie

一、Cookie

   cookie可以看做是一种数据结构,以(key->value)的形式存在。cookie是服务器把片段信息写到客户端或内存上的一种技术。


写cookie的代码:​

Cookie cookie=new Cookie("uname",URLEncoder.encode("李四","utf-8"));

//这行是创建了一个cookie对象,名字叫uname,内容是 李四因为cookie中不能存放宽//字节(包括汉字),所以要转换成单字节编码存储。

cookie.setMaxAge(60*60*24*7);

//设置cookie的生命周期,单位是秒​

HttpServletResponse.addCookie(cookie);

//将cookie加入到HttpServletResponse中。


Cookie:

Cookie [] all=httpServletRequest.getCookies();

     String cokvalu=null;

     if(null!=all&&all.length>0)

     {for(Cookie cookie:all)//迭代​

    {if("uname".equals(cookie.getName()))

      {cokvalu=URLDecoder.decode(cookie.getValue(),"gbk");//解码​

      break;}

     }

     }


二、HttpSession

Http协议是无状态的。也就是每次访问都是单独的,第一次访问和第二次访问没有联系。

Http是能过令牌的机制完成和客户端的会话​。

一个用户的多次访问对应同一个HttpSession对象。

HttpSession中也有一个Map,用setAttribute,getAttribute.....​

客户端首次访问一个服务器时,​服务器会产生一个令牌(session),存下来(一半生命周期不会太长,可以调),并且发给客户端。客户端浏览器下次访问这个网站的时候就会将这个session传给服务器,服务器会对比你传给它的值,这样就能区别开来不同的用户。

如果你请求的Servlet A中有访问Session的代码:HttpSession hs=httpServletRequest.getSession();

Step1:打开浏览器,就打开一个浏览器的进程,这个进程中是没有cookie的

Step2:向servlet A发一个请求,请求报头没有cookie请求报头

Step3:服务器创建一个HttpSession对象id:aaaaaa(在服务器内存中)

Sep4:服务器给客户响应数据时,增加了一个响应报头set-cookie:jsessionid=aaaaaa

Step5:浏览器收到响应,并且把响应报头set-cookie的值构建cookie放入浏览器进程内

Step6:再次向Servlet A发一个请求,浏览器从内存中取出cookie,这一次请求多了一个请求报头cookie

Step7:服务器接收到session id,就知道这个用户对应的session对象


这是我的上课笔记~在我的新浪博客中发表了同样内容~

如果发现有错误,请多指正~

如果有想联系我交流技术的,可以加我QQ:773669388。欢迎大家多多指点。

你可能感兴趣的:(Java学习日记)