目錄
攔截器Interceptor
過濾器Filter
關于過濾器的前置知識可以參考:
過濾器在springboot項目的應用
一,使用@Webfilter+@ServletComponentScan 注解
1 創建過濾器類實現Filter接口
2 在啟動類中添加?@ServletComponentScan 注解
二,創建過濾器配置類,注冊過濾器
1 創建過濾器類(不添加WebFilter注解)
2創建配置類, 注冊過濾器類
攔截器Interceptor
可以參考?springmvc-攔截器-CSDN博客
過濾器Filter
關于過濾器的前置知識可以參考:
javaWeb之過濾器(Filter)_javaweb中filter過濾器對象什么時候創建?-CSDN博客
過濾器在springboot項目的應用
一,使用@Webfilter+@ServletComponentScan 注解
1 創建過濾器類實現Filter接口
- 指定過濾器順序(補充)。若存在多個過濾器且執行順序重要,可使用@Order注解指定順序。數字越小優先級越高。如@Order(1) 。
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;import java.io.IOException;
@WebFilter("/user/*")
public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否滿足條件");System.out.println("如滿足條件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在銷毀~~~~~~");}
}
2 在啟動類中添加?@ServletComponentScan 注解
- 掃描WebFilter注解,讓該注解生效
package com.it.heima.springboot06filter;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication
@ServletComponentScan("com.it.heima.springboot06filter.filter")
public class Springboot06FilterApplication {public static void main(String[] args) {SpringApplication.run(Springboot06FilterApplication.class, args);}}
測試結果
package com.it.heima.springboot06filter.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("user")
public class UserController {@RequestMapping("test")public String test(){System.out.println("正在執行test方法");return "test";}
}
二,創建過濾器配置類,注冊過濾器
1 創建過濾器類(不添加WebFilter注解)
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;import java.io.IOException;public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否滿足條件");System.out.println("如滿足條件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在銷毀~~~~~~");}
}
2創建配置類, 注冊過濾器類
package com.it.heima.springboot06filter.config;import com.it.heima.springboot06filter.filter.UserFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class FilterConfig implements WebMvcConfigurer {@Beanpublic FilterRegistrationBean filterRegistrationBean(){// 創建過濾器注冊對象FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();// 把過濾器注入到過濾器注冊對象中filterRegistrationBean.setFilter(new UserFilter());// 設置過濾器攔截的請求filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;}
}
測試結果