SpringMvc之值獲取Session的兩種方法-yellowcong
阿新 • • 發佈:2019-01-01
在SpringMvc中,獲取的Session的方法有兩種,一種是通過注入HttpServletRequest,然後 再獲取,第二種是通過RequestContextHolder (Spring mvc提供的)這個類來獲取
通過注入HttpServletRequest
獲取到HttpServletRequest後,再獲取Session啥的都不是麻煩事了
/**
* 通過注入Request的方式來獲取session
* @param request
* @return
*/
@RequestMapping(value="/login" ,method=RequestMethod.GET)
public String login1(HttpServletRequest request) {
//獲取到Session物件
HttpSession session = request.getSession();
//往Session中放入資料
session.setAttribute("username", "yellowcong");
session.setAttribute("password", "doubi");
return "demo/session" ;
}
RequestContextHolder 獲取Session
通過這個方法不僅可以獲取到Session,而且可以獲取到HttpServletRequest,HttpServletResponse的物件
/**
* 通過Springmvc的內建物件來獲取
* @return
*/
@RequestMapping(value="/login2",method=RequestMethod.GET)
public String login2(){
//獲取到Session物件
HttpSession session = getSession();
//往Session中放入資料
session.setAttribute("username", "yellowcong_test");
session.setAttribute("password", "doubi_test");
session.setAttribute("sessionId", session.getId());
//跳轉到頁面
return "demo/session";
}
/**
* 在SpringMvc中獲取到Session
* @return
*/
public HttpSession getSession(){
//獲取到ServletRequestAttributes 裡面有
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//獲取到Request物件
HttpServletRequest request = attrs.getRequest();
//獲取到Session物件
HttpSession session = request.getSession();
//獲取到Response物件
//HttpServletResponse response = attrs.getResponse();
return session;
}
可以看到ServletRequestAttributes 包含了Request,Response和Ssession物件
獲取後的結果,獲取的Session id是不一樣的。
最後附上前臺程式碼
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf"%>
<html>
<head>
<title>xx文章</title>
</head>
<body>
<!-- ${user.username} 這個訪問了 使用者model裡面的屬性 -->
<h2>${username} -${password}-${sessionId }</h2>
</body>
</html>