springboot _配置过滤器、拦截器、使用原生servlet
配置過濾器、攔截器、使用原生servlet
過濾器和攔截器的根本區(qū)別
過濾器是servlet規(guī)范規(guī)定的,只能用于web程序中,而攔截器是在spring容器中,它不依賴servlet容器。
攔截器屬于Spring中的概念,可以在攔截器中使用任何Spring中的Bean信息,而過濾器不屬于Spring中的概念點,所以過濾器不行.
過濾器可以攔截幾乎所有的請求(包含對靜態(tài)資源的請求),而攔截器只攔截Spring中的請求處理器(不攔截靜態(tài)資源請求)
不管是過濾器還是攔截器都是AOP編程思想的體現(xiàn)。
過濾器的執(zhí)行順序在攔截器之前
過濾器開發(fā):
@Bean
public FilterRegistrationBean filterRegistrationBean(){
????FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
????filterRegistrationBean.setFilter(new RestWebFilter());
????filterRegistrationBean.setName("RestWebFilter1");
????filterRegistrationBean.addUrlPatterns("/*");
????filterRegistrationBean.setOrder(1);
????return filterRegistrationBean;
??}
攔截器開發(fā):
?
if(handler instanceof HandlerMethod) {
????????HandlerMethod h = (HandlerMethod)handler;
????????System.out.println("用戶想執(zhí)行的操作是:"+h.getMethod().getName());
????????//判斷后執(zhí)行操作...
????}
?
@Configuration
public class InterceptorConfig implements WebMvcConfigurer?{
??@Override
??public void addInterceptors(InterceptorRegistry?registry) {
????registry.addInterceptor(new LogInterceptor()).addPathPatterns("/*");
??}
}
Servlet開發(fā):
// 在主類采用bean方法注冊
@Bean
public ServletRegistrationBean getServlet1(){
return new ServletRegistrationBean(new MyServlet(),"/url");
}
總結(jié)
以上是生活随笔為你收集整理的springboot _配置过滤器、拦截器、使用原生servlet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 还在发愁linux命令记不住吗?神器来了
- 下一篇: springboot _全局异常@Res