使用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。
推薦閱讀:
- java web項目Session獲取不到問題及解決
- Java過濾器doFilter裡chain.doFilter()函數的理解
- CorsFilter 過濾器解決跨域的處理
- Java精品項目瑞吉外賣之登陸的完善與退出功能篇
- 詳解JavaWeb中的過濾器Filter