鍍金池/ 問答/Java  Linux/ SSH中controller里httpSession無法作為全局變量?

SSH中controller里httpSession無法作為全局變量?

我在做一個項目時:

clipboard.png
這是HomeController中登陸成功后存到httpSession的staffDto。
然后我在另一個NoticeController中要取這個staffDto,

clipboard.png
可以將HttpSession作為方法參數(shù)然后取出,但是我為了方便將HttpSession作為這個Controller的全局變量時,跑的時候卻報了空指針異常。

clipboard.png
是HttpSession不能作為Controller的全局變量用,還是我用的有錯誤?
另外順便問下Session和HttpSession有區(qū)別嗎?

回答
編輯回答
六扇門
  1. 你的httpSession沒有初始化,因為他是一個對象所有默認初始化為null,你的StaffDto是類全局變量在執(zhí)行構(gòu)造方法之前初始化調(diào)用httpSession.getAttribute(),httpSession為null
  2. HttpSession不能設(shè)備全局變量,因為一個Controller可以被所有客戶端訪問,你寫在方法的參數(shù)時SpringMvc會幫你完成HttpSession注入。
  3. 你現(xiàn)在寫的所有Session應(yīng)該都是HttpSession,HttpSession本質(zhì)上是一個接口,你方法接受到的HttpSession是SpringMVC實現(xiàn)接口返回給你的實例
2017年5月9日 05:20