中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在springboot項目中攔截器怎么添加

發布時間:2020-11-16 16:20:49 來源:億速云 閱讀:347 作者:Leah 欄目:編程語言

這篇文章給大家介紹在springboot項目中攔截器怎么添加,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

構建一個spring boot項目。

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

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

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

 1 resources配置

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

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

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

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

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

2.Interceptor配置

配置登錄攔截或者別的。需要創建一個攔截器類來繼承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之后需要在開始創建的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";



  /**
   * 發現如果繼承了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)
    ;
  }

}

關于在springboot項目中攔截器怎么添加就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲周县| 赣榆县| 育儿| 兴安县| 桂阳县| 安泽县| 皋兰县| 夏河县| 邹城市| 当雄县| 汝州市| 朔州市| 北碚区| 比如县| 曲松县| 鹤庆县| 阿克苏市| 康平县| 宿迁市| 冕宁县| 高陵县| 东港市| 密云县| 津南区| 安西县| 酒泉市| 扶沟县| 宝山区| 巴林右旗| 台中县| 洪雅县| 康平县| 万盛区| 宜城市| 门源| 河北省| 琼结县| 通化市| 德钦县| 包头市| 上饶市|