最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot如何添加攔截器

 更新時間:2017年04月08日 14:44:20   作者:Ryan.Miao  
本篇文章主要介紹了spring boot如何添加攔截器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

構建一個spring boot項目。

添加攔截器需要添加一個configuration

@Configuration
@ComponentScan(basePackageClasses = Application.class, useDefaultFilters = true)
public class ServletContextConfig extends WebMvcConfigurationSupport {

為了方便掃描位置,我們可以寫一個接口或者入口類Application放置于最外一層的包內,這樣就會掃描該類以及子包的類。

 1 resources配置

在沒有配置這個類的時候,我們可以在application.ym中修改靜態(tài)文件位置和匹配方式:

#指定環(huán)境配置文件
spring:
 profiles:
  active: dev
 # 修改默認靜態(tài)路徑,默認為/**,當配置hello.config.ServletContextConfig后此處配置失效
 mvc:
  static-path-pattern: /static/**

但當我們繼承了WebMvcConfigurationSupport 并配置掃描后,上述resources的配置失效,還原默認配置。那么我們需要在這個類中再次指定靜態(tài)資源位置:

@Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/").addResourceLocations("/**");
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
  }

這樣訪問classpath下的static包下的靜態(tài)資源的url匹配為/static/xxx.js。默認匹配static下的靜態(tài)文件url為/xxx.js,雖然清潔,但我感覺idea不會識別這種路徑,還是改成完整的路徑比較好。

2.Interceptor配置

配置登錄攔截或者別的。需要創(chuàng)建一個攔截器類來繼承HandlerInterceptorAdapter,然后只需要覆蓋你想要攔截的位置就可以了。比如,我只是攔截訪問方法之前:

package hello.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by miaorf on 2016/8/3.
 */
public class LoginInterceptor extends HandlerInterceptorAdapter {
  private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    String authorization = request.getHeader("Authorization");
    logger.info("The authorization is: {}",authorization);
    return super.preHandle(request, response, handler);
  }
}

寫好interceptor之后需要在開始創(chuàng)建的ServletContextConfig中添加這個攔截器:

@Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LoginInterceptor())
        .addPathPatterns("/**")
        .excludePathPatterns(FAVICON_URL)
    ;
  }

完整的ServletContextConfig為:

package hello.config;

import hello.Application;
import hello.interceptor.LoginInterceptor;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
 *
 */
@Configuration
@ComponentScan(basePackageClasses = Application.class, useDefaultFilters = true)
public class ServletContextConfig extends WebMvcConfigurationSupport {

  static final private String FAVICON_URL = "/favicon.ico";
  static final private String PROPERTY_APP_ENV = "application.environment";
  static final private String PROPERTY_DEFAULT_ENV = "dev";



  /**
   * 發(fā)現(xiàn)如果繼承了WebMvcConfigurationSupport,則在yml中配置的相關內容會失效。
   * @param registry
   */
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/").addResourceLocations("/**");
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
  }


  /**
   * 配置servlet處理
   */
  @Override
  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
  }

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LoginInterceptor())
        .addPathPatterns("/**")
        .excludePathPatterns(FAVICON_URL)
    ;
  }

}

github地址https://github.com/chenxing12/spring-boot-demo

本demo源碼:spring-boot-demo_jb51.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • MyBatis詳細執(zhí)行流程的全紀錄

    MyBatis詳細執(zhí)行流程的全紀錄

    這篇文章主要給大家介紹了關于MyBatis詳細執(zhí)行流程的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • SpringSecurity自定義AuthenticationProvider無法@Autowire的解決

    SpringSecurity自定義AuthenticationProvider無法@Autowire的解決

    這篇文章主要介紹了SpringSecurity自定義AuthenticationProvider無法@Autowire的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 深入淺出講解Java比較器及數學常用類

    深入淺出講解Java比較器及數學常用類

    這篇文章主要介紹了深入淺出講解Java比較器及數學常用類,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • application作用域實現(xiàn)用戶登錄擠掉之前登錄用戶代碼

    application作用域實現(xiàn)用戶登錄擠掉之前登錄用戶代碼

    這篇文章主要介紹了application作用域實現(xiàn)用戶登錄擠掉之前登錄用戶代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot項目@Async方法問題解決方案

    SpringBoot項目@Async方法問題解決方案

    這篇文章主要介紹了SpringBoot項目@Async方法問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java的validation參數校驗代碼實例

    Java的validation參數校驗代碼實例

    這篇文章主要介紹了Java的validation參數校驗代碼實例,Validation參數校驗是指在程序運行中對傳進來的參數進行合法性檢查,以保證程序的正確性和安全性,需要的朋友可以參考下
    2023-10-10
  • IDEA實現(xiàn)導入module并成功運行

    IDEA實現(xiàn)導入module并成功運行

    這篇文章主要介紹了IDEA實現(xiàn)導入module并成功運行方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 利用Java巧妙解決Excel公式迭代計算

    利用Java巧妙解決Excel公式迭代計算

    迭代計算其實是在?Excel?中,一種公式的循環(huán)引用,那么如何利用Java語言巧妙解決Excel公式迭代計算的問題呢,下面小編就來和大家詳細講講吧
    2023-10-10
  • Java中eq、ne、ge、gt、le、lt的含義詳細解釋

    Java中eq、ne、ge、gt、le、lt的含義詳細解釋

    Java中的比較運算符包括eq(等于)、ne(不等于)、ge(大于或等于)、gt(大于)、le(小于或等于)和lt(小于),這些運算符在控制流語句和條件語句中用于判斷條件是否滿足,從而決定程序的執(zhí)行路徑,需要的朋友可以參考下
    2024-11-11
  • 如何把第三方服務注冊到spring項目容器中

    如何把第三方服務注冊到spring項目容器中

    這篇文章主要為大家介紹了如何把第三方服務注冊到spring項目容器中,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07

最新評論

临颍县| 米泉市| 新巴尔虎左旗| 扶沟县| 安宁市| 平凉市| 平武县| 措美县| 阜康市| 古浪县| 荣昌县| 洛隆县| 原阳县| 商水县| 鄂伦春自治旗| 永城市| 逊克县| 满城县| 大方县| 潜江市| 乌拉特前旗| 昌平区| 泸州市| 西青区| 芦山县| 临清市| 两当县| 隆昌县| 盘锦市| 惠州市| 宣化县| 济源市| 酉阳| 惠来县| 页游| 宝丰县| 阳城县| 永春县| 安康市| 固安县| 建德市|