美文网首页
SpringBoot 使用Filter(过滤器)

SpringBoot 使用Filter(过滤器)

作者: 索性流年 | 来源:发表于2019-10-16 09:01 被阅读0次

基本概念:

  • Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对WEB服务器管理的所有WEB资源:例如JSP 、servlet、图片、进行过滤拦截,从而实现一些特殊功能,例如:访问权限级别的判断,敏感词。

问题:

  • 项目开发中经常会涉及到重复代码实现!如判断用户是否登录,之后登录才能有操作权限!这样每一个方法都要进行判断,太过冗余,希望将没有权限的请求过滤掉!

如何解决上面的问题:

  • 1.抽取重复代码,分装调用(手动调用方法)
  • 2.在请求到达之前,拦截请求进行判断,符合判断放行(过滤器)

过滤器执行流程:

  • 1.用户访问服务器。
  • 2.过滤器对Servlet请求进行拦截
  • 3.先进入过滤器,过滤器进行处理
  • 4.过滤器处理完成,符合放行,到达Servlet访问数据库
  • 5.Servlet处理完成,有Tomcat服务年相应用户请求操作。
    (过滤器就像门,只有有钥是的人才能进入这道门。)

开发步骤:

  • 1.写一个JAVA类实现Filter接口
  • 2.配置过滤器
package com.example.demo;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*过滤器开发*/
@WebFilter(filterName = "TestFilter", urlPatterns = { "/*" })
public class TestFilter implements Filter {
    public TestFilter() {
        System.err.println("创建过滤器实例");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.err.println("执行过滤器初始化方法");
    }

    @Override
    public void destroy() {
        System.err.println("销毁过滤器");
    }
//    在请求方法执行之前调用
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.err.println("执行过滤器业务处理方法");
        filterChain.doFilter(servletRequest,servletResponse);
        System.err.println("方法处理完成,回到过滤器");
    }
}

@SpringBootApplication
@ServletComponentScan //扫描过滤器
public class FilterImplementApplication {

    public static void main(String[] args) {
        SpringApplication.run(FilterImplementApplication.class, args);
    }
}

相关文章

网友评论

      本文标题:SpringBoot 使用Filter(过滤器)

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