-
生命周期.
查看全部 -
做筆記了.
查看全部 -
過濾器處理亂碼問題,在doFilter中添加request.setCharacterEncoding(charset)
查看全部 -
過濾器在實際項目中的應用場景
1、對用戶請求進行統一認證(判斷當前用戶是否符合認證條件,不符合時進行一些處理)——>登陸校驗
2、編碼轉換(轉換一些字符集編碼,防止開發中亂碼問題)
3、對用戶發送的數據進行過濾替換(防止注入一些攻擊,對參數進行檢測和判別)
4、轉換圖像格式(對response進行后處理,并轉換它的格式輸出)
5、對響應的內容進行壓縮(可以對內容進行加密操作,數據拿過來時進行加密,加密之后解析再返回給用戶)
查看全部 -
Servlet3.0支持異步處理,Filter可以支持異步操作模式。
@WebFilter中asyncSupported設置為true,dispatcherTypes屬性中添加DispatcherType.ASYNC
request中的startAsync()表示開啟異步操作,返回AsyncContext對象。將此對象傳給線程可以獲取request,response對象。
使用線程對事務異步處理
web.xml中Servlet要配置支持異步
從結果來看業務是由線程異步完成,線程休眠10s后輸出結果
查看全部 -
ERROR:目標資源是通過聲明式異常處理機制調用時,過濾器將被調用。
在web.xml中配置錯誤狀態碼,錯誤頁面路徑。
再配置過濾器處理異常請求,url-pattern配置為錯誤頁面路徑,注意dispatcher必須要配置為ERROR,才能在發生錯誤,跳轉到錯誤頁面時調用過濾器。
Servlet3.0 ASYNC 支持異步處理:Filter將異步處理完成相關操作,將一直往下執行。
@WebFilter 用于將一個類聲明為過濾器,該注解將會在部署時被容器處理,容器將根據具體的屬性配置將相應的類部署為過濾器。
查看全部 -
Servlet2.5中過濾器的分類:
REQUEST:用戶直接訪問頁面時,Web容器將會調用過濾器。
FORWARD:目標資源是通過RequestDispatcher的forward訪問時,該過濾器將被調用。
INCLUDE:目標資源是通過RequestDispatcher的include方法調用時,過濾器將被調用。
重定向sendRedirect,屬于REQUEST行為,會被dispatcher配置為REQUEST的Filter處理。
轉發getRequestDispatcher().forward(req,res),屬于FORWARD行為,會被dispatcher配置為FORWARD的Filter處理。
getRequestDispatcher().include(req,res),屬于INCLUDE行為,會被dispatcher配置為INCLUDE的Filter處理。
在jsp頁面使用jsp動作標簽forward,include 也能實現被相應過濾器處理。
查看全部 -
過濾器鏈:針對一個用戶的請求,找到匹配的過濾器有多個。服務器會按照web.xml中過濾器定義的先后順序組裝成一條鏈。
執行順序:用戶的請求到達過濾器1,執行過濾器1的Chain.doFilter放行前的代碼,過濾器1放行后,請求到達過濾器2的Chain.doFilter放行前的代碼,過濾器2放行后,請求到達web資源。響應數據首先,返還給過濾器2,執行過濾器2的Chain.doFilter后的代碼,再執行過濾器1的Chain.doFilter后的代碼,最后響應給用戶。
查看全部 -
實現javax.servlet.Filter接口
在web.xml中注冊
針對一個<filter>?可以配置多個<filter-mapping>
<url-pattern>中? * 代表任意值? ?/index*代表index為前綴的URL, /*代表所有URL。
在的FilterChain的dofilter(servletRequest, servletResponse)方法執行后,訪問JSP(目標資源)后,才繼續往下執行。
問題環節:
【1】過濾器是否能改變用戶請求的Web資源呢?也就是能否改變用戶請求的路徑?
答:可以,比如:登錄,檢測到不符合要求,則可以跳轉到登陸頁面。
【2】過濾器能否直接返回數據,能不能直接處理用戶請求?
答:不可以,因為Filter不是標準的Servlet,不能把數據直接返回到用戶請求,只能跳轉到Web請求的資源,或者跳轉、重定向到其他的Web資源。
查看全部 -
web容器啟動時加載過濾器,用戶的請求經過過濾器,再由過濾器將請求發送給Web資源,Web資源的響應發送給過濾器,過濾器將Web資源的響應發送給用戶。
過濾器的生命周期:
web容器啟動時根據web.xml的配置實例化一次,初始化。
過濾是根據過濾器中的doFilter()方法。
web容器關閉時過濾器銷毀。
查看全部 -
過濾器:過濾源、過濾規則、過濾結果
Web過濾器過濾用戶請求,不處理結果
過濾器定義:過濾器是一個服務端的組件,它可以截取用戶端的請求與響應信息,并對這些信息過濾。
查看全部 -
init();//初始化
dofilter();//執行
destroy();//銷毀過濾器
查看全部 -
過濾器在web.xml中配置且只加載一次
查看全部 -
通過在過濾器中修改字符編碼的方式
查看全部 -
請求中文參數亂碼的修改方式:
修改tomcat字符集;
添加編碼過濾器;
代碼中通過getBytes()獲取字節碼強制轉換。
查看全部
舉報