一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - spring boot的攔截器簡單使用示例代碼

spring boot的攔截器簡單使用示例代碼

2020-09-17 15:11牛頭人 Java教程

這篇文章主要介紹了spring boot的攔截器簡單使用實例代碼,需要的的朋友參考下吧

1.spring boot攔截器默認有:

HandlerInterceptorAdapter
AbstractHandlerMapping
UserRoleAuthorizationInterceptor
LocaleChangeInterceptor
ThemeChangeInterceptor 

其中 LocaleChangeInterceptor 和 ThemeChangeInterceptor 比較常用。

2.實現自定義攔截器只需要3步:

1)、創建我們自己的攔截器類并實現 HandlerInterceptor 接口。

2)、創建一個Java類繼承WebMvcConfigurerAdapter,并重寫 addInterceptors 方法。

3)、實例化我們自定義的攔截器,然后將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)。

3.代碼示例

IndexInterceptor.java類代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor implements HandlerInterceptor{
  @Override
  public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor>>>>>>>在整個請求結束之后被調用,也就是在DispatcherServlet 渲染了對應的視圖之后執行(主要是用于進行資源清理工作)");
  }
  @Override
  public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor>>>>>>>請求處理之后進行調用,但是在視圖被渲染之前(Controller方法調用之后)");
  }
  @Override
  public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
     System.out.println(">>>IndexInterceptor>>>>>>>在請求處理之前進行調用(Controller方法調用之前)");
     // 只有返回true才會繼續向下執行,返回false取消當前請求
     return true;
  }
}

IndexInterceptor2.java類代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor2 implements HandlerInterceptor{
  @Override
  public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor2>>>>>>>在整個請求結束之后被調用,也就是在DispatcherServlet 渲染了對應的視圖之后執行(主要是用于進行資源清理工作)");
  }
  @Override
  public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor2>>>>>>>請求處理之后進行調用,但是在視圖被渲染之前(Controller方法調用之后)");
  }
  @Override
  public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
     System.out.println(">>>IndexInterceptor2>>>>>>>在請求處理之前進行調用(Controller方法調用之前)");
     // 只有返回true才會繼續向下執行,返回false取消當前請求
     return false;
  }
}

SimpleWebAppConfigurer.java類代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.interceptor.IndexInterceptor;
import com.example.interceptor.IndexInterceptor2;
//只要能被springboot掃描到即可
@Configuration
public class SimpleWebAppConfigurer extends WebMvcConfigurerAdapter{
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    // 多個攔截器組成一個攔截器鏈
    // addPathPatterns 用于添加攔截規則
    // excludePathPatterns 用戶排除攔截
    registry.addInterceptor(new IndexInterceptor()).addPathPatterns("/**");
    registry.addInterceptor(new IndexInterceptor2()).addPathPatterns("/**");
    super.addInterceptors(registry);
  }
}

4.攔截器解析說明

preHandle**:預處理回調方法,實現處理器的預處理(如登錄檢查),第三個參數為響應的處理器(如我們上一章的Controller實現);

返回值:true表示繼續流程(如調用下一個攔截器或處理器);

false表示流程中斷(如登錄檢查失敗),不會繼續調用其他的攔截器或處理器,此時我們需要通過response來產生響應;

postHandle**:后處理回調方法,實現處理器的后處理(但在渲染視圖之前),此時我們可以通過modelAndView(模型和視圖對象)對模型數據進行處理或對視圖進行處理,modelAndView也可能為null。

afterCompletion**:整個請求處理完畢回調方法,即在視圖渲染完畢時回調,如性能監控中我們可以在此記錄結束時間并輸出消耗時間,還可以進行一些資源清理,類似于try-catch-finally中的finally,但僅調用處理器執行鏈中preHandle返回true的攔截器的afterCompletion**。

以上所述是小編給大家介紹的spring boot的攔截器簡單使用淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/web424/p/6755968.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: julia ann多人乱战 | 特a级片| 99久久精品国产免费 | 欧美老人与小伙子性生交 | 欧美亚洲综合另类 | 欧美国产日产精品免费视频 | 男女刺激高清视频在线观看 | 超级乱淫伦短篇小说做车 | 国产成人综合网 | 亚洲黄色三级视频 | 美人的淫事[纯hh] | coolgay男男gayxxx chinese壮直男gay老年人 chinese野外gay军人 | 顶级尤物极品女神福利视频 | 短篇小说肉 | 四虎永久在线精品免费影视 | 把老师操了 | 女子监狱第二季未删减在线看 | 欧美日韩成人在线 | 国产精品原创永久在线观看 | 91在线永久| 欧美精品久久久久久久影视 | 亚洲国产欧美在线人成aaa | 白发在线视频播放观看免费 | tobu8中国在线播放免费 | 日本xxxx69hd| 国产高清在线精品一区二区 | 亚洲精品久久玖玖玖玖 | chinesemature精品| 手机在线观看国产精选免费 | 成人免费观看www视频 | 日韩人成免费网站大片 | 成人123 | 美国一级大黄大色毛片 | 亚洲国产欧美在线看片 | 91香蕉视频在线 | 国产成人精品高清在线观看99 | 日本公乱妇视频 | 亚洲精品黄色 | 欧美一级高清免费a | 亚洲国产精品福利片在线观看 | 日韩在线视频免费观看 |