javaweb中,如果過濾器想使用getAttribute()方法,必須要對request進行強制轉換
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
Object attribute = ((HttpServletRequest) request).getSession().getAttribute(Constants.USER_SESSION);
if(attribute == null){
// 如果不正確,那麼還要跳回登陸頁面並顯示,不正確
request.setAttribute("error","請先登陸,再進去!");
request.getRequestDispatcher("/login.jsp").forward(request,response);
filterChain.doFilter(request,response);
}
}
可以很清楚看到,這裡的response,request
是ServletResponse
和ServletRequest
型別,而一個 servlet
他繼承的是 HttpServlet
,所以本質上,雖然都是在使用request
和response
,但是他們之間的作用域是不一樣的,如果想搞清楚,這兩個類之間的關係請看連結:
https://www.cnblogs.com/DreamFather/p/11326929.html
那麼當過濾器裡面想使用session
這樣的物件時,必須要對此時的request
進行強制型別轉換,即:
Object attribute = ((HttpServletRequest) request).getSession().getAttribute(Constants.USER_SESSION);
才能真正的拿到由另一個servlet中用session.setAttribute()方法進行儲存的東西。即:此時使用request
呼叫的getAttribute()方法,才能真正拿到被儲存進去的東西。
相關文章
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- mongo對文件中陣列進行過濾的三種方法Go陣列
- css中實現強制不換行/自動換行/強制換行CSS
- 陣列filter方法對陣列元素進行過濾陣列Filter
- 【轉】css樣式自動換行(強制換行)CSS
- 換個角度使用VUE過濾器Vue過濾器
- 【JavaWeb】EL表示式&過濾器&監聽器JavaWeb過濾器
- Rust中的迭代器的使用:map轉換、filter過濾、fold聚合、chain連結RustFilterAI
- css實現強制不換行/自動換行/強制換行CSS
- Python中各進位制轉換Python
- 深圳率先對“996”出手:自願加班也不行 必須強制休假996
- jQuery中過濾方法slice()方法如何使用?jQuery
- 進位制數轉換方法(八/十六/十)
- 強制型別轉換型別
- 進位制轉換
- JS在if中的強制型別轉換JS型別
- 計算機中進位制轉換計算機
- Qt進位制轉換(十進位制轉十六進位制)QT
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- JavaScript中的多種進位制與進位制轉換JavaScript
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- PHP 對資料進行驗證和過濾PHP
- 強制型別轉換之(==)型別
- Day08——強制轉換
- JavaScript 進位制轉換JavaScript
- 【python】進位制轉換Python
- 進位制的轉換
- 胖哥學SpringMVC:請求方式轉換過濾器配置SpringMVC過濾器
- 這樣進行進位制轉換更快更清晰哦!
- 必須明白的瀏覽器渲染機制瀏覽器
- [20220314]利用vim下使用gdb進行各種進位制轉換外掛.txt
- 4、過濾器的使用及自定義過濾器過濾器
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- iOS 常用RGB十六進位制顏色轉換方法iOS
- Shiro原理解析(二)--過濾器的執行機制過濾器
- 進大廠必須要會的單元測試
- 監聽器,過濾器,攔截器的執行過程和對比過濾器
- 造型與強制型別轉換型別