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