SpringBoot2.1.X 自定义Filter

红太狼 2024-04-18 22:29 183阅读 0赞

自定义Filter

  1. 1)使用Servlet3.0的注解进行配置
  2. 2)启动类里面增加 @ServletComponentScan,进行扫描
  3. 3)新建一个Filter类,implements Filter,并实现对应的接口
  4. 4) @WebFilter 标记一个类为filter,被spring进行扫描 urlPatterns:拦截规则,支持正则
  5. 5)控制chain.doFilter的方法的调用,来实现是否通过放行不放行,web应用
  6. resp.sendRedirect("/index.html");
  7. 场景:权限控制、用户登录(非前端后端分离场景)等

1.MyFilter过滤类: (添加@WebFilter注解哦!)

  1. /**
  2. * 注解
  3. */
  4. @WebFilter(urlPatterns = "/your/*",filterName = "LoginFilter")
  5. public class LoginFilter implements Filter {
  6. /**
  7. * 容器加载的时候调用
  8. * @param filterConfig
  9. * @throws ServletException
  10. */
  11. @Override
  12. public void init(FilterConfig filterConfig) throws ServletException {
  13. System.out.println("LoginFilter init!");
  14. }
  15. //请求被拦截的时候进行调用
  16. @Override
  17. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  18. System.out.println(" loginFilter doFilter");
  19. //转换成协议对象
  20. HttpServletRequest req = (HttpServletRequest) servletRequest;
  21. HttpServletResponse resp = (HttpServletResponse) servletResponse;
  22. //获得请求数据
  23. String username = req.getParameter("username");
  24. //判断相等,则放行
  25. if ("hlx".equals(username)) {
  26. filterChain.doFilter(servletRequest,servletResponse);
  27. } else {
  28. //不等时,跳转到页面
  29. resp.sendRedirect("/index.html");
  30. return;
  31. }
  32. }
  33. /**
  34. * 容器被销毁的时候被调用
  35. */
  36. public void destroy() {
  37. System.out.println("LoginFilter destroy!");
  38. }
  39. }

2、Controller类

  1. @RequestMapping(path = "/your/login1")
  2. public Object login1(){
  3. maps.put("id",100);
  4. return maps;
  5. }

3、在Application 启动类 添加 @ServletComponentScan 注解

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70

效果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 2

如果访问http://localhost:8089/your/login1,那么就会直接跳转到index.html页面哦

20190912180359529.png

发表评论

表情:
评论列表 (有 0 条评论,183人围观)

还没有评论,来说两句吧...

相关阅读

    相关 定义filter

    自定义过滤器只是带有一个或两个参数的Python函数: 变量(输入)的值 - -不一定是一个字符串 参数的值 - 这可以有一个默认值,或完全省略 例如,在过滤器