1. 程式人生 > >SpringMvc之值獲取Session的兩種方法-yellowcong

SpringMvc之值獲取Session的兩種方法-yellowcong

在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>