过滤器

过滤器

标签(空格分隔): java web


过滤器

先举个例子

@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 。。。

posted @ 2018-04-01 16:48  伊吹斯特  阅读(103)  评论(0编辑  收藏  举报