Filter:过滤器 ,用来过滤网站的数据
- 处理中文乱码
- 登录验证….
游览器访问服务器,服务器应该调用Servlet,JSP,html…
其中会产生一写乱码问题,那么在服务器和方法之间加一个过滤器,来处理这些问题
Filter开发步骤:
- 导包
实现Filter接口,重写对应的方法即可,导包是servlet包下的Filter
- 编写过滤器
```java
public class CharacterEncodingFilter implements Filter {
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
@Override
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");
// chain:链,调用自己的doFilter方法,传入request, response
/*
1.过滤中的所有代码,再过滤特定请求的时候都会执行
2.必须让过滤器继续同行:
chain.doFilter(request, response);
3.也需要配置xml文件,和servlet一样的配置
*/
System.out.println("CharacterEncodingFilter执行前");
chain.doFilter(request, response);//让请求继续走.如果不写,程序到这里就不会执行了
System.out.println("CharacterEncodingFilter执行后");
}
//销毁
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter已销毁");
}
}
4. 在web.xml中配置 Filter
```javascript
<!-- 配置filter文件-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>co.Devin.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--最好不要直接写/*,这样会让所有项目都走过滤器
<url-pattern>/*</url-pattern>-->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>