Filter過濾器
Filter:過濾器,用來過濾網站的數據。
- 自動登錄
- 統一設置編碼格式
- 訪問權限控制
- 敏感字符過濾等
過濾器實際上就是對web資源進行攔截,做一些處理後再交給下一個過濾器或servlet處理
通常都是用來攔截request進行處理的,也可以對返回的response進行攔截處理。
Filter開發步驟:
-
導包
-
編寫過濾器
- 導包不要錯
- 實現Filter接口,重寫對應的方法即可
- 導包不要錯
public class CharacterEncodingFilter implements Filter {
//初始化:web服務器啓動,就以及初始化了,隨時等待過濾對象出現!
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
//Chain : 鏈
/*
1. 過濾中的所有代碼,在過濾特定請求的時候都會執行
2. 必須要讓過濾器繼續同行
chain.doFilter(request,response);
*/
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=utf-8");
filterChain.doFilter(servletRequest,servletResponse);//讓我們的請求繼續走,如果不寫,程序到這裏就被攔截停止!
}
//銷燬:web服務器關閉的時候,過濾會銷燬
public void destroy() {
System.out.println("CharacterEncodingFilter銷燬");
}
}
- 在web.xml中配置 Filter
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.zh.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--只要是 /servlet的任何請求,會經過這個過濾器-->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
寫個servlet顯示中文字符
沒有經過過濾器訪問時
通過過濾器後