過濾器是處于客戶端與服務器資源之前的一道過濾技術
1.過濾器作用
過濾器執(zhí)行在Servlet之前,客戶端發(fā)送請求時,會先經過過濾器Filter,在到達目標Servlet當中。從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。
2.編寫過濾器
攔截器代碼
@WebFilter("/tage") //設置攔截的目標,也及時該目標的訪問地址
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í)行到攔截的servlet當中去
chain.doFilter(request, response);
//執(zhí)行完畢返回
System.out.println("執(zhí)行完畢返回");
}
//效果方法
@Override
public void destroy() {// TODO Auto-generated method stub
}
}
目標代碼
@WebServlet("/tage")
public class TageServlet extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("我是目標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); //讓目標資源執(zhí)行,放行
}
@Override
public void destroy() {// TODO Auto-generated method stub
}
}
xml當中的配置
myFilter com.qcby.MyFilter myFilter /*
4.關于攔截路徑
攔截器的攔截路徑通常有三種方式
精確匹配攔截:比如/index.jsp /tage
后置匹配攔截:比如*.html *.jsp
通配符攔截匹配/* 表示攔截所有。注意過濾器不能使用 / 匹配
5.過濾器鏈和優(yōu)先級
客戶端對服務器請求后,服務器在調用Servlet之前會調用一組過濾器(多個過濾器),那么這組過濾器就稱為一組過濾鏈。
每個過濾器都有特定的功能,當一個過濾器的doFilter()方法被被調用后,Web服務器會創(chuàng)建一個代表Filter鏈的FilterChain對象傳遞該方法。在doFilter方法中,開發(fā)人員如果調用了FilterChain對象的doFilter()方法,則Web服務器會檢查FilterChain對象中是否還有filter,如果有,則調用第2個filter,如果沒有,則調用目標資源。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧