詳細SpringBoot教程之Web開發(一) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >

詳細SpringBoot教程之Web開發(一)

發表時間:2020-2-24

發布人:葵宇科技

浏覽次數:40

寫在前面

鑒于有人留言說想要學習SpringBoot相關(guān)的知識,我這裡打算寫一個(gè)SpringBoot系列的相關(guān)博文(wén),目标呢(ne)是想讓看了這一系列博文(wén)的同學呢(ne),能夠對SpringBoot略窺門徑,這一系列的博文(wén)初步都定下(xià)來包括SpringBoot介紹、入門、配置、日志相關(guān)、web開發、數據訪問(wèn)、結合docker、緩存、消息隊列、檢索、任務安全、分布式等等一系列的博文(wén),工作量很大,是個(gè)漫長的過程,每一步我都盡量詳細,配上截圖說明,也希望對看的同學真的有用。
單純就是想分享技術(shù)博文(wén),還想說一句就是,如(rú)果覺得有用,請點個(gè)關(guān)注、給個(gè)贊吧,也算對我來說是個(gè)寬慰,畢竟也得掉不少(shǎo)頭發,嘿嘿嘿

系列文(wén)章傳送條

詳細SpringBoot教程之入門(一)
詳細SpringBoot教程之入門(二)
詳細SpringBoot教程之配置文(wén)件(一)
詳細SpringBoot教程之配置文(wén)件(二)
詳細SpringBoot教程之日志框架
詳細SpringBoot教程之Web開發(一)
詳細SpringBoot教程之Web開發(二)
詳細SpringBoot教程之Web開發(三)
詳細SpringBoot教程之數據訪問(wèn)
詳細SpringBoot教程之啟動(dòng)配置原理
詳細SpringBoot教程之緩存開發

開發前準備

我們接下(xià)來準備使用SpringBoot開發一個(gè)restful的應用,首先我們通(tōng)過Idea創建向導幫我們創建SpringBoot應用,勾選我們需要的模塊,這裡我們還是隻勾選一個(gè)web場景,後面需要啥再添加。
在這裡插入圖片描述

前面說過,我們創建的項目中(zhōng),SpringBoot将會幫我們自動(dòng)配置好web開發場景中(zhōng)需要的相關(guān)配置,隻需要在配置文(wén)件中(zhōng)指定少(shǎo)量配置就可(kě)以運行起來了,我們隻需要注意在業(yè)務代碼中(zhōng)就可(kě)以了。

當然,我們如(rú)果想要搞清楚某個(gè)場景中(zhōng),SpringBoot幫我們配置了什麼依賴,這個(gè)時候就需要我們了解相關(guān)的自動(dòng)配置原理了,前面的博文(wén)有相關(guān)的講解,我這裡就不深入講解了。

SpringBoot對靜态資(zī)源的映射配置規則

創建好了項目之後,我們先來講解一下(xià)SpringBoot對于靜态資(zī)源的相關(guān)配置規則,因為我們現在暫時來開發一個(gè)前後端沒有分離(lí)的很徹底的應用(如(rú)果前後端分離(lí)的很徹底,我們隻用SpringBoot來做後端接口),所以必須要知道怎麼使用SpringBoot的靜态資(zī)源。

使用webjars

首先SpringBoot的有個(gè)叫webjars的東西,所有通(tōng)過pom.xml引入的靜态資(zī)源,都在/webjars/**下(xià)(這個(gè)在靜态資(zī)源的自動(dòng)配置類中(zhōng)可(kě)以找到),也就是說SpringBoot會自動(dòng)去classpath:/META-INF/resources/webjars/找資(zī)源,webjars以jar包的方式引入靜态資(zī)源(也就是說,我們都可(kě)以通(tōng)過http://localhost:8080/webjars/xx訪問(wèn)對應的靜态資(zī)源)

怎麼通(tōng)過pom.xml引入靜态資(zī)源呢(ne)?我們可(kě)以去webjars的資(zī)源庫中(zhōng)找,需要什麼靜态資(zī)源的jar基本都可(kě)以在這裡找到(指的是框架依賴),裡面長這樣子(zǐ)。
在這裡插入圖片描述各種靜态資(zī)源jar都可(kě)以通(tōng)過pom.xml依賴的方式引入 ,我們引入JQuery看看,引入的JQuery的依賴包下(xià)邊,可(kě)以看到webjars内容長這樣
在這裡插入圖片描述
現在我們引入了jQuery的靜态資(zī)源,我們啟動(dòng)項目,來試一下(xià)能不能通(tōng)過對應的路(lù)徑訪問(wèn),我這裡使用的路(lù)徑是http://localhost:8080/webjars/jquery/3.4.1/jquery.js
在這裡插入圖片描述
所以發現了沒有,我通(tōng)過SpringBoot來開發相關(guān)的靜态資(zī)源,非常方便,我們隻要引入對應的webjars就可(kě)以了,SpringBoot不需要我們進行過多的配置,有自己默認配置的規則。

使用resources

當然如(rú)果我們想要用自己的靜态資(zī)源,不想使用webjars的東西,怎麼做呢(ne)?這個(gè)時候就需要另外一個(gè)映射規則就是/**(也就是說,我們通(tōng)過http://localhost:8080/xxx.js訪問(wèn)靜态資(zī)源,如(rú)果我們沒有配置相關(guān),就會默認去下(xià)面這幾個(gè)文(wén)件夾中(zhōng)找)用來配置映射,即可(kě)訪問(wèn)當前項目下(xià)的任何資(zī)源

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/
    即通(tōng)過“/**”訪問(wèn)的靜态資(zī)源,SpringBoot會去上面這幾個(gè)找資(zī)源,這些也就是SpringBoot默認的靜态資(zī)源文(wén)件夾
    在這裡插入圖片描述
    這裡我們可(kě)以随便将jquery.js放置在三個(gè)文(wén)件夾中(zhōng)的一個(gè),然後通(tōng)過http://localhost:8080/jquery.js可(kě)以訪問(wèn)到。
    在這裡插入圖片描述
    在這裡插入圖片描述

配置歡迎頁映射

404.html映射;
404.html
在這裡插入圖片描述
同樣的所有的
/favicon.ico默認都是在靜态資(zī)源下(xià)找,當然,如(rú)果我們不想要使用SpringBoot默認的靜态資(zī)源文(wén)件夾,我們還可(kě)以定義靜态資(zī)源的映射,如(rú)下(xià)
在這裡插入圖片描述
要注意了,如(rú)果自己定義了靜态資(zī)源映射之後,默認的文(wén)件夾就都不生效了,相當于原來的那些訪問(wèn)方式都不生效了。

模闆引擎

JSP、Velocity、Freemarker、Thymeleaf等等,模闆引擎的本質思想是一樣的,隻是語法不大一緻而已。比如(rú)說以freemarker為例,如(rú)下(xià)圖。
在這裡插入圖片描述
SpringBoot推薦的Thymeleaf,不用JSP,因為Thymeleaf語法更加簡單,功能更加強大,如(rú)何導入呢(ne),其實對于SpringBoot不就是一個(gè)引入依賴的事情嘛,很簡單,依賴包如(rú)下(xià)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

這裡引入的是SpringBoot默認的Thymeleaf依賴版本,如(rú)果我們要切換版本怎麼切換,如(rú)下(xià),加上對應版本号就可(kě)以了

<properties>
<thymeleaf.version></thymeleaf.version>
<thymeleaf-layout-dialect.version></thymeleaf-layout-dialect.version>
</properties>

使用Thymeleaf

在使用Thymeleaf語法之前,我們先來實驗一下(xià),我們隻要把HTML頁面放在templates目錄下(xià)就可(kě)以了,Thymeleaf就會自動(dòng)渲染
在這裡插入圖片描述
在這裡插入圖片描述

正式使用

我們先編寫一個(gè)控制器(qì),用來跳轉渲染,控制器(qì)中(zhōng),加入我們待會兒要在HTML通(tōng)過Thymeleaf獲取的一個(gè)變量值,如(rú)下(xià)
在這裡插入圖片描述
在HTML編寫代碼之前,現在HTML的頭标簽中(zhōng)導入thymeleaf的名稱空間,這樣我們在使用Thymeleaf語法的時候,Idea就會提示相關(guān)代碼。
在這裡插入圖片描述
編寫好之後啟動(dòng)項目,我們通(tōng)過訪問(wèn)http://localhost:8080/success來訪問(wèn)success.html頁面,訪問(wèn)之後結果如(rú)下(xià)
在這裡插入圖片描述

SpringBoot自動(dòng)配置MVC

SpringBoot集成了SpringMVC,所以裡面自然自動(dòng)配置了SpringMVC運行的相關(guān)基本依賴,那麼SpringBoot引入了SpringMVC那些依賴呢(ne)?這裡我大緻進行一下(xià)介紹。Spring Boot為Spring MVC提供了自動(dòng)配置,可(kě)與大多數應用程序完美配合。其中(zhōng)自動(dòng)配置在Spring的默認值之上添加了以下(xià)功能:

  • 包含ContentNegotiatingViewResolver和(hé)BeanNameViewResolver
  • 支持服務靜态資(zī)源,包括對WebJars的支持
  • 自動(dòng)注冊Converter,GenericConverter和(hé)Formatter的beans。
  • 支持HttpMessageConverters。
  • 自動(dòng)注冊MessageCodesResolver
  • 靜态index.html支持
  • 定制Favicon支持
  • 自動(dòng)使用ConfigurableWebBindingInitializerbean

如(rú)果要保留這些Spring Boot MVC定制并進行更多的MVC定制(攔截器(qì),格式化程序,視圖控制器(qì)和(hé)其他功能),則可(kě)以添加自己@Configuration的type類,WebMvcConfigurer但不添加 @EnableWebMvc(因為@EnableWebMvc會關(guān)閉Spring Boot MVC的默認配置,而轉向需要讀取我們自己添加的配置,稍後會講)。

如(rú)果你(nǐ)想提供的定制情況RequestMappingHandlerMapping,RequestMappingHandlerAdapter或者ExceptionHandlerExceptionResolver,仍然保持彈簧引導MVC自定義,你(nǐ)可(kě)以聲明類型的beans WebMvcRegistrations,并用它來提供這些組件的定制實例。

如(rú)果你(nǐ)想對Spring MVC中(zhōng)的完全控制,你(nǐ)可(kě)以添加自己的@Configuration注解為@EnableWebMvc,或者添加自己的@Configuration-annotated DelegatingWebMvcConfiguration中(zhōng)的Javadoc中(zhōng)所述@EnableWebMvc。

後面我們會讨論怎麼對SpringMVC進行完全控制。

拓展SpringMVC

看到如(rú)下(xià)配置是不是很熟悉,我們以前在SpringMVC中(zhōng)是這樣編寫視圖控制器(qì)和(hé)攔截器(qì)的,那麼我們怎麼在SpringBoot中(zhōng)使用呢(ne)?
在這裡插入圖片描述
在前面見過,為了方便編寫項目的統一配置,和(hé)前面見過配置的的地方一樣,我們統一把項目的配置放在config包中(zhōng)管理,然後我們在config包下(xià)創建一個(gè)MyMvcConfig的類,實現WebMvcConfigurer接口,就可(kě)以對SpringBoot中(zhōng)關(guān)于SpringMVC相關(guān)配置進行擴展了。

WebMvcConfigurer可(kě)以用來擴展SpringMVC的功能,需要什麼在裡面實現什麼方法就可(kě)以了,比如(rú)我們擴展一下(xià)視圖轉換器(qì),如(rú)下(xià)
在這裡插入圖片描述
這樣實現了既保留了使用原有的配置,又能使用我們自己的方式擴展配置

@EnableWebMvc

上面我們可(kě)以自己編寫類擴展SpringMVC的相關(guān)配置,如(rú)果我們再在配置類上加上@EnableWebMvc注解,是啥意思呢(ne),也就是說我們将全面接管SpringMVC在SpringBoot中(zhōng)的配置,在SpringBoot中(zhōng)有關(guān)SpringMVC所有的默認配置都會失效,需要我們自行配置,比如(rú)上面我們默認webjars進行訪問(wèn)靜态資(zī)源等等,都會失效
在這裡插入圖片描述
也就是說原本我們不使用@EnableWebMvc,SpringBoot會自動(dòng)配置SpringMVC的默認依賴,如(rú)果我們使用@EnableWebMvc,則@EnableWebMvc就會将WebMVCConfigurationSupport組件導入進來,而導入的WebMVCConfigurationSupport組件裡面隻有SpringMVC一些最基本的功能。

如(rú)何修改SpringBoot的默認配置

SpringBoot在自動(dòng)配置很多組件的時候,先看容器(qì)中(zhōng)有沒有哦用戶自己配置的(@Bean、@Component)如(rú)果有就用用戶配置的,如(rú)果沒有就自動(dòng)配置,如(rú)果有些組件可(kě)以有多個(gè)(如(rú)ViewResolver)将用戶配置和(hé)自己默認的組合起來

在SpringBoot中(zhōng)會有非常多的xxxConfigurer幫助我們進行SpringMVC的拓展配置。

寫一篇

這篇博文(wén)我們在進行正式開發前的一些準備,下(xià)一篇我們來引入靜态資(zī)源文(wén)件編寫相關(guān)代碼。

相關(guān)案例查看更多