日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
SpringBoot對(duì)SpringMVC都做了哪些事?(二)

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

靜態(tài)內(nèi)容

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

在一個(gè)獨(dú)立的web應(yīng)用程序中,容器中的默認(rèn)servlet也被啟用,并作為備用,如果Spring決定不處理它,則從ServletContext的根提供內(nèi)容。大多數(shù)情況下,這不會(huì)發(fā)生(除非你修改默認(rèn)的MVC配置),因?yàn)镾pring始終可以通過(guò)DispatcherServlet處理請(qǐng)求。

默認(rèn)情況下,資源映射到/**,但你可以通過(guò)spring.mvc.static-path-pattern屬性進(jìn)行調(diào)整。例如,可以通過(guò)以下方式將所有資源重新定位到/resources/**中:

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

你也可以通過(guò)spring.web.resources.static-locations屬性執(zhí)行設(shè)置靜態(tài)資源的位置。Servlet的根上下文路徑“/”也會(huì)自動(dòng)添加為一個(gè)位置。

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

Spring Boot還支持Spring MVC提供的高級(jí)資源處理特性,允許使用緩存破壞靜態(tài)資源或?yàn)閣ebjar使用版本無(wú)關(guān)url等用例。

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

歡迎頁(yè)

Spring Boot支持靜態(tài)和模板歡迎頁(yè)面。它首先在配置的靜態(tài)內(nèi)容位置中查找index.html文件。如果沒(méi)有找到,它將查找索引模板。如果找到其中一個(gè),它將自動(dòng)用作應(yīng)用程序的歡迎頁(yè)面。

路徑匹配和內(nèi)容協(xié)商

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

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

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

示例:

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

如上接口,在正常請(qǐng)求的情況下返回:

再次測(cè)試,這次我們將Accept請(qǐng)求Header做下修改如下:

請(qǐng)求失敗了,你客戶端能接收的是text/html,但是服務(wù)端生成的application/json類(lèi)型,所以客戶端是無(wú)法解析處理的。

對(duì)服務(wù)端做如下配置:

spring:
mvc:
contentnegotiation:
favor-parameter: true

在請(qǐng)求中這次添加一個(gè)format參數(shù):

成功,如果你將format值改成其它又會(huì)錯(cuò)誤。

修改參數(shù)名:

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

通過(guò)parameter-name將默認(rèn)的format修改為akf。

自定義請(qǐng)求header類(lèi)型

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

這時(shí)候我們的Accept也是可以接收app/cnn的請(qǐng)求類(lèi)型的。

ConfigurableWebBindingInitializer

Spring MVC使用WebBindingInitializer為特定的請(qǐng)求初始化WebDataBinder。如果你創(chuàng)建了自己的ConfigurableWebBindingInitializer @Bean, Spring Boot會(huì)自動(dòng)配置Spring MVC來(lái)使用它。

模版引擎

除了REST web服務(wù)之外,還可以使用Spring MVC來(lái)提供動(dòng)態(tài)HTML內(nèi)容。Spring MVC支持各種模板技術(shù),包括thymleaf、FreeMarkerjsp。此外,許多其他模板引擎也包含它們自己的Spring MVC集成。

Spring Boot包括對(duì)以下模板引擎的自動(dòng)配置支持:

  • FreeMarker
  • Groovy
  • Thymeleaf
  • Mustache

如果可能的話,應(yīng)該避免使用jsp。當(dāng)將它們與嵌入式servlet容器一起使用時(shí),有幾個(gè)已知的限制。

當(dāng)你使用這些帶有默認(rèn)配置的模板引擎之一時(shí),你的模板將自動(dòng)從src/main/resources/templates中獲取。


網(wǎng)頁(yè)題目:SpringBoot對(duì)SpringMVC都做了哪些事?(二)
文章URL:http://www.5511xx.com/article/cdiisgh.html