久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java過(guò)濾器中Filter的ChainFilter過(guò)濾鏈

瀏覽:7日期:2022-08-29 13:03:40

1、什么是過(guò)濾器?

在客戶(hù)端到服務(wù)器的過(guò)程中,當(dāng)發(fā)送請(qǐng)求時(shí),如果有不符合的信息將會(huì)被filter進(jìn)行攔截,如果符合則會(huì)進(jìn)行放行,在服務(wù)器給客戶(hù)端響應(yīng)時(shí)也會(huì)進(jìn)行判斷 如果有不符合的信息將會(huì)被filter進(jìn)行攔截,如果符合則會(huì)進(jìn)行放行。

OOP:Java面向?qū)ο缶幊蹋橄蟆⒎庋b、繼承、多態(tài)。

AOP:面向切面編程,過(guò)濾器就是一個(gè)面向切面的編程思想。

AOP是sun公司srvlet2.3版本之后推出的新功能,在2.3之前的版本沒(méi)有該功能,定義一個(gè)過(guò)濾器需要實(shí)現(xiàn)(implement)Filter接口,這里實(shí)現(xiàn)的是javax.servlet.Filter。

過(guò)濾器是一個(gè)程序,它先于與之相關(guān)的servlet或JSP頁(yè)面運(yùn)行在服務(wù)器上。過(guò)濾器可附加到一個(gè)或多個(gè)servlet或JSP頁(yè)面上,并且可以檢查進(jìn)入這些資源的請(qǐng)求信息。在這之后,過(guò)濾器可以作如下的選擇:①以常規(guī)的方式調(diào)用資源(即,調(diào)用servlet或JSP頁(yè)面)。 ②利用修改過(guò)的請(qǐng)求信息調(diào)用資源。③調(diào)用資源,但在發(fā)送響應(yīng)到客戶(hù)機(jī)前對(duì)其進(jìn)行修改。④阻止該資源調(diào)用,代之以轉(zhuǎn)到其他的資源,返回一個(gè)特定的狀態(tài)代碼或生成替換輸出。

2、過(guò)濾器的生命周期:

在項(xiàng)目開(kāi)始啟動(dòng)的時(shí)候,過(guò)濾器開(kāi)始初始化,當(dāng)有請(qǐng)求來(lái)的時(shí)候開(kāi)始自動(dòng)去執(zhí)行doFilter方法,隨著項(xiàng)目的關(guān)閉過(guò)濾器開(kāi)始停止。

3、過(guò)濾器有什么用?

過(guò)濾器主要的作用是過(guò)濾請(qǐng)求,可以通過(guò)Filter技術(shù),web服務(wù)器管理的所有web資源:例如:JSP、Servlet、靜態(tài)圖片文件、或靜態(tài)HTML文件進(jìn)行攔截,從而實(shí)現(xiàn)一些特殊功能,例如:實(shí)現(xiàn)URL級(jí)別的權(quán)限控制、過(guò)慮敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。

4、該怎么用?

可以寫(xiě)多個(gè),從用戶(hù)訪(fǎng)問(wèn)——》第一個(gè)過(guò)濾器——》第二個(gè)過(guò)濾器——》Servlet

過(guò)濾器的生命周期:隨著項(xiàng)目的啟動(dòng)而創(chuàng)建,當(dāng)訪(fǎng)問(wèn)了地址后而調(diào)用doFilter方法,這個(gè)會(huì)多次執(zhí)行,隨著項(xiàng)目的關(guān)閉而銷(xiāo)毀。

調(diào)用doFilter方法時(shí)有三個(gè)參數(shù):

reqest(ServletRequest)——》HttpServletRequest(注意強(qiáng)轉(zhuǎn):在使用HttpServletRequest這個(gè)獨(dú)有的方法時(shí)要強(qiáng)轉(zhuǎn))

response(ServletResponse)——》HttpServletResponse(注意強(qiáng)轉(zhuǎn):在使用HttpServletResponse這個(gè)獨(dú)有的方法時(shí)要強(qiáng)轉(zhuǎn))

filterchain 鏈 可以指向下一個(gè)地址(如果有過(guò)濾器則指向下一個(gè)過(guò)濾器,沒(méi)有指向資源Servlet) 過(guò)濾、攔截、放行

chain.doFilter(req,resp);//放行

ChainFilter鏈:

它可以指向下一個(gè)資源,如果還有過(guò)濾器,則繼續(xù)進(jìn)行下一次的過(guò)濾,如果沒(méi)有過(guò)濾器,則會(huì)指向資源(servlet)。

java過(guò)濾器中Filter的ChainFilter過(guò)濾鏈

filter應(yīng)用場(chǎng)景:

(1).為所有的Servlet設(shè)置編碼

(2).設(shè)置跨域問(wèn)題

(3).解決所有的防盜鏈問(wèn)題

使用過(guò)濾器的時(shí)候需要配置的文件:

(1)、固定地址

(2)、通配符

(3)、指定目錄

過(guò)濾器代碼奉上:

package servlet; import javax.servlet.*;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/*** urlPattern={'/*'}獲取所有的Servlet的映射路徑,實(shí)現(xiàn)不同Servlet之間的交互*/@WebServlet(name = 'DemoFilter',urlPatterns = {'/*'})public class DemoFilter implements Filter{/*** 過(guò)濾器的初始化方法* @param filterConfig 可以獲取部署描述符文件(web.xml)中分配的過(guò)濾器初始化參數(shù)。* @throws ServletException*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println('過(guò)濾器被創(chuàng)建了');}/**** @param servletRequest 請(qǐng)求* @param servletResponse 響應(yīng)* @param filterChain 鏈條,對(duì)過(guò)濾器進(jìn)行阻止和放行* @throws IOException* @throws ServletException*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println('過(guò)濾器被執(zhí)行了');servletResponse.setContentType('text/html,charset=utf-8');HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;response.addHeader('Access-Control-Allow-Origin','*');String referer = request.getHeader('referer');System.out.println(referer);filterChain.doFilter(servletRequest,servletResponse);//放行}@Overridepublic void destroy() {System.out.println('過(guò)濾器被銷(xiāo)毀了');}}

到此這篇關(guān)于java過(guò)濾器中Filter的ChainFilter過(guò)濾鏈的文章就介紹到這了,更多相關(guān)java過(guò)濾器Filter內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 凤台县| 阜平县| 眉山市| 马山县| 邯郸县| 华池县| 信阳市| 双鸭山市| 南充市| 尼勒克县| 南乐县| 平原县| 墨竹工卡县| 蓬莱市| 临邑县| 宜兰县| 洪江市| 平罗县| 五河县| 洮南市| 海晏县| 佛学| 和顺县| 耿马| 泽普县| 厦门市| 宿松县| 陈巴尔虎旗| 白水县| 宁海县| 桐城市| 搜索| 海城市| 道孚县| 溧阳市| 济宁市| 滨海县| 讷河市| 大安市| 阿巴嘎旗| 静安区|