• 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

  • 相关阅读:
    EasyARM-iMX283A的Linux 开发环境构建
    linux指令tar笔记
    使用cuteFTP与虚拟机交互文件---安装ftp服务
    SecureCRT显示乱码的解决办法
    【转】简明 Vim 练级攻略
    图像识别___YUV学习手记
    一个简易的软件定时器
    OV7670配置和调试小结
    linux驱动开发( 五) 字符设备驱动框架的填充file_operations结构体中的操作函数(read write llseek unlocked_ioctl)
    hash-1.hash表和hash算法
  • 原文地址:https://www.cnblogs.com/postgredingdangniu/p/9614348.html
Copyright © 2020-2023  润新知