Servlet过滤器就是可以通过配置,对需要进行特殊处理的请求进行过滤操作,类似于水龙头上的滤网,开发中可以用于编码过滤、请求头配置等等.从字面上的字意理解为经过一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。
过滤器是以一种组件的形式绑定到WEB应用程序当中的,与其他的WEB应用程序组件不同的是,过滤器是采用了“链”的方式进行处理。
要编写一个过滤器必须实现Filter接口。实现其接口规定的方法。
1 实现javax.servlet.Filter接口
2 实现init方法,读取过滤器的初始化参数
3 实现doFilter方法,完成对请求或响应的过滤
4 调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应
例子: 页面访问权限控制过滤器
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//获取用户的登录标识
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
HttpSession session = request.getSession();
Object object = session.getAttribute("user");
//判断用户登陆状态为空则是未登录
if(object == null){
response.sendRedirect("/login.jsp"); //跳转到登陆页面
} else{
//否则就放行
filterChain.doFilter(servletRequest,servletResponse);
}
}