成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot對Spring MVC都做了哪些事?(二)

開發 架構
在一個獨立的web應用程序中,容器中的默認servlet也被啟用,并作為備用,如果Spring決定不處理它,則從ServletContext的根提供內容。

上一篇:《??SpringBoot對Spring MVC都做了哪些事?(一)??》

靜態內容

默認情況下,Spring Boot從類路徑中名為/static(或/public或/resources或/META-INF/resources)的目錄或ServletContext的根目錄提供靜態內容。它使用Spring MVC中的ResourceHttpRequestHandler,因此你可以通過添加自己的WebMVCConfiguer并重寫addResourceHandlers方法來修改該行為。

在一個獨立的web應用程序中,容器中的默認servlet也被啟用,并作為備用,如果Spring決定不處理它,則從ServletContext的根提供內容。大多數情況下,這不會發生(除非你修改默認的MVC配置),因為Spring始終可以通過DispatcherServlet處理請求。

默認情況下,資源映射到/**,但你可以通過spring.mvc.static-path-pattern屬性進行調整。例如,可以通過以下方式將所有資源重新定位到/resources/**中:

spring:
mvc:
static-path-pattern: "/resources/**"

你也可以通過spring.web.resources.static-locations屬性執行設置靜態資源的位置。Servlet的根上下文路徑“/”也會自動添加為一個位置。

除了前面提到的“標準”靜態資源位置之外,Webjars內容還有一種特殊情況。任何路徑在/webjars/**的資源都是從jar文件中提供的,如果它們被打包成webjars格式的話。

Spring Boot還支持Spring MVC提供的高級資源處理特性,允許使用緩存破壞靜態資源或為webjar使用版本無關url等用例。

要對webjar使用版本不確定的url,需要添加Webjars-locator-core依賴。然后聲明你的Webjar。以jQuery為例,添加“/Webjar/jQuery/jQuery.min.js”,得到“/Webjar/jQuery/x.y.z/jQuery .min.js”,其中x.y.z是Webjar版本。

歡迎頁

Spring Boot支持靜態和模板歡迎頁面。它首先在配置的靜態內容位置中查找index.html文件。如果沒有找到,它將查找索引模板。如果找到其中一個,它將自動用作應用程序的歡迎頁面。

路徑匹配和內容協商

Spring MVC可以通過查看請求路徑并將其與應用程序中定義的映射(例如,Controller方法上的@GetMapping注釋)來將傳入的HTTP請求映射到處理程序。

默認情況下,Spring Boot選擇禁用后綴模式匹配,這意味著像“GET /projects/spring-boot”這樣的請求。json"不會匹配@GetMapping("/projects/spring-boot")映射。這被認為是Spring MVC應用程序的最佳實踐。這個特性主要是在過去的HTTP客戶端沒有發送正確的“Accept”請求頭的時候有用;我們需要確保向客戶端發送正確的內容類型。如今,內容協商更加可靠。

還有其他方法來處理HTTP客戶端不一致地發送正確的“Accept”請求頭。不使用后綴匹配,我們可以使用查詢參數來確保像“GET /projects/spring-boot?”format=json"將被映射到@GetMapping("/projects/spring-boot"):

示例:

@GetMapping("/format")
public Map<String, Object> format() {
Map<String, Object> result = new HashMap<>() ;
result.put("name", "張三") ;
return result ;
}

如上接口,在正常請求的情況下返回:

SpringBoot對Spring MVC都做了哪些事?(二)

再次測試,這次我們將Accept請求Header做下修改如下:

SpringBoot對Spring MVC都做了哪些事?(二)

請求失敗了,你客戶端能接收的是text/html,但是服務端生成的application/json類型,所以客戶端是無法解析處理的。

對服務端做如下配置:

spring:
mvc:
contentnegotiation:
favor-parameter: true

在請求中這次添加一個format參數:

SpringBoot對Spring MVC都做了哪些事?(二)

成功,如果你將format值改成其它又會錯誤。

修改參數名:

spring:
mvc:
contentnegotiation:
favor-parameter: true
parameter-name: akf

通過parameter-name將默認的format修改為akf。

SpringBoot對Spring MVC都做了哪些事?(二)

自定義請求header類型

spring:
mvc:
contentnegotiation:
media-types:
cnn: app/cnn

這時候我們的Accept也是可以接收app/cnn的請求類型的。

SpringBoot對Spring MVC都做了哪些事?(二)

ConfigurableWebBindingInitializer

Spring MVC使用WebBindingInitializer為特定的請求初始化WebDataBinder。如果你創建了自己的ConfigurableWebBindingInitializer @Bean, Spring Boot會自動配置Spring MVC來使用它。

模版引擎

除了REST web服務之外,還可以使用Spring MVC來提供動態HTML內容。Spring MVC支持各種模板技術,包括thymleafFreeMarkerjsp。此外,許多其他模板引擎也包含它們自己的Spring MVC集成。

Spring Boot包括對以下模板引擎的自動配置支持:

  • FreeMarker
  • Groovy
  • Thymeleaf
  • Mustache

如果可能的話,應該避免使用jsp。當將它們與嵌入式servlet容器一起使用時,有幾個已知的限制。

當你使用這些帶有默認配置的模板引擎之一時,你的模板將自動從src/main/resources/templates中獲取。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-08-02 07:55:28

MVCJersey

2022-07-26 07:47:09

SpringMVC

2022-07-29 09:12:14

Springservlet容器

2021-01-06 08:24:38

人工智能消費領域AI

2020-12-08 09:30:25

CPU內存I

2017-11-14 09:03:36

Spring Clou架構演進

2017-11-13 15:48:36

架構Spring Clou演進

2021-08-06 22:45:09

人工智能AI

2014-08-10 14:35:23

2017-06-08 09:36:42

京東服務器

2021-07-16 09:58:02

物聯網

2021-01-03 10:37:50

前端開發技術

2022-05-19 07:01:34

架構

2023-06-07 08:13:46

PixiJSCanvas 庫

2019-02-24 23:45:42

5G運營商網絡

2017-06-26 14:52:45

微軟智能云合作

2014-11-12 00:01:29

京東

2019-05-14 09:18:18

程序員PythonJava

2014-03-26 14:23:36

Microsoft AWindows Azu微軟

2019-06-03 11:24:51

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲国产一区二区三区 | eeuss国产一区二区三区四区 | 精品一区二区观看 | 久久一级免费视频 | 女女百合av大片一区二区三区九县 | 日韩在线不卡 | 免费一区 | 亚洲天堂一区二区 | 亚洲精品久久久一区二区三区 | 91免费看片神器 | 国产精品久久久久9999鸭 | 中文字幕成人免费视频 | 欧美日韩视频在线第一区 | 国产精品揄拍一区二区久久国内亚洲精 | 国产精品影视在线观看 | 国产精品一区二区av | www.久久影视| 国产精品久久久久久久久久久久久 | 一区二区在线 | 欧美日韩综合视频 | 成人综合视频在线观看 | 五月天激情综合网 | av影音资源| 亚洲精品欧美 | 久久一级大片 | 国内久久精品 | 日日精品 | 99精品国自产在线 | 97超碰在线播放 | 一级黄色毛片子 | 精品国产欧美一区二区三区成人 | aaaaaaa片毛片免费观看 | 日本高清视频在线播放 | 中文字幕一区二区三区四区不卡 | 日韩欧美在线观看视频网站 | 欧美影院 | 亚洲综合婷婷 | 国产精品视频网站 | 亚州精品成人 | 九九精品视频在线 | 久久久女女女女999久久 |