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