狂神说 javaweb 24集:过滤器Filter
11、Filter (重点)
比如 Shiro安全框架技术就是用Filter来实现的
Filter:过滤器 ,用来过滤网站的数据;
-
-
登录验证….
(比如用来过滤网上骂人的话,我***我自己 0-0)
-
Filter开发步骤:
-
导包
-
编写过滤器
-
导包不要
错 (注意)
-
pom.xml
CharacterEcodingFilter.java
-
实现Filter接口,重写对应的方法即可
package com.study.filter;
import javax.servlet.*;
import java.io.IOException;
public class CharacterEcodingFilter implements Filter {
//初始化: web 服务器启动,就已经初始化了;随时等待过滤对象出现!
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEcodingFilterStart");
}
//chain: 链的意思
/*
1.过滤中的所有代码,在过滤特定请求的时候都会被执行
2.必须要让过滤器继续通行
chain.doFilter( request,response );
3.
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding( "utf-8" );
response.setCharacterEncoding( "utf-8" );
response.setContentType( "text/html;charset=utf-8" );
System.out.println("CharacterEcodingFilterStart");
chain.doFilter( request,response );//让我们的程序继续走,如果不写。程序到这里就会被拦截停止!
System.out.println("CharacterEcodingFilterEnd");
}
//销毁: web 服务器关闭的时候,过滤器被销毁
public void destroy() {
//通知垃圾回收站去回收东西
System.gc();
System.out.println("CharacterEcodingFilter销毁");
}
}
-
在web.xml中配置 Filter
<filter>
<filter-name>CharacterEcodingFilter</filter-name>
<filter-class>com.study.filter.CharacterEcodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEcodingFilter</filter-name>
<!--只要是/servlet的任何请求,会经过这个过滤器,都会被过滤-->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>