1. 程式人生 > 其它 >Springboot使用session

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