使用Filter過濾器中訪問getSession()要轉化

Filter過濾器中訪問getSession()要進行轉化

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse res = (HttpServletResponse)response;        
        User user = (User)req.getSession().getAttribute("user");
}

request.getSession()的問題

在JavaWeb項目中,request.getSession()一般是被用來存儲當前用戶對象到session中,或者從session中獲取當前用戶對象。 

分為無參和有參兩種寫法: 

1. 無參:request.getSession() 

從當前request中獲取session,如果獲取不到session,則會自動創建一個session,並返回新創建的session;如果獲取到,則返回獲取到的session; 

2. 有參:request.getSession(boolean var1) 

  • request.getSession(true) 

這種方式和無參時一樣,隻是增傢瞭一個true參數,明確告訴它在獲取不到的時候自動創建session; 

  • request.getSession(false) 

這種方式與上兩種的區別,就是在獲取不到session的時候,不會自動創建session,而是會返回null。

各方式的應用場景:

如果想要存儲信息到session中時,使用request.getSession(), 

如果想要獲取session中的信息時,使用request.getsession(false),並在獲取後對session變量進行是否為null的判斷,再進行下一步操作。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。 

推薦閱讀: