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

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

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

服務(wù)器之家 - 編程語言 - Java教程 - spring boot如何添加攔截器

spring boot如何添加攔截器

2020-09-08 10:42Ryan.Miao Java教程

本篇文章主要介紹了spring boot如何添加攔截器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

構(gòu)建一個(gè)spring boot項(xiàng)目。

添加攔截器需要添加一個(gè)configuration

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

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

 1 resources配置

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

?
1
2
3
4
5
6
7
#指定環(huán)境配置文件
spring:
 profiles:
  active: dev
 # 修改默認(rèn)靜態(tài)路徑,默認(rèn)為/**,當(dāng)配置hello.config.ServletContextConfig后此處配置失效
 mvc:
  static-path-pattern: /static/**

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

?
1
2
3
4
5
@Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/").addResourceLocations("/**");
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
  }

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

2.Interceptor配置

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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中添加這個(gè)攔截器:

?
1
2
3
4
5
6
7
@Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LoginInterceptor())
        .addPathPatterns("/**")
        .excludePathPatterns(FAVICON_URL)
    ;
  }

完整的ServletContextConfig為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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中配置的相關(guān)內(nèi)容會(huì)失效。
   * @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.rar

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

原文鏈接:http://www.cnblogs.com/woshimrf/p/5734956.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩大片免费观看 | 男人j进女屁股视频在线观看 | 成人影院免费看 | 亚洲另类中文字幕 | 五月天精品视频播放在线观看 | 免费午夜影片在线观看影院 | 人人艹在线视频 | 国精品午夜dy8888狼人 | 男男gaygays18中国 | 亚洲精品免费视频 | 国产一级特黄aa大片在线 | 四虎影院新网址 | 蜜桃视频在线观看官网 | 红楼影视h38bar在线线播放 | 日韩无砖2021特黄 | 操国产美女 | 天美传媒果冻传媒星空传媒 | japonensis日本护士18 | 91久久偷偷做嫩草影院电 | 黑人巨大精品战中国美女 | 国内剧情麻豆 | 美女69xx | 久久九九有精品国产23百花影院 | 国产亚洲欧美一区二区三区 | 丝瓜草莓香蕉绿巨人幸福宝 | 亚洲黄色色图 | 视频在线观看一区二区三区 | 国产精品亚洲午夜不卡 | 91精品啪在线观看国产日本 | 国产专区日韩精品欧美色 | 四虎影视4hutv最新地址在线 | 免费观看大片毛片 | 国产99精品免费视频看6 | 日韩一区二区三区不卡视频 | 手机看片黄色 | 呜嗯啊野战h呻吟男男双性 污小说在线阅读 | 99久久免费国产精品热 | 日韩亚洲人成在线综合 | 精品蜜臀AV在线天堂 | 日本欧美一二三区色视频 | 日韩高清一区 |