欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot配置攔截器的示例

 更新時(shí)間:2020年11月07日 11:24:14   作者:DayRain  
這篇文章主要介紹了SpringBoot配置攔截器的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

在SpringBoot中配置攔截器,主要有下面兩個(gè)步驟:

1、繼承接口 HandlerInterceptor,根據(jù)需要重寫其中的三個(gè)類。

2、在配置類中注入該類。

public class MyInterceptor implements HandlerInterceptor {

  //controller執(zhí)行之前
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    System.out.println("preHandler......");
    return true;
  }

  //執(zhí)行完controller執(zhí)行之后、視圖渲染前調(diào)用,可以在該方法里獲取或者修改model
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    System.out.println("postHandler......");
  }

  //一般用于清理資源
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    System.out.println("afterCompletion......");
  }
}
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    //1、全部攔截
//    registry.addInterceptor(myInterceptor()).addPathPatterns("/**");
    //2、攔截指定路徑
    registry.addInterceptor(myInterceptor()).addPathPatterns("/hello");
  }

  @Bean
  MyInterceptor myInterceptor(){
    return new MyInterceptor();
  }

}

寫個(gè)controller測試一下

@RestController
public class HelloController {

  @RequestMapping("/hello")
  public String hello(){
    System.out.println("hello");
    return "hello";
  }

  @RequestMapping("/world")
  public String world(){
    System.out.println("world");
    return "world";
  }
}

測試結(jié)果:

preHandler......
hello
postHandler......
afterCompletion......
world

SpringBoot中還有一終攔截器,WebRequestInterceptor

public class MyWebRequestInterceptor implements WebRequestInterceptor {
  @Override
  public void preHandle(WebRequest webRequest) throws Exception {

  }

  @Override
  public void postHandle(WebRequest webRequest, ModelMap modelMap) throws Exception {

  }

  @Override
  public void afterCompletion(WebRequest webRequest, Exception e) throws Exception {

  }
}

和HandlerInterceptor比較相似,但是可以發(fā)現(xiàn),該攔截器的preHandler返回值為空,說明該方法并不影響后面方法的執(zhí)行。那么這個(gè)攔截器存在的目的是什么吶?

點(diǎn)進(jìn)WebRequest:

public interface WebRequest extends RequestAttributes {
  @Nullable
  String getHeader(String var1);

  @Nullable
  String[] getHeaderValues(String var1);

  Iterator<String> getHeaderNames();

  @Nullable
  String getParameter(String var1);

  @Nullable
  String[] getParameterValues(String var1);

  Iterator<String> getParameterNames();

  Map<String, String[]> getParameterMap();

  Locale getLocale();

  String getContextPath();

  @Nullable
  String getRemoteUser();

  @Nullable
  Principal getUserPrincipal();

  boolean isUserInRole(String var1);

  boolean isSecure();

發(fā)現(xiàn)對(duì)reques請(qǐng)求中參數(shù)做了進(jìn)一步處理(@Nullable表示可以為空),更加的方便調(diào)用。所以兩個(gè)攔截器的側(cè)重點(diǎn)不同,HandlerInterceptor功能較為強(qiáng)大,可以攔截請(qǐng)求,可以實(shí)現(xiàn)WebRequestInterceptor的所有功能,只是要寫的邏輯代碼要多一點(diǎn)。更而WebRequestInterceptor傾向于簡化獲取request參數(shù)的過程以及預(yù)設(shè)參數(shù)供后面的流程使用。

以上就是SpringBoot配置攔截器的示例的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot配置攔截器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Jenkins配置jdk、maven、git方式

    Jenkins配置jdk、maven、git方式

    為了在Jenkins中使用Java、Maven和Git,需要在系統(tǒng)管理的全局工具配置中設(shè)置這些工具,首先,確保Jenkins主機(jī)已經(jīng)安裝了JDK、Git、Maven以及Maven的settings文件,安裝完成后,按照提示配置各個(gè)工具
    2023-04-04
  • 關(guān)于Struts2文件上傳與自定義攔截器

    關(guān)于Struts2文件上傳與自定義攔截器

    本篇文章,小編將為大家介紹關(guān)于Struts2文件上傳與自定義攔截器,有需要的朋友可以參考一下
    2013-04-04
  • SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法

    SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法

    這篇文章主要介紹了SpringBoot執(zhí)行定時(shí)任務(wù)@Scheduled的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    這篇文章主要介紹了Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮,定義GzipFilter對(duì)輸出進(jìn)行攔截,定義 Controller該 Controller 非常簡單,主要讀取一個(gè)大文本文件,作為輸出的內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Java中線程安全有哪些實(shí)現(xiàn)思路

    Java中線程安全有哪些實(shí)現(xiàn)思路

    在 Java 多線程編程中,線程安全是一個(gè)非常重要的概念,本文主要介紹了Java中線程安全有哪些實(shí)現(xiàn)思路,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2023-05-05
  • java使用DOM對(duì)XML文檔進(jìn)行增刪改查操作實(shí)例代碼

    java使用DOM對(duì)XML文檔進(jìn)行增刪改查操作實(shí)例代碼

    這篇文章主要介紹了java使用DOM對(duì)XML文檔進(jìn)行增刪改查操作實(shí)例代碼,實(shí)例涉及對(duì)xml文檔的增刪改查,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • hibernate增刪改查操作代碼

    hibernate增刪改查操作代碼

    這篇文章主要介紹了hibernate增刪改查操作代碼,需要的朋友可以參考下
    2017-09-09
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之線上水果超市商城的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之線上水果超市商城的實(shí)現(xiàn)

    這是一個(gè)使用了java+SSM+springboot+redis開發(fā)的網(wǎng)上水果超市商城,是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有水果超市商城該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • Tomcat和Spring中的事件機(jī)制深入講解

    Tomcat和Spring中的事件機(jī)制深入講解

    這篇文章主要給大家介紹了關(guān)于Tomcat和Spring中事件機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-12-12
  • java servlet結(jié)合Oracle搭建java的web開發(fā)環(huán)境

    java servlet結(jié)合Oracle搭建java的web開發(fā)環(huán)境

    今天我將與大家分享一下我學(xué)JAVA WEB寫的一些小實(shí)例 ,我個(gè)人是不太喜歡書本上的晦澀的概念的,所以我花了更多的時(shí)間在一些應(yīng)用實(shí)例上,我覺得這樣的學(xué)習(xí)方式很適合我,由簡到繁,由淺入深
    2015-12-12

最新評(píng)論