国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot中使用Filter和Interceptor的示例代碼

SpringBoot中使用Filter和Interceptor的示例代碼

2019-07-04 16:56克里斯朵夫李維 Java教程

這篇文章主要介紹了SpringBoot中使用Filter和Interceptor的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、Filter(過濾器)

Filter接口定義在javax.servlet包中,是Servlet規(guī)范定義的,作用于Request/Response前后,被Servlet容器調(diào)用,當Filter被Sring管理后可以使用Spring容器資源。

實現(xiàn)一個Filter

自定義的過濾器需要實現(xiàn)javax.servlet.Filter,F(xiàn)ilter接口中有三個方法:

  • init(FilterConfig filterConfig):過濾器初始化的被調(diào)用。
  • doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain):在doFilter()方法中,chain.doFilter()前的一般是對request執(zhí)行的過濾操作,chain.doFilter后面的代碼一般是對response執(zhí)行的操作,chain.doFiter()執(zhí)行下一個過濾器或者業(yè)務(wù)處理器。
  • destory():過濾器銷毀的時候被調(diào)用。

在Spring容器中使用過濾器

通過FilterRegistrationBean

01@Configuration
02 public class WebConfig{
03  @Bean
04  public FilterRegistrationBean xxxFilter() {
05    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
06    registrationBean.setFilter(new xxxFilter());
07    registrationBean.setUrlPatterns(Arrays.asList("/*"));
08    registrationBean.setOrder(1); // 過濾器的優(yōu)先級
09    return registrationBean;
10  }
11

通過@WebFilter和@ServletComponentScan

通過@WebFilter的方式定義Filter,默認使用Filter的類名設(shè)置優(yōu)先級。使用FilterRegistrationBean可以指定優(yōu)先級。Filter使用白名單過濾Url的方式,配置需要攔截的Url,如果想設(shè)置不過濾某些Url需要在doFilter方法中指定。

二、Interceptor(攔截器)

定義一個Interceptor需要實現(xiàn)org.springframework.web.servlet.HandlerInterceptor接口,Interceptor是Spring容器定義的,它可以使用Spring容器的任何資源,只要通過IoC注入到Interceptor即可,Interceptor可以深入到業(yè)務(wù)處理方法的執(zhí)行前后和拋出異常的時候,而Filerter無法做到這一點,所以Interceptor相比Filter具有更大的彈性。

實現(xiàn)一個Interceptor

實現(xiàn)HandlerInterceptor或者繼承HandlerInterceptorAdapter

01public interface HandlerInterceptor {
02  default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
03    return true;
04  }
05 
06  default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
07  }
08 
09  default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
10  }
11}
  • preHandle:在業(yè)務(wù)處理器處理請求之前被調(diào)用。
  • postHandle:在業(yè)務(wù)處理器處理請求后并生成視圖前被調(diào)用,此時有機會修改ModelAndView。
  • afterCompletion:業(yè)務(wù)處理處理器處理完請求后(已經(jīng)渲染視圖)被執(zhí)行,并可以處理業(yè)務(wù)方法發(fā)生異常的場景。

在Spring容器中使用攔截器

01@Configuration
02public class WebConfig implements WebMvcConfigurer {
03 
04  @Override
05  public void addInterceptors(InterceptorRegistry registry) {
06    InterceptorRegistration registration = registry.addInterceptor(new TimeInterceptor());
07    registration.excludePathPatterns("/user");
08    registration.excludePathPatterns("/*");
09  }
10

Interceptor既可以指定要過濾的Url也可以指定不攔截的Url,缺省情況攔截所有Url。

三、調(diào)用順序

SpringBoot中使用Filter和Interceptor的示例代碼

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
387
主站蜘蛛池模板: 日本在线视频免费观看 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品第52页 | av一二三区| 亚洲精品日韩精品 | 小视频在线 | 男女涩涩 | 福利片在线| 蜜臀精品久久久久久蜜臀 | 午夜国产在线 | 日韩精品一区二区三区 | 欧美 亚洲 一区 | 欧美成人免费在线 | 黄色电影在线免费观看 | 欧美日韩免费在线 | 精品久 | 日韩在线国产 | 午夜免费福利视频 | 国产精品美女久久久久aⅴ国产馆 | 欧美日韩精品一区二区三区蜜桃 | 人人干日日操 | 欧美日本精品 | 中国电影黄色一级片免费观看 | 亚洲精品视频专区 | 可以免费看黄色的网站 | 国产剧情一区二区 | 精品久久久久久久久久 | 一级a毛片 | 激情欧美日韩一区二区 | 亚洲精品一区二区三区在线观看 | 99久久久 | 国产一区二区三区四区五区密私 | 激情综合色综合久久综合 | 国产偷亚洲偷欧美偷精品 | 日韩电影中文字幕 | 精品成人久久 | 深夜在线 | 视频在线一区二区三区 | 成人小视频在线观看 | 九九热精品在线 | 中文字幕在线播放一区 |