過濾器是處于客戶端與服務(wù)器資源之前的一道過濾技術(shù)
1.過濾器作用
過濾器執(zhí)行在Servlet之前,客戶端發(fā)送請(qǐng)求時(shí),會(huì)先經(jīng)過過濾器Filter,在到達(dá)目標(biāo)Servlet當(dāng)中。從而實(shí)現(xiàn)一些特殊的功能。例如實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。
2.編寫過濾器
攔截器代碼
@WebFilter("/tage") //設(shè)置攔截的目標(biāo),也及時(shí)該目標(biāo)的訪問地址
public class MyFilter implements Filter{// 初始化方法
@Override
public void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {System.out.println("執(zhí)行攔截器");
// 讓請(qǐng)求繼續(xù)執(zhí)行到攔截的servlet當(dāng)中去
chain.doFilter(request, response);
//執(zhí)行完畢返回
System.out.println("執(zhí)行完畢返回");
}
//效果方法
@Override
public void destroy() {// TODO Auto-generated method stub
}
}
目標(biāo)代碼
@WebServlet("/tage")
public class TageServlet extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("我是目標(biāo)servlet");
}
}
3.在web.xml中配置過濾器
過濾器代碼
public class MyFilter implements Filter{@Override
public void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException { System.out.println("我執(zhí)行啦 ");
//繼續(xù)執(zhí)行剩下的過濾器
chain.doFilter(request, response); //讓目標(biāo)資源執(zhí)行,放行
}
@Override
public void destroy() {// TODO Auto-generated method stub
}
}
xml當(dāng)中的配置
myFilter com.qcby.MyFilter myFilter /*
4.關(guān)于攔截路徑
攔截器的攔截路徑通常有三種方式
精確匹配攔截:比如/index.jsp /tage
后置匹配攔截:比如*.html *.jsp
通配符攔截匹配/* 表示攔截所有。注意過濾器不能使用 / 匹配
5.過濾器鏈和優(yōu)先級(jí)
客戶端對(duì)服務(wù)器請(qǐng)求后,服務(wù)器在調(diào)用Servlet之前會(huì)調(diào)用一組過濾器(多個(gè)過濾器),那么這組過濾器就稱為一組過濾鏈。
每個(gè)過濾器都有特定的功能,當(dāng)一個(gè)過濾器的doFilter()方法被被調(diào)用后,Web服務(wù)器會(huì)創(chuàng)建一個(gè)代表Filter鏈的FilterChain對(duì)象傳遞該方法。在doFilter方法中,開發(fā)人員如果調(diào)用了FilterChain對(duì)象的doFilter()方法,則Web服務(wù)器會(huì)檢查FilterChain對(duì)象中是否還有filter,如果有,則調(diào)用第2個(gè)filter,如果沒有,則調(diào)用目標(biāo)資源。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前題目:【servelt原理-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article0/jjdio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、小程序開發(fā)、商城網(wǎng)站、網(wǎng)站建設(shè)、定制開發(fā)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容