会话技术:cookie和session

2018-05-10  21:43:16

会话

  从打开一个浏览器的某个站点到关闭这个浏览器的整个过程,叫做一次会话。会话技术用于记录这次会话中客户端的数据和状态,它又分为cookie和session。

cookie:

  数据存储在客户端,减少了服务器存储的压力,安全性较低,客户端可以清除cookie

session:

  数据存储在服务器,服务器的存储压力较大,安全性较高

cookie技术

1)cookie的创建

  Cookie cookie = new Cookie(name, value);

  参数为String类型,不能用中文

  cookie创建后会以响应头的形式传递给客户端

2)cookie的持续时间

  默认:关闭浏览器cookie信息被销毁

  //为Cookie设置持久化时间
        cookie.setMaxAge(60*10);//10分钟,单位为秒

  设置持续时间后,cookie信息会存储到磁盘里,并在时间过后销毁信息

3)cookie的携带路径

  默认:会在访问产生该cookie的web资源所在的路径时,都携带cookie信息

  cookie.setPath("/WEB16");

  代表访问WEB16应用中的任何资源都携带cookie

  cookie.setPath("/WEB16/cookieServlet");

  代表访问WEB16中的cookieServlet时才携带cookie信息

4)想客户端发送cookie

  response.addCookie(Cookie cookie)

5)cookie的删除

  创建同名同路径的cookie对象,并将持续时间设置为0s,对原来的cookie进行覆盖

6)服务器接收cookie数据

  //获得客户端携带的cookie数据
        Cookie[] cookies = request.getCookies();
        //通过cookie名称获得想要的cookie
        if(cookies!=null){
            for(Cookie cookie:cookies){
                if(cookie.getName().equals("name")){
                    //获取cookie的值
                    String cookieValue = cookie.getValue();
                    System.out.println(cookieValue);
                }
            }
        }

session

  session会在服务器为每个用户创建一块内存空间,用于存储数据,客户端每次都要携带JSESSIONID在服务器寻找对应的空间,而session借助cookie的存储空间存储JSESSIONID,因此session的实现基于cookie

1)session的创建

  HttpSession session = request.getSession();

  如果服务器没有该会话的session对象,则创建一个新的对象

  如果已经存在session对象,则返回原来的对象

  它的实质是根据JSESSIONID判断客户端是否已经在服务器上存在session对象

2)session的存取方法

  session.setAttribute(String name,Object obj);

  session.getAttribute(String name);

  session.removeAttribute(String name);

3)session的生命周期

  创建时间:第一次执行request.getSession()

  销毁时间:<1>服务器非正常关闭时

       <2>session失效(默认三十分钟)

        从何时开始计时?从不操作服务器端资源开始

       <3>手动摧毁session

        session.invalidate();

猜你喜欢

转载自www.cnblogs.com/xiongdaren/p/9021940.html