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
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- 換個角度使用VUE過濾器Vue過濾器
- 二進位制轉十進位制快速轉換方法
- 【JavaWeb】EL表示式&過濾器&監聽器JavaWeb過濾器
- 【轉】css樣式自動換行(強制換行)CSS
- css實現強制不換行/自動換行/強制換行CSS
- 如果使用路由器對家中的網路進行控制?路由器
- 使用AngularJS中的filterFilter函式進行過濾AngularJSFilter函式
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- JavaScript中的強制型別轉換JavaScript型別
- jQuery中過濾方法slice()方法如何使用?jQuery
- shell 中轉換16進位制10進位制
- Rust中的迭代器的使用:map轉換、filter過濾、fold聚合、chain連結RustFilterAI
- 深圳率先對“996”出手:自願加班也不行 必須強制休假996
- Oracle中的進位制轉換Oracle
- Request.getAttribute() 跟 Request.getSession().getAttribute() 之g有什N不同Session
- 使用bc做進位制轉換
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- JS在if中的強制型別轉換JS型別
- 與眾不同的進位制轉換方法 (轉)
- PHP 對資料進行驗證和過濾PHP
- 使用攔截器的方法過濾特性
- 今後 Linux 想播放 Flash 就必須使用 Chrome 瀏覽器LinuxChrome瀏覽器
- 遞迴-進位制轉換器(十六進位制以內)遞迴
- 強制型別轉換型別
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- css控制強制換行CSS
- java過濾器中如何轉移地址?Java過濾器
- Python中各進位制轉換Python
- 計算機中進位制轉換計算機
- oracle中進位制轉換函式Oracle函式
- JavaScript中的多種進位制與進位制轉換JavaScript
- Oracle中十進位制與十六進位制轉換程式Oracle
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係