Cookie和Session

请求转发和重定向的区别:

  请求转发:

request.getRequestDispatcher("login.html").forward(request, response);

    1)请求转发的路径是当前页面的路径,没有发生跳转

    2)请求转发只有一次客户端请求,因为后面的工作由服务器帮忙执行了

    3)效率高一些

    4)后续只能访问本项目资源,因为是服务器代替执行

    5)可以使用原来的request对象

  重定向:

response.sendRedirect("login.html");

    1)重定向后的路径是资源所在的真正路径,进行了跳转

    2)至少进行两次请求。因为请求后服务器返回了302状态和Location地址,浏览器会根据这个返回地址进行再次请求

    3)效率低一些

    4)可以任意跳转,不是本项目也可以

    5)request对象已经改变,不可再次使用

  举例说明:

    去商店买咖啡,但是商店没有:

      重定向:老板通知你没有,你去别的商店买

      请求转发:老板帮你去别的商店买,然后给你

Cookie:

  其实就是服务器发送给客户端,然后保存在客户端的一小份数据

  1、可以应用的场景:

    浏览记录、购物车、自动登录等

  2、为什么需要Cookie

    http请求是无状态的,但是需要满足用户体验。(无状态的意思就是:客户端请求服务器后,再次进行请求,服务器就不知道此客户端时候来过)

  3、Cookie的使用

    1)服务器响应进行cookie添加(这样客户端收取的数据中,响应头就多了一个字段Set-Cookie)

    Cookie cookie = new Cookie("aa", "bb");
    response.addCookie(cookie);

    2)获取客户端传递过来的cookie

     Cookie[] cookies = request.getCookies();
        if(cookies != null){
            for (Cookie c : cookies) {
                String cookieName = c.getName();
                String cookieValue = c.getValue();
                System.out.println(cookieName + " = "+ cookieValue);
            }
        }

    3)cookie常用方法:

      //关闭浏览器后,cookie就没有了。 ---> 针对没有设置cookie的有效期。
        //    expiry: 有效 以秒计算。
        //正值 : 表示 在这个数字过后,cookie将会失效。
        //负值: 关闭浏览器,那么cookie就失效, 默认值是 -1
        cookie.setMaxAge(60 * 60 * 24 * 7);
        
        //赋值新的值
        //cookie.setValue(newValue);
        
        //用于指定只有请求了指定的域名,才会带上该cookie
        cookie.setDomain(".org.com");
        
        //只有访问该域名下的cookieDemo的这个路径地址才会带cookie
        cookie.setPath("/CookieDemo");

  4、Cookie存在的问题

    由于Cookie的数据存放在客户端上,所以不安全;Cookie是传递数据有限

Session:

  是一种基于Cookie的会话机制。Cookie是存放在客户端的一小份数据。Session则是存放在服务器的

  1)常用API

    //得到会话ID
        String id = session.getId();
        
        //存值
        session.setAttribute(name, value);
        
        //取值
        session.getAttribute(name);
        
        //移除值
        session.removeAttribute(name);

      //强制干掉会话,里面存放的任何数据就都没有了。
      session.invalidate();

  2)Session的创建与销毁时机:

    创建:

      当调用request.getSession()的时候就创建。

    销毁:(由于Session是服务器端的数据,所以关闭浏览器也不会消失)

      关闭服务器;Session会话时间超时(默认30分钟)

 

 

 

 

    

上一篇:Zabbix监控系统


下一篇:阿里云ACK环境下采集Flexvolume数据卷的Metric信息