zoukankan      html  css  js  c++  java
  • 2018-09-08Cookie的发送和Cookie的读取+Session基本原理

    Cookie会话技术:

    不值得上传到服务器并且保存在数据库的数据保存在Cookie中!

     

    从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话!

    会话技术就是记录这次会话中客户端态的状与数据的!

     

    会话技术分为CookieSession

    Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端  可以清除Cookie

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

     

    Cookie技术可以分为两方面学习:

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

    服务器端怎样接收客户端携带的Cookie

     

    Cookie中只可以写英文不可以写中文!

     

    如果不设置持久化时间,Cookie会存储在浏览器的内存中,浏览器关闭  Cookie信息销毁(会话级别的Cookie),如果设置持久化时间,Cookie信息会  被持久化到浏览器的磁盘文件里!

     

    如果不设置携带路径,那么该Cookie信息会在访问产生该CookieWeb资源所在的路径(Web项目的服务器路径)都携带Cookie信息!

     

    发送Cookie示例代码:

    package com.oracle.demo01;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class SendCookie extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //创建Cookie:
            Cookie Cookie=new Cookie("goods","phone");
            //设置Cookie持久化存储时间,也就是Cookie在硬盘上保存的时间:
            Cookie.setMaxAge(3*60);
            //设置Cookie携带路径,只有访问/Web06/SendCookie的时候才会携带Cookie信息:
            //Cookie.setPath("/Web06/SendCookie");
            //只要访问Web06下的资源都携带Cookie,默认是/Web06:
            //Cookie.setPath("/Web06");
            //只要访问服务器下的所有资源都携带Cookie:
            //Cookie.setPath("/");
            //发送Cookie至客户端:
            response.addCookie(Cookie);
            //第一次访问请求没有,第二次访问请求访问都有!
            //一次会话是根据浏览器开启与关闭来判定的!
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    服务器接收客户端携带的Cookie信息示例代码:

    package com.oracle.demo01;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class GetCookie extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获得客户端携带的Cookie的数据:
            Cookie[] Cookies=request.getCookies();
            //遍历,通过Cookie名称获得想要的Cookie值:
            for(Cookie Coo:Cookies){
                if(Coo.getName().equals("goods")){
                    String value=Coo.getValue();
                    System.out.println(value);
                }
            }
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    服务器移除客户端Cookie示例代码:

    package com.oracle.demo01;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class RemoveCookie extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //创建Cookie:
            Cookie Cookie=new Cookie("goods","phone");
            //设置携带路径:
            Cookie.setPath("/Web06/SendCookie");
            //设置持久化时间:
            Cookie.setMaxAge(0);
            //发送Cookie至客户端:
            response.addCookie(Cookie);
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    Seesion技术:

    Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间;所以说Session的实现是基于CookieSession需要借助于Cookie存储客户的唯一性标识JSESSIONID

     

    //Session技术是依托于Cookie来实现的!

     

    强调:

    当创建一个Session域时,TomCat内核会看看客户端有没有已有的存储SessionCookie,如果有,则把服务器端已有的JSessionID给客户端,如果没有该存储SessionCookie的话,TomCat内核会重新分配一个JSessionID给客户端!

     

    //不同浏览器有不同的JSessionID

     

    获得Seesion域对象:

    HttpSession Session = request.getSession();

     

    Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

    session.setAttribute(String name,Object obj);

    session.getAttribute(String name);

    session.removeAttribute(String name);

     

    面试题:

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

    销毁:

        服务器非正常关闭时!

        Session过期/失效(默认30分钟),默认在服务器消失(Tips:如果想要延长Session在服务器的存留时间,请在自定义的Web.xml文件中定义Session的生命周期,可以复制TomCatSession设置来重新定义)!

        调用Session.invalidate();方法手动销毁!

     

    Session域的作用范围:默认在一次会话中,任何资源共用一个Session

    Cookie会话技术:

    不值得上传到服务器并且保存在数据库的数据保存在Cookie中!

     

    从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话!

    会话技术就是记录这次会话中客户端态的状与数据的!

     

    会话技术分为CookieSession

    Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端  可以清除Cookie

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

     

    Cookie技术可以分为两方面学习:

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

    服务器端怎样接收客户端携带的Cookie

     

    Cookie中只可以写英文不可以写中文!

     

    如果不设置持久化时间,Cookie会存储在浏览器的内存中,浏览器关闭  Cookie信息销毁(会话级别的Cookie),如果设置持久化时间,Cookie信息会  被持久化到浏览器的磁盘文件里!

     

    如果不设置携带路径,那么该Cookie信息会在访问产生该CookieWeb资源所在的路径(Web项目的服务器路径)都携带Cookie信息!

     

    发送Cookie示例代码:

    package com.oracle.demo01;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.Cookie;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class SendCookie extends HttpServlet {

           public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  //创建Cookie

                  Cookie Cookie=new Cookie("goods","phone");

                  //设置Cookie持久化存储时间,也就是Cookie在硬盘上保存的时间:

                  Cookie.setMaxAge(3*60);

                  //设置Cookie携带路径,只有访问/Web06/SendCookie的时候才会携带Cookie信息:

                  //Cookie.setPath("/Web06/SendCookie");

                  //只要访问Web06下的资源都携带Cookie,默认是/Web06

                  //Cookie.setPath("/Web06");

                  //只要访问服务器下的所有资源都携带Cookie

                  //Cookie.setPath("/");

                  //发送Cookie至客户端:

                  response.addCookie(Cookie);

                  //第一次访问请求没有,第二次访问请求访问都有!

                  //一次会话是根据浏览器开启与关闭来判定的!

           }

           public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  doGet(request, response);

           }

    }

     

    服务器接收客户端携带的Cookie信息示例代码:

    package com.oracle.demo01;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.Cookie;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class GetCookie extends HttpServlet {

           public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  //获得客户端携带的Cookie的数据:

                  Cookie[] Cookies=request.getCookies();

                  //遍历,通过Cookie名称获得想要的Cookie值:

                  for(Cookie Coo:Cookies){

                         if(Coo.getName().equals("goods")){

                                String value=Coo.getValue();

                                System.out.println(value);

                         }

                  }

           }

           public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  doGet(request, response);

           }

    }

     

    服务器移除客户端Cookie示例代码:

    package com.oracle.demo01;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.Cookie;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class RemoveCookie extends HttpServlet {

           public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  //创建Cookie

                  Cookie Cookie=new Cookie("goods","phone");

                  //设置携带路径:

                  Cookie.setPath("/Web06/SendCookie");

                  //设置持久化时间:

                  Cookie.setMaxAge(0);

                  //发送Cookie至客户端:

                  response.addCookie(Cookie);

           }

           public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  doGet(request, response);

           }

    }

     

    Seesion技术:

    Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间;所以说Session的实现是基于CookieSession需要借助于Cookie存储客户的唯一性标识JSESSIONID

     

    //Session技术是依托于Cookie来实现的!

     

    强调:

    当创建一个Session域时,TomCat内核会看看客户端有没有已有的存储SessionCookie,如果有,则把服务器端已有的JSessionID给客户端,如果没有该存储SessionCookie的话,TomCat内核会重新分配一个JSessionID给客户端!

     

    //不同浏览器有不同的JSessionID

     

    获得Seesion域对象:

    HttpSession Session = request.getSession();

     

    Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

    session.setAttribute(String name,Object obj);

    session.getAttribute(String name);

    session.removeAttribute(String name);

     

    面试题:

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

    销毁:

        服务器非正常关闭时!

        Session过期/失效(默认30分钟),默认在服务器消失(Tips:如果想要延长Session在服务器的存留时间,请在自定义的Web.xml文件中定义Session的生命周期,可以复制TomCatSession设置来重新定义)!

        调用Session.invalidate();方法手动销毁!

     

    Session域的作用范围:默认在一次会话中,任何资源共用一个Session

  • 相关阅读:
    matplotlib数据可视化之柱形图
    xpath排坑记
    Leetcode 100. 相同的树
    Leetcode 173. 二叉搜索树迭代器
    Leetcode 199. 二叉树的右视图
    Leetcode 102. 二叉树的层次遍历
    Leetcode 96. 不同的二叉搜索树
    Leetcode 700. 二叉搜索树中的搜索
    Leetcode 2. Add Two Numbers
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/postgredingdangniu/p/9614348.html
Copyright © 2011-2022 走看看