java后端的session原理分析

1、java的seesion的机制是这样的。当浏览器第一次访问服务器,你会问服务器是怎么知道我第一次访问的,先不管。

2、用户在浏览器第一次发起请求,java不管三七二十一先创建一个内存,同时生成一个session指向这个内存,同时又生成一个sessionid指向这个session。所以是 sessionid -> session -> 内存,这是java帮我们做的。

3、当请求响应给前端数据时,java会自动的将sessionid传给浏览器,浏览器自动把这个sessionid存起来。每当发起另外的请求时,浏览器都会把这个sessionid传给后端java,java利用这个sessionid找到session,那么我们就可以通过session找到这个内存。

4、所以我们知道有个内存这样的东西,我们可以利用它存东西。

5、所以浏览器怎么判断是不是第一次请求,就看浏览器访问java后端是是否传sessionid。

具体业务场景:

登录:前端传账号密码过来,验证一下都正确,那好,我们把这个数据存到这个内存里面,java提供了session我们可以直接访问这个内存。代码如下,然后正常返回我们的数据, 这个sessionid我们不用管,java会自动帮助我们在header传给前端。

    @RequestMapping(value = "login.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse login(String username, String password, HttpSession session){
        ServerResponse response = iUserService.login(username,password);
        if(response.isSuccess()){
            session.setAttribute("user",response);
        }
        return response;
    }

当用户请求其他接口,浏览器自动携带sessionid传给后端,后端通过sessionid拿到session,也是通过session操作这个内存,下面我是移除了这个信息。

    @RequestMapping(value = "logout.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse logout(HttpSession session){
        session.removeAttribute("user");
        return ServerResponse.createBySuccess();
    }

你可能感兴趣的:(java后端的session原理分析)