Springboot使用session
阿新 • • 發佈:2021-06-11
背景
瀏覽器發起請求--> 服務端建立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