过滤器

过滤器

先举个例子

@WebFilter(filterName = "firstFilter", value = {"/*"})
public class FirstFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

单个过滤器

就像例子中一样,单个过滤器的情况下,凡是在过滤器中拦截到的请求都先经过doFilter方法验证。在doFilter方法中先对请求做出相应的验证,然后判断当前请求是否合法,确定是否可以放行。如果合法,则允许通过,使用filterChain放行请求,然后等待服务器处理完请求后,在返回用户前,再次回到doFilter方法中放行后的位置,继续执行后续代码块,到doFilter方法结束,然后返回给用户。

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//-------------------------1.验证-----------------------
//验证操作等。。。
//------------------------------------------------------
//-------------------------2.放行-----------------------
    filterChain.doFilter(servletRequest,servletResponse);
//------------------------------------------------------
//-------------------------3.返回前处理-----------------
//服务器处理完后执行的部分
//------------------------------------------------------
}

可以将doFilter看做分三块执行

多过滤器

形成过滤链,先进入->过滤器1->验证->放行->过滤器2->验证->放行。。。-->服务器->。。。->过滤器2放行后代码块->过滤器1放行后代码块->返回用户

验证不通过

以上单过滤器和多过滤器都是在理想的,验证全部通过的情况下。而在未通过的情况下则需要作出其他的操作,类似重定向,跳转等

注意,在验证不通过的情况下跳转的时候必须消息,一旦跳转的路径仍然会被当前过滤器拦截,那么服务器就会进入一个死循环中

过滤器的应用

1 登录验证
2 字符集修改
3 。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容