springboot url攔截定製

構建web應用程序時,並非全部的URL請求都遵循默認的規則。有時,咱們但願RESTful URL匹配的時候包含定界符「.」,這種狀況在Spring中能夠稱之爲「定界符定義的格式」;有時,咱們但願識別斜槓的存在。Spring提供了接口供開發人員按照需求定製。

 

核心的開發步驟就是兩步:html

(1)啓動類 extends WebMvcConfigurationSupportjava

(2)重寫configurePathMatch方法;web

具體實現代碼:spring

1mvc

2app

3異步

4ide

5學習

6ui

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

package com.kfit;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

  

/**

 *

 * @author Angel --守護天使

 * @version v.0.1

 * @date 2016年7月29日下午7:06:11

 */

@SpringBootApplication

public class ApiCoreApp extends WebMvcConfigurationSupport{

   

   

  /**

   * 一、 extends WebMvcConfigurationSupport

   * 二、重寫下面方法;

   * setUseSuffixPatternMatch : 設置是不是後綴模式匹配,如「/user」是否匹配/user.*,默認真即匹配;

   * setUseTrailingSlashMatch : 設置是否自動後綴路徑模式匹配,如「/user」是否匹配「/user/」,默認真即匹配;

   */

  @Override

  publicvoid configurePathMatch(PathMatchConfigurer configurer) {

    configurer.setUseSuffixPatternMatch(false)

          .setUseTrailingSlashMatch(true);

  }

   

  publicstaticvoid main(String[] args) {

    SpringApplication.run(ApiCoreApp.class, args);

  }

}

其中訪問代碼:

1

2

3

4

@RequestMapping("/user")

public String hello(){

  return"/user";

}

以上代碼有兩句核心的代碼:

setUseSuffixPatternMatch(boolean useSuffixPatternMatch):

設置是不是後綴模式匹配,如「/user」是否匹配/user.*,默認真即匹配;

當此參數設置爲true的時候,那麼/user.html,/user.aa,/user.*都能是正常訪問的。

當此參數設置爲false的時候,那麼只能訪問/user或者/user/( 這個前提是setUseTrailingSlashMatch 設置爲true了)。

setUseTrailingSlashMatch (boolean useSuffixPatternMatch):

設置是否自動後綴路徑模式匹配,如「/user」是否匹配「/user/」,默認真即匹配;

當此參數設置爲true的會後,那麼地址/user,/user/都能正常訪問。

當此參數設置爲false的時候,那麼就只能訪問/user了。

當以上兩個參數都設置爲true的時候,那麼路徑/user或者/user.aa,/user.*,/user/都是能正常訪問的,可是相似/user.html/ 是沒法訪問的。

當都設置爲false的時候,那麼就只能訪問/user路徑了。

以上就是本文的所有內容,但願對你們的學習有所幫助,也但願你們多多支持腳本之家。

原文連接:http://412887952-qq-com.iteye.com/blog/2315107

http://www.jb51.net/article/106715.htm

其中DefaultMockMvcBuilder還提供了以下API:

addFilters(Filter... filters)/addFilter(Filter filter, String... urlPatterns):添加javax.servlet.Filter過濾器

defaultRequest(RequestBuilder requestBuilder):默認的RequestBuilder,每次執行時會合併到自定義的RequestBuilder中,即提供公共請求數據的;

alwaysExpect(ResultMatcher resultMatcher):定義全局的結果驗證器,即每次執行請求時都進行驗證的規則;

alwaysDo(ResultHandler resultHandler):定義全局結果處理器,即每次請求時都進行結果處理;

dispatchOptions:DispatcherServlet是否分發OPTIONS請求方法到控制器;

 

StandaloneMockMvcBuilder繼承了DefaultMockMvcBuilder,又提供了以下API:

setMessageConverters(HttpMessageConverter<?>...messageConverters):設置HTTP消息轉換器;

setValidator(Validator validator):設置驗證器;

setConversionService(FormattingConversionService conversionService):設置轉換服務;

addInterceptors(HandlerInterceptor... interceptors)/addMappedInterceptors(String[] pathPatterns, HandlerInterceptor... interceptors):添加spring mvc攔截器;

setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager):設置內容協商管理器;

setAsyncRequestTimeout(long timeout):設置異步超時時間;

setCustomArgumentResolvers(HandlerMethodArgumentResolver... argumentResolvers):設置自定義控制器方法參數解析器;

setCustomReturnValueHandlers(HandlerMethodReturnValueHandler... handlers):設置自定義控制器方法返回值處理器;

setHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers)/setHandlerExceptionResolvers(HandlerExceptionResolver... exceptionResolvers):設置異常解析器;

setViewResolvers(ViewResolver...resolvers):設置視圖解析器;

setSingleView(View view):設置單個視圖,即視圖解析時老是解析到這一個(僅適用於只有一個視圖的狀況);

setLocaleResolver(LocaleResolver localeResolver):設置Local解析器;

setFlashMapManager(FlashMapManager flashMapManager):設置FlashMapManager,如存儲重定向數據;

setUseSuffixPatternMatch(boolean useSuffixPatternMatch):設置是不是後綴模式匹配,如「/user」是否匹配"/user.*",默認真即匹配;

setUseTrailingSlashPatternMatch(boolean useTrailingSlashPatternMatch):設置是否自動後綴路徑模式匹配,如「/user」是否匹配「/user/」,默認真即匹配;

addPlaceHolderValue(String name, String value) :添加request mapping中的佔位符替代;

 

由於StandaloneMockMvcBuilder不會加載Spring MVC配置文件,所以就不會註冊咱們須要的一些組件,所以就提供瞭如上API用於註冊咱們須要的相應組件。

相關文章
相關標籤/搜索