过滤器

作者: 某某宝 | 来源:发表于2019-06-11 08:34 被阅读0次

1、介绍
1)、Filter
Filter 即为过滤,用于在 Servlet 之外对 Request 或者 Response 进行修改。 它主要用于对用户请求进行预处理,也可以对 HttpServletResponse 进行后处理。
2)、使用 Filter 的完整流程
Filter 对用户请求进行预处理,接着将请求交给 Servlet 进行处理并生成响应,最后 Filter 再 对服务器响应进行后处理。
3)、 Filter 链
在一个 web 应 用中,可以开发编写多个 Filter,这些 Filter 组合 起来称之为一个 Filter 链。
若是一个过滤器链:先配置先执行(请求时的执行顺序);响应时: 以相反的 顺序执行。
4)、原理

clipboard.png
在 HttpServletRequest 到达 Servlet 之前,拦截客户的 HttpServletRequest 。 根据需要检查 HttpServletRequest,也可以修改 HttpServletRequest 头和数据。
在 HttpServletResponse 到达客户端之前,拦截 HttpServletResponse。根据 需要检查 HttpServletResponse,也可以修改 HttpServletResponse 头和数据。

2、实现
我们可以通过实现一个叫做 javax.servlet.Fileter 的接口来实现一个过滤器, 其中定义了 三个方法,init(), doFilter(), destroy()分别在相应的时机执行。后期观 察生命周期。 Filter 的实现只需要两步:
Step1: 编写 java 类实现 Filter 接口,并实现其 doFilter 方法。
Step2: 在 web.xml 文件中对编写的 filter 类进行注册,并设置它所能拦截 的资源。

public class Filter01 implements Filter {
    /**
     * 初始化方法,只执行一次
     * 服务器启动即初始化
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub      
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("拦截处理");
        //放行
        chain.doFilter(request, response);
        System.out.println("拦截结束");
    }
    /**
     * 销毁方法
     */
    @Override
    public void destroy() {
        // TODO Auto-generated method stub      
    }   
}
  <filter>
    <filter-name>filter01</filter-name>
    <filter-class>com.czb.filter.Filter01</filter-class>  
  </filter>
  <filter-mapping>
    <filter-name>filter01</filter-name>
    <url-pattern>/download</url-pattern><!-- 需要拦截的路径,也可以同时配置多个,通常设置为 /*  -->
  </filter-mapping>

3、非法访问拦截
静态资源 css、js、images等 (statics目录下的资源,都放行)
放行指定页面 login登录 (不需要登录即可访问的页面,都要放行)
放行执行操作 登录操作 (不需要登录即可执行的操作,都放行,登录、注册等)
登录状态 放行 (登录成功后将用户信息存到session域对象中,如果域对象中的值不为空,则为登录状态;否则,为非登录状态)

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        // 得到当前的路径
        String url = request.getRequestURI();
        System.out.println(url);

        // 1、静态资源 css、js、images等 (statics目录下的资源,都放行)
        if (url.contains("/statics")) {
            // 放行
            chain.doFilter(request, response);
            return;
        }
        //2登录页面
        if (url.contains("LoginAjax.html")) {
            chain.doFilter(request, response);
            return;
        }
        // 3、放行执行操作 登录操作 (不需要登录即可执行的操作,都放行,登录、注册等)
        // 得到用户行为
        String actionName = request.getParameter("actionName");
        if (url.contains("/servlet01")) { // 确认模块
            // 确认用户行为
            // if ("form".equals(actionName)) {
            // 放行
            chain.doFilter(request, response);
            return;
            // }
        }
        // 4、登录状态 放行 (登录成功后将用户信息存到session域对象中,如果域对象中的值不为空,则为登录状态;否则,为非登录状态)
        // 获取session域对象的值
        User user = (User) request.getSession().getAttribute("user");
        if (user != null) {
            // 放行
            chain.doFilter(request, response);
            return;
        }
        
        response.sendRedirect("LoginAjax.html");
        return;
    }

相关文章

  • VUE过滤器和计算属性

    过滤器主要分为全局过滤器和局部过滤器。 全局过滤器如下: 局部过滤器如下: 计算属性如下: 过滤器中获取日期: 计...

  • 自定义过滤器的封装

    封装自定义过滤器 引入过滤器 添加+注册过滤器 使用过滤器

  • vue的过滤器及计算属性

    1,过滤器:让要显示在页面上的内容进行重新筛选2,过滤器分为全局过滤器和局部过滤器全局过滤器: 局部过滤器: 3,...

  • 2018-09-18 vue初学六(过滤器:filter(fil

    1.1过滤器 过滤器分为两种:1、全局过滤器:filter2、局部过滤器:filters 1.2过滤器 (当前时间...

  • 过滤器

    ...过滤器分为全局过滤器和局部过滤器全局过滤器的格式:html:{{数据,全局过滤器的名字}}//解析数据js:...

  • 六、过滤器的使用 ------ 2020-05-07

    1、过滤器的作用: 2、全局过滤器 3、局部过滤器 4、过滤器的使用

  • 过滤器和计算属性

    1、过滤器 过滤器指让要显示在页面上的内容进行重新筛选。 过滤器分为两种:全局过滤器、局部过滤器。 2、全局过滤器...

  • Vue的节点

    过滤器Filters 过滤器函数,必须定义在filters节点之下,过滤器本质是函数 分为私有过滤器和全局过滤器 ...

  • Vue进阶(1)

    一.过滤器 过滤器分为局部过滤器和全局过滤器 1.局部过滤器 格式 2.全局过滤器 格式 练习 1.当数字为小于1...

  • 不锈钢锥形过滤器@管道锥形过滤器@冲孔进水口过滤器

    不锈钢锥形过滤器@管道锥形过滤器@冲孔进水口过滤器 产品介绍:临时过滤器又称锥型过滤器,属于管道粗过滤器系列最简单...

网友评论

      本文标题:过滤器

      本文链接:https://www.haomeiwen.com/subject/gptffctx.html