过滤器(Filter)
过滤器(Filter)
Filter:用来过滤网站的数据
filter的用法和servlet基本一样
作用:
- 处理中文乱码
- 登录验证等等
- 有了过滤器,我们就不需要在每个servlet中设置字符集编码,这个就提高了开发效率
思路如图:
开发步骤:
- 导包
junit
junit
4.11
test
javax.servlet
servlet-api
2.5
javax.servlet.jsp
jsp-api
2.1
- 编写过滤器(实现Filter接口,重写对应的方法)
public class CharacterEncodingFilter implements Filter {
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化了");
}
/*
1.过滤中的所有代码,再过滤特定请求的时候都会执行
2.必须要让过滤器继续前进
filterChain.doFilter(servletRequest,servletResponse);
*/
@Override
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");
System.out.println("CharacterEncodingFilter执行前");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("CharacterEncodingFilter执行后");
}
//销毁
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter初始化了");
}
}
重点:一定要写filterChain.doFilter(servletRequest,servletResponse);这样才可以让过滤器继续前进
- 在web.xml中配置
ShowServlet
com.kuang.servlet.ShowServlet
ShowServlet
/servlet/show
CharacterEncodingFilter
com.kuang.filter.CharacterEncodingFilter
CharacterEncodingFilter
/servlet/*
这样改过滤的servlet就得到了过滤。
注意:这里的