1. 程式人生 > >SpringBoot初體驗(完整版)

SpringBoot初體驗(完整版)

SpringBoot是做什麼的?我想各位應該已經通過網路都已經瞭解了,其實也就是一種高度抽象封裝,對各種常用操作做了預設的實現與配置,使得開發人員更多地關注業務層。

本文開發使用的是工具是IDEA()+Maven,下面進入SpringBoot的“初體驗”!

和一般Maven專案不同的是,我們在新建專案的時候,選擇Spring Initialiar,其他保持預設,如下圖,在點選Next的時候需要確保網路的可用性,不然沒法建立:


以下完全可以保持預設,打包方式有Jar和War兩種方式,Jar方式可以直接通過java –jar的方式執行專案(此方式jar包內預設打包了tomcat),War的方式可以執行在外部容器中,此文先以預設的Jar來做操作,後面在改成War的方式。


下一步後,會讓你選擇該專案需要整合的功能,有很多,此處只選擇Web,如下圖:


下一步就是給專案起名字(此處以demo1命名),以及專案路徑,可保持預設:

以下就是建立完後的目錄結構圖:


該專案有個啟動類,用於啟動專案,例項專案的啟動類則就是DemoApplication。

完整的pom檔案資訊如下:


接下建立一個HelloController,先建立一個controller的package


HelloController的類資訊如下,注意,類的註解使用的是@RestController而不是@Controller,其實@[email protected][email protected]

,也可以理解為註解集合,@RestContoller的內容為Json。


HelloController建立完後,點選右上角的執行按鈕或Debug按鈕啟動程式:


我們可以從啟動資訊中看出來,專案使用Tomcat啟動,且埠號為8080,這就是SpringBoot給我們內建了Tomcat,我們只關注業務,而無需關注配置,8080的埠號是可以自定義的,後面具體說,此處先來看下我們寫的第一個方法如何訪問以及返回什麼:


在瀏覽器中可以看到如下內容:


是的,頁面顯示的是我們方法中返回的字串內容,細心的朋友可以發現,我們沒有寫任何頁面,它是怎麼出來的呢?好吧,那麼我們來以頁面的方式呈現,並修改啟動埠:

我們在目錄結構中找到application.properties檔案,在其中寫入如下配置,其中server.port為Tomcat啟動埠的配置,其它兩個配置為檢視解析:

配置好後重啟服務,發現已啟動在8090埠:

瀏覽器修改埠,並再次訪問,可正常訪問,可是,還是沒看到如何呈現自定義的頁面,下面就建立application.properties中的目錄路徑,在main目錄下建立webapp/WEB-INF/views,並編寫welcome.jsp


頁面寫好了,但要如何顯示呢?再建立一個方法:


這個時候再啟動的話,我們訪問路徑:localhost:8080/hello/saySomething.html發現,頁面顯示的是welcome字串,而非welcome.jsp中的內容,這是為什麼呢?這是因為HelloController我們新增的註解是@RestController,此時該類的所有方法的返回都以json內容解析返回,所以,出現了welcome的字串,而不是跳轉到welcome.jsp頁面。我們修改@RestController為@Controller,重新啟動,此時,還是沒有出現我們想要的頁面,而是一個錯誤頁:Whitelabel Error Page


我們來看下target目錄內容,發現並沒有WEB-INF/views目錄及welcome.jsp檔案,所以無法返回:


我們修改pom檔案中打包方式為war,並新增外部Tomcat來執行:


右上角下拉,選擇Edit…


選擇已有的Tomcat,如果尚未新增,則點選Configure新增即可


選擇Deployment頁籤,點選右側的加號,選擇Artifact:


確定後返回,彆著急,配置還沒完成,我們需要修改啟動類,以繼承SpringBootServeletInitializer,此時clean 然後 package,啟動Tomcat,在訪問以上請求路徑,即可看到想要的頁面:


上一個的方法的返回值為String,即返回值為頁面的名稱,如果以ModelAndView的形式返回,方法宣告如下,setViewName中設定要返回頁面的名稱:


至此,算是基本結束,不過本人有個問題,就是以啟動類的方式來執行,而非以外部容器執行時,始終無法返回到相應的頁面,如果有知情朋友,還望不吝賜教!