• Springboot使用session


    背景

    浏览器发起请求--> 服务端创建session,会话建立--> 服务端返回sessionId作为cookie存储在浏览器中;

    浏览器再次发起请求,并且带着cookie--> 服务端通过cookie认证,确认是刚才建立的会话。


    代码实现

    这里使用的注解因为是代理对象,所以不用担心单例的问题

        @Autowired
        HttpServletRequest httpServletRequest;
    
    package com.example.testsession.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    
    @RestController
    @RequestMapping("/session")
    public class SessionController {
    
        @Autowired
        HttpServletRequest httpServletRequest;
    
        /**
         * 创建会话,并给session添加值
         *
         * @return
         */
        @RequestMapping("/set")
        @ResponseBody
        public void set() {
            System.out.println("----初次会话----");
    //        获得session,如果没有,自动创建一个
            HttpSession mySession = httpServletRequest.getSession();
            String mySessionId = mySession.getId();
    
            mySession.setAttribute("abc", "123");
    
            System.out.println("mySessionId:" + mySessionId);
    
        }
    
        /**
         * 浏览器通过cookie和服务端进行第二次会话
         */
        @RequestMapping("/get")
        @ResponseBody
        public void get() {
            System.out.println("----二次会话----");
    //        获得session,如果没有,返回null
            HttpSession mySession = httpServletRequest.getSession(false);
            String myCookie = mySession.getId();
    
            String vCode = (String) mySession.getAttribute("abc");
    
            System.out.println("myCookie:" + myCookie);
            System.out.println("get-s:" + vCode);
        }
    
    
    }
    
    

    通过路径访问

    http://localhost:8080/session/set
    

    http://localhost:8080/session/get
    

  • 相关阅读:
    Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificat
    git快速生成配置sshkey
    快速合并多个git项目到同一目录
    一次性删除docker images中name为none的镜像
    mongo数据库数据库导入、导出
    python下ssh的简单实现
    python操作mysql
    Python的方法解析顺序(MRO)[转]
    python异常处理
    面向对象类成员
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14875594.html
Copyright © 2020-2023  润新知