知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 網(wǎng)站建設(shè) >
詳細(xì)SpringBoot教程之Web開(kāi)發(fā)(一)
發(fā)表時(shí)間:2020-2-24
發(fā)布人:葵宇科技
瀏覽次數(shù):56
寫(xiě)在前面
鑒于有人留言說(shuō)想要學(xué)習(xí)SpringBoot相關(guān)的知識(shí),我這里打算寫(xiě)一個(gè)SpringBoot系列的相關(guān)博文,目標(biāo)呢是想讓看了這一系列博文的同學(xué)呢,能夠?qū)pringBoot略窺門(mén)徑,這一系列的博文初步都定下來(lái)包括SpringBoot介紹、入門(mén)、配置、日志相關(guān)、web開(kāi)發(fā)、數(shù)據(jù)訪問(wèn)、結(jié)合docker、緩存、消息隊(duì)列、檢索、任務(wù)安全、分布式等等一系列的博文,工作量很大,是個(gè)漫長(zhǎng)的過(guò)程,每一步我都盡量詳細(xì),配上截圖說(shuō)明,也希望對(duì)看的同學(xué)真的有用。
單純就是想分享技術(shù)博文,還想說(shuō)一句就是,如果覺(jué)得有用,請(qǐng)點(diǎn)個(gè)關(guān)注、給個(gè)贊吧,也算對(duì)我來(lái)說(shuō)是個(gè)寬慰,畢竟也得掉不少頭發(fā),嘿嘿嘿
系列文章傳送條
詳細(xì)SpringBoot教程之入門(mén)(一)
詳細(xì)SpringBoot教程之入門(mén)(二)
詳細(xì)SpringBoot教程之配置文件(一)
詳細(xì)SpringBoot教程之配置文件(二)
詳細(xì)SpringBoot教程之日志框架
詳細(xì)SpringBoot教程之Web開(kāi)發(fā)(一)
詳細(xì)SpringBoot教程之Web開(kāi)發(fā)(二)
詳細(xì)SpringBoot教程之Web開(kāi)發(fā)(三)
詳細(xì)SpringBoot教程之?dāng)?shù)據(jù)訪問(wèn)
詳細(xì)SpringBoot教程之啟動(dòng)配置原理
詳細(xì)SpringBoot教程之緩存開(kāi)發(fā)
開(kāi)發(fā)前準(zhǔn)備
我們接下來(lái)準(zhǔn)備使用SpringBoot開(kāi)發(fā)一個(gè)restful的應(yīng)用,首先我們通過(guò)Idea創(chuàng)建向?qū)臀覀儎?chuàng)建SpringBoot應(yīng)用,勾選我們需要的模塊,這里我們還是只勾選一個(gè)web場(chǎng)景,后面需要啥再添加。
前面說(shuō)過(guò),我們創(chuàng)建的項(xiàng)目中,SpringBoot將會(huì)幫我們自動(dòng)配置好web開(kāi)發(fā)場(chǎng)景中需要的相關(guān)配置,只需要在配置文件中指定少量配置就可以運(yùn)行起來(lái)了,我們只需要注意在業(yè)務(wù)代碼中就可以了。
當(dāng)然,我們?nèi)绻胍闱宄硞€(gè)場(chǎng)景中,SpringBoot幫我們配置了什么依賴(lài),這個(gè)時(shí)候就需要我們了解相關(guān)的自動(dòng)配置原理了,前面的博文有相關(guān)的講解,我這里就不深入講解了。
SpringBoot對(duì)靜態(tài)資源的映射配置規(guī)則
創(chuàng)建好了項(xiàng)目之后,我們先來(lái)講解一下SpringBoot對(duì)于靜態(tài)資源的相關(guān)配置規(guī)則,因?yàn)槲覀儸F(xiàn)在暫時(shí)來(lái)開(kāi)發(fā)一個(gè)前后端沒(méi)有分離的很徹底的應(yīng)用(如果前后端分離的很徹底,我們只用SpringBoot來(lái)做后端接口),所以必須要知道怎么使用SpringBoot的靜態(tài)資源。
使用webjars
首先SpringBoot的有個(gè)叫webjars的東西,所有通過(guò)pom.xml引入的靜態(tài)資源,都在/webjars/**下(這個(gè)在靜態(tài)資源的自動(dòng)配置類(lèi)中可以找到),也就是說(shuō)SpringBoot會(huì)自動(dòng)去classpath:/META-INF/resources/webjars/找資源,webjars以jar包的方式引入靜態(tài)資源(也就是說(shuō),我們都可以通過(guò)http://localhost:8080/webjars/xx訪問(wèn)對(duì)應(yīng)的靜態(tài)資源)
怎么通過(guò)pom.xml引入靜態(tài)資源呢?我們可以去webjars的資源庫(kù)中找,需要什么靜態(tài)資源的jar基本都可以在這里找到(指的是框架依賴(lài)),里面長(zhǎng)這樣子。
各種靜態(tài)資源jar都可以通過(guò)pom.xml依賴(lài)的方式引入 ,我們引入JQuery看看,引入的JQuery的依賴(lài)包下邊,可以看到webjars內(nèi)容長(zhǎng)這樣
現(xiàn)在我們引入了jQuery的靜態(tài)資源,我們啟動(dòng)項(xiàng)目,來(lái)試一下能不能通過(guò)對(duì)應(yīng)的路徑訪問(wèn),我這里使用的路徑是http://localhost:8080/webjars/jquery/3.4.1/jquery.js
所以發(fā)現(xiàn)了沒(méi)有,我通過(guò)SpringBoot來(lái)開(kāi)發(fā)相關(guān)的靜態(tài)資源,非常方便,我們只要引入對(duì)應(yīng)的webjars就可以了,SpringBoot不需要我們進(jìn)行過(guò)多的配置,有自己默認(rèn)配置的規(guī)則。
使用resources
當(dāng)然如果我們想要用自己的靜態(tài)資源,不想使用webjars的東西,怎么做呢?這個(gè)時(shí)候就需要另外一個(gè)映射規(guī)則就是/**(也就是說(shuō),我們通過(guò)http://localhost:8080/xxx.js訪問(wèn)靜態(tài)資源,如果我們沒(méi)有配置相關(guān),就會(huì)默認(rèn)去下面這幾個(gè)文件夾中找)用來(lái)配置映射,即可訪問(wèn)當(dāng)前項(xiàng)目下的任何資源
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
即通過(guò)“/**”訪問(wèn)的靜態(tài)資源,SpringBoot會(huì)去上面這幾個(gè)找資源,這些也就是SpringBoot默認(rèn)的靜態(tài)資源文件夾
這里我們可以隨便將jquery.js放置在三個(gè)文件夾中的一個(gè),然后通過(guò)http://localhost:8080/jquery.js可以訪問(wèn)到。
配置歡迎頁(yè)映射
靜態(tài)資源文件夾下的所有index.html頁(yè)面,會(huì)被/映射;
也就是說(shuō)我們直接訪問(wèn)http://localhost:8080/就直接訪問(wèn)靜態(tài)資源文件夾中的index.html,相當(dāng)于我們以前SpringMVC下面的index.jsp,比如我們現(xiàn)在隨機(jī)選public的靜態(tài)資源文件夾下創(chuàng)建index.html
同樣的所有的/favicon.ico默認(rèn)都是在靜態(tài)資源下找,當(dāng)然,如果我們不想要使用SpringBoot默認(rèn)的靜態(tài)資源文件夾,我們還可以定義靜態(tài)資源的映射,如下
要注意了,如果自己定義了靜態(tài)資源映射之后,默認(rèn)的文件夾就都不生效了,相當(dāng)于原來(lái)的那些訪問(wèn)方式都不生效了。
模板引擎
JSP、Velocity、Freemarker、Thymeleaf等等,模板引擎的本質(zhì)思想是一樣的,只是語(yǔ)法不大一致而已。比如說(shuō)以freemarker為例,如下圖。
SpringBoot推薦的Thymeleaf,不用JSP,因?yàn)門(mén)hymeleaf語(yǔ)法更加簡(jiǎn)單,功能更加強(qiáng)大,如何導(dǎo)入呢,其實(shí)對(duì)于SpringBoot不就是一個(gè)引入依賴(lài)的事情嘛,很簡(jiǎn)單,依賴(lài)包如下
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
這里引入的是SpringBoot默認(rèn)的Thymeleaf依賴(lài)版本,如果我們要切換版本怎么切換,如下,加上對(duì)應(yīng)版本號(hào)就可以了
<properties>
<thymeleaf.version></thymeleaf.version>
<thymeleaf-layout-dialect.version></thymeleaf-layout-dialect.version>
</properties>
使用Thymeleaf
在使用Thymeleaf語(yǔ)法之前,我們先來(lái)實(shí)驗(yàn)一下,我們只要把HTML頁(yè)面放在templates目錄下就可以了,Thymeleaf就會(huì)自動(dòng)渲染
正式使用
我們先編寫(xiě)一個(gè)控制器,用來(lái)跳轉(zhuǎn)渲染,控制器中,加入我們待會(huì)兒要在HTML通過(guò)Thymeleaf獲取的一個(gè)變量值,如下
在HTML編寫(xiě)代碼之前,現(xiàn)在HTML的頭標(biāo)簽中導(dǎo)入thymeleaf的名稱(chēng)空間,這樣我們?cè)谑褂肨hymeleaf語(yǔ)法的時(shí)候,Idea就會(huì)提示相關(guān)代碼。
編寫(xiě)好之后啟動(dòng)項(xiàng)目,我們通過(guò)訪問(wèn)http://localhost:8080/success來(lái)訪問(wèn)success.html頁(yè)面,訪問(wèn)之后結(jié)果如下
SpringBoot自動(dòng)配置MVC
SpringBoot集成了SpringMVC,所以里面自然自動(dòng)配置了SpringMVC運(yùn)行的相關(guān)基本依賴(lài),那么SpringBoot引入了SpringMVC那些依賴(lài)呢?這里我大致進(jìn)行一下介紹。Spring Boot為Spring MVC提供了自動(dòng)配置,可與大多數(shù)應(yīng)用程序完美配合。其中自動(dòng)配置在Spring的默認(rèn)值之上添加了以下功能:
- 包含ContentNegotiatingViewResolver和BeanNameViewResolver
- 支持服務(wù)靜態(tài)資源,包括對(duì)WebJars的支持
- 自動(dòng)注冊(cè)Converter,GenericConverter和Formatter的beans。
- 支持HttpMessageConverters。
- 自動(dòng)注冊(cè)MessageCodesResolver
- 靜態(tài)index.html支持
- 定制Favicon支持
- 自動(dòng)使用ConfigurableWebBindingInitializerbean
如果要保留這些Spring Boot MVC定制并進(jìn)行更多的MVC定制(攔截器,格式化程序,視圖控制器和其他功能),則可以添加自己@Configuration的type類(lèi),WebMvcConfigurer但不添加 @EnableWebMvc(因?yàn)?#64;EnableWebMvc會(huì)關(guān)閉Spring Boot MVC的默認(rèn)配置,而轉(zhuǎn)向需要讀取我們自己添加的配置,稍后會(huì)講)。
如果你想提供的定制情況RequestMappingHandlerMapping,RequestMappingHandlerAdapter或者ExceptionHandlerExceptionResolver,仍然保持彈簧引導(dǎo)MVC自定義,你可以聲明類(lèi)型的beans WebMvcRegistrations,并用它來(lái)提供這些組件的定制實(shí)例。
如果你想對(duì)Spring MVC中的完全控制,你可以添加自己的@Configuration注解為@EnableWebMvc,或者添加自己的@Configuration-annotated DelegatingWebMvcConfiguration中的Javadoc中所述@EnableWebMvc。
后面我們會(huì)討論怎么對(duì)SpringMVC進(jìn)行完全控制。
拓展SpringMVC
看到如下配置是不是很熟悉,我們以前在SpringMVC中是這樣編寫(xiě)視圖控制器和攔截器的,那么我們?cè)趺丛赟pringBoot中使用呢?
在前面見(jiàn)過(guò),為了方便編寫(xiě)項(xiàng)目的統(tǒng)一配置,和前面見(jiàn)過(guò)配置的的地方一樣,我們統(tǒng)一把項(xiàng)目的配置放在config包中管理,然后我們?cè)赾onfig包下創(chuàng)建一個(gè)MyMvcConfig的類(lèi),實(shí)現(xiàn)WebMvcConfigurer接口,就可以對(duì)SpringBoot中關(guān)于SpringMVC相關(guān)配置進(jìn)行擴(kuò)展了。
WebMvcConfigurer可以用來(lái)擴(kuò)展SpringMVC的功能,需要什么在里面實(shí)現(xiàn)什么方法就可以了,比如我們擴(kuò)展一下視圖轉(zhuǎn)換器,如下
這樣實(shí)現(xiàn)了既保留了使用原有的配置,又能使用我們自己的方式擴(kuò)展配置
@EnableWebMvc
上面我們可以自己編寫(xiě)類(lèi)擴(kuò)展SpringMVC的相關(guān)配置,如果我們?cè)僭谂渲妙?lèi)上加上@EnableWebMvc注解,是啥意思呢,也就是說(shuō)我們將全面接管SpringMVC在SpringBoot中的配置,在SpringBoot中有關(guān)SpringMVC所有的默認(rèn)配置都會(huì)失效,需要我們自行配置,比如上面我們默認(rèn)webjars進(jìn)行訪問(wèn)靜態(tài)資源等等,都會(huì)失效
也就是說(shuō)原本我們不使用@EnableWebMvc,SpringBoot會(huì)自動(dòng)配置SpringMVC的默認(rèn)依賴(lài),如果我們使用@EnableWebMvc,則@EnableWebMvc就會(huì)將WebMVCConfigurationSupport組件導(dǎo)入進(jìn)來(lái),而導(dǎo)入的WebMVCConfigurationSupport組件里面只有SpringMVC一些最基本的功能。
如何修改SpringBoot的默認(rèn)配置
SpringBoot在自動(dòng)配置很多組件的時(shí)候,先看容器中有沒(méi)有哦用戶自己配置的(@Bean、@Component)如果有就用用戶配置的,如果沒(méi)有就自動(dòng)配置,如果有些組件可以有多個(gè)(如ViewResolver)將用戶配置和自己默認(rèn)的組合起來(lái)
在SpringBoot中會(huì)有非常多的xxxConfigurer幫助我們進(jìn)行SpringMVC的拓展配置。
寫(xiě)一篇
這篇博文我們?cè)谶M(jìn)行正式開(kāi)發(fā)前的一些準(zhǔn)備,下一篇我們來(lái)引入靜態(tài)資源文件編寫(xiě)相關(guān)代碼。
相關(guān)案例查看更多
相關(guān)閱讀
- 云南網(wǎng)站建設(shè)一條龍
- 全國(guó)前十名小程序開(kāi)發(fā)公司
- 網(wǎng)站搭建
- 云南網(wǎng)頁(yè)制作
- 保山小程序開(kāi)發(fā)
- 云南網(wǎng)站維護(hù)
- 小程序退款
- 退款
- 大理小程序開(kāi)發(fā)
- 昆明做網(wǎng)站建設(shè)的公司排名
- 云南小程序被騙
- 云南網(wǎng)站建設(shè)優(yōu)化
- 海報(bào)插件
- 網(wǎng)站建設(shè)
- 網(wǎng)站排名
- 網(wǎng)站排名優(yōu)化
- python開(kāi)發(fā)小程序
- 小程序公司
- 用戶登錄
- 云南網(wǎng)站建設(shè)公司排名
- 云南網(wǎng)站建設(shè)開(kāi)發(fā)
- 百度小程序
- 云南網(wǎng)站建設(shè)首選公司
- 云南省住房建設(shè)廳網(wǎng)站
- 汽車(chē)報(bào)廢管理系統(tǒng)
- 貴州小程序開(kāi)發(fā)
- 小程序開(kāi)發(fā)
- 云南網(wǎng)站建設(shè)靠譜公司
- 昆明網(wǎng)站開(kāi)發(fā)
- uniapp開(kāi)發(fā)小程序