zoukankan      html  css  js  c++  java
  • 2020/2/8学习总结

    今天学习了session和cookie的相关内容

    一、会话技术
    一次会话过程指的是会从打开浏览器到关闭浏览器的过程,在此过程中包含多次请求和响应,会话指的就是这些请求和响应。
    由于HTTP是无状态的协议,每一次的请求和响应都是相互独立的。而在实际的操作中,完成一些比较复杂的功能时需要在多次不同的请求和响应之间交互。所以为了使不同请求和响应之间能够交互,便产生了会话技术。
    会话技术主要有两类:

    cookie
    cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自客户端浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就可以从自己保存的cookie里面获取一些有用信息。

    session
    session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的session中取出数据为用户服务。

    二、cookie的简单使用
    cookie是客户端会话技术,将数据保存到客户端。
    cookie就是一串字符串,格式就是键值对,用分号隔开。使用cookie时,调用Java自带的相应的API即可。
    使用cookie的步骤如下:

    创建cookie对象,绑定数据
    发送cookie对象
    获取cookie对象,得到数据
    下面是一个简单实例的完整代码,CookieTest1创建并发送cookie,CookieTest2获取cookie。

    • CookieTest1
      package com.study.cookieandsessionstudy;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.Cookie;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      @WebServlet(name = "CookieTest1", value = "/CookieTest1")
      public class CookieTest1 extends HttpServlet {
          @Override
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
              //创建cookie 注意这里穿的value字符不要加空格,addCookie时是不能使用空格的
              Cookie cookie = new Cookie("msg", "hello-world");
      
              //发送cookie
              response.addCookie(cookie);
          }
      
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doPost(request, response);
      
          }
      }
      • CookieTest2
      • package com.study.cookieandsessionstudy;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.Cookie;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        
        @WebServlet(name = "CookieTest2", value = "/CookieTest2")
        public class CookieTest2 extends HttpServlet {
            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                //获取cookie
                Cookie[] cookies = request.getCookies();
        
                String name;
                String value;
        
                if (cookies != null) {
                    for (Cookie cookie : cookies) {
                        name = cookie.getName();
                        value = cookie.getValue();
                        System.out.println("name:" + name);
                        System.out.println("value:" + value);
                    }
        
                }
        
            }
        
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                this.doPost(request, response);
        
            }
        }

        三、session的简单使用

      • session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象。
      • session的使用步骤:

        获取session对象
        使用session存储数据
        使用session获取数据
        注意session与cookie在使用时的差异,cookie是Cookie对象,而session是HttpSession对象;cookie对象由自己创建,而session对象是获取对象(request.getSession()),而不用自己创建HttpSession对象。

        下面是一个简单的session案例,SessionTest1存储数据,SessionTest2获取数据。

      • SessionTest1
        package com.study.cookieandsessionstudy;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.HttpSession;
        import java.io.IOException;
        
        @WebServlet(name = "SessionTest1", value = "/SessionTest1")
        public class SessionTest1 extends HttpServlet {
            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                //获取session
                HttpSession httpSession = request.getSession();
        
                //存储数据
                httpSession.setAttribute("msg", "hello-world");
            }
        
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                this.doPost(request, response);
        
            }
        }

        SessionTest2:

      • package com.study.cookieandsessionstudy;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.HttpSession;
        import java.io.IOException;
        
        @WebServlet(name = "SessionTest2", value = "/SessionTest2")
        public class SessionTest2 extends HttpServlet {
            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                //获取session
                HttpSession httpSession = request.getSession();
        
                //获取数据
                Object object = httpSession.getAttribute("msg");
                System.out.println(object);
        
            }
        
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
                this.doPost(request, response);
        
            }
        }
  • 相关阅读:
    mongodb 条件查询
    node 创建静态web服务器(下)(处理异步获取数据的两种方式)
    node 创建静态web服务器(上)
    node.js 从文件流中读写数据及管道流
    node.js 中的 fs (文件)模块
    vue-router 嵌套路由
    (转载)js调用打印机 打印整体或部分
    web react面试题
    vue 面试题
    vue 父页面中含子页面滑动,滑动结束,底部组件进行滑动
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12287899.html
Copyright © 2011-2022 走看看