Cookie和Session小结

Posted 好多个码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie和Session小结相关的知识,希望对你有一定的参考价值。

Cookie小结

  • Cookie:服务器在客户端(浏览器)存储数据的技术;

  • Cookie分类:

    • 会话级别:没有设置最大存活时间的cookie,浏览器关闭后消失;

    • 持久级别:设置了最大存活时间,浏览器关闭后不会消失;

  • Cookie基本API:

    • 创建Cookie:Cookie c = new Cookie("name","zhangsan");

    • 获取name值:c.getName();

    • 获取value值:c.getValue();

    • 将cookie响应给浏览器:response.add(c);

    • 获取所有的cookie:Cookie[] cookies = request.getCookies();

  • Cookie的有效时间:

    • setMaxAge(int seconds):以秒为单位设置cookie的存活时间;

  • Cookie的有效路径:

    • setPath(String path):设置cookie的有效路径,在这个路径及其子路径下有效;

  • Cookie删除:

    • 客户端:

      • 会话级别的cookie,关闭浏览器后cookie立即消失;

      • 禁用cookie;

      • 手动清除cookie;

    • 服务端:

      • 通过Servlet,将原来的cookie置换;

  • Cookie的优势及弊端:

    • 优势:

      • 为服务端标识用户提供依据;

      • 减轻了服务端数据存储的压力;

    • 弊端:

      • 数据存储在客户端不安全;

      • 存储的数据大小受限,一个cookie存储的数据最大为4K;

Session是什么

​ Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只属于当前这个用户。

Session是怎么标识每一个用户的

​ 表面上,我们说Session容器是属于某一个用户。其实在会话过程中,只有客户端(浏览器)和服务器两个角色。所以,Session容器标识的不是用户,而是当前用户正在使用的浏览器。浏览器与服务器交流是通过给服务器发送请求实现的,浏览器的每次请求中如果都有一个相同的标记用来标记session。服务器就能够识别这个用户了。

​ 这个标记叫做JSESSIONID。我们重新演示,cookie的setPath练习,发现服务器启动后,浏览器的每次请求都会携带一个name属性值为"JSESSIONID"的cookie,这个cookie的值在每次请求过程中都是相同的。

 

Session的作用

  1. 为每个访问服务器的用户创建一个存储数据的容器;

  2. 容器中的数据在多个请求之间共享;

Session容器创建

​ Session容器的创建,调用的方法是:request.getSession()。具体方法如下:

【练习】创建session对象

  //获取Session容器对象
   HttpSession session = request.getSession();
   System.out.println(session);

 

5、Session常用API

​ Session常用API包括:往session容器中存储数据,删除数据,获取数据

方法使用示例说明
void setAttribute(String name,Object value)session.setAttribute("loginUser",user)将一个对象与一个名称关联<br />之后存储到session中
Object getAttribute( String name)session.getAttribute("loginUser")通过名称获取session<br />中的数据
void removeAttribute(String name)session.removeAttribute("loginUser")根据指定名称删除<br />session中的数据
String sessionId = session.getId();session.getId()获取session的id

 

 

Servlet作用域总结

  • ServletContext域:

    一个WEB应用(项目)对应一个ServletContext,这个对象中保存的数据正在整个WEB项目中都有效;

    • 创建:服务器启动的时候;

    • 销毁:服务器关闭或项目移除后;

  • HttpSession:

    一次会话给客户端(浏览器)创建一个session。这个对象中保存的数据,一次会话(多次请求)内数据有效;

    • 创建:服务器第一次调用getSession()的时候;

    • 销毁:

      • 服务器非正常关闭(正常关闭:Session被序列化);

      • Session过期了:默认存活时间30分钟;

      • 手动调用session的invalidate()方法;

  • HttpServletRequest:

    一次请求创建一个request。这个对象中保存的数据,一次请求(请求链)内数据有效;

    • 创建:客户端向服务器发送一次请求;

    • 销毁:服务器为这次请求做出响应之后,销毁request;

【API操作】操作三个作用域对象的API

  • 存储数据:setAttribute(name,value);

  • 获得数据:getAttribute(name);

  • 删除数据:removeAttribute(name);

 

 

 

 

 

以上是关于Cookie和Session小结的主要内容,如果未能解决你的问题,请参考以下文章

会话跟踪技术--cookie和session 小结

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

关于session的小结

session和cookie知识点总结

网络编程之正确理解HTTP短连接中的CookieSession和Token

Cookie和Session详解