ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Springboot 过滤器和拦截器

2022-03-10 01:34:37  阅读:193  来源: 互联网

标签:拦截器 Springboot System println import 过滤器 注解 public


过滤器和拦截器

过滤器(Filter)

过滤器是对数据进行过滤和预处理。开发人员可以对客户端提交的数据进行过滤处理,也可以对服务器返回的数据进行处理。

比如验证用户的登录情况,权限验证,对静态资源进行访问权限控制等...

过滤器使用的两种方式

注解配置

  • 定义一个JwtFilter 实现Filter接口。重写里面的三个方法。(按Ctrl+I 一键重写)

    package com.smile.blog.filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    @WebFilter(filterName = "jwtFilter",urlPatterns = "/*")
    public class jwtFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            //jwt 过滤器开启
            System.out.println("jwt 过滤器开始");
    
            Filter.super.init(filterConfig);
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("开始验证 ...");
    
            filterChain.doFilter(servletRequest,servletResponse);
    
            System.out.println("验证结束 ....");
        }
    
        @Override
        public void destroy() {
            //jwt过滤器结束
            System.out.println("jwt 过滤器结束");
    
            Filter.super.destroy();
        }
    }
    

    解释说明:

    1. @WebFilter注解,用于将类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值)

      dnof8a5zf5c00000

    2. @Order注解,用于定义组件的加载顺序,值越小,加载的优先级越高

    3. init()方法只会执行一次,初始化过滤器

    4. destory()只会在项目停止或项目重新部署执行

    5. doFilter()核心方法,配置过滤器的逻辑代码

      @Override
      public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
          //预处理
          System.out.println("开始验证 ...");
          
          filterChain.doFilter(servletRequest,servletResponse);
          
          //后处理(处理servletResponse)
          System.out.println("验证结束 ....");
      }
      

      对每个请求及响应增加额外的预处理和后处理逻辑。执行该方法之前,即对用户请求进行预处理,执行该方法后,即对服务器进行后处理。

  • 在Application上添加注解@ServletComponentScan

    解释说明:@ServletComponentScan注解后,Servlet,Filter,Listener可以直接通过@WebServlet,@WebFilter,@WebListener注解自动注册

    package com.smile.blog;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    
    @SpringBootApplication
    @ServletComponentScan
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    
  • 结果验证

    image-20220310004752730

java配置

  • 定义java

标签:拦截器,Springboot,System,println,import,过滤器,注解,public
来源: https://www.cnblogs.com/ywjcqq/p/15987822.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有