javascript
springboot静态网页放哪里_STEP4.1 第一个SpringBoot项目
在上一節STEP3.2 服務器對于HTTP請求的處理流程中,我們學會了后端服務相關的理論知識。
接下來,我們就要落實到代碼層面。
沒有需求何來的代碼開發?正所謂需求(DDL)是第一生產力,為了讓我們在學習過程中不要冒出“學這個有什么用?”的奇怪想法,我們先來擬訂一個需求,然后根據這個需求開展我們相關的學習,以及最后的代碼開發。
我們假設我們的老板有如下三個需求:
為了這三個需求,我們需要以怎樣的順序,開展哪些內容的學習呢?
最后,我們還會利用Spring的特性(SpringBoot內置Spring)來優化一下我們的項目:
- 理解Spring IOC特性()
- 使用我們的IOC特性來為login-demo做代碼優化()
那么接下來,就開始我們的第一步吧!
在這一節中,我們要用代碼來實踐最簡單的后臺處理。
其實也就是我們學任何語言or框架都首先會有的 Hello World!
一、新建SpringBoot項目
1.新建項目,選擇Spring Initializr
2.設置項目基本信息
3.勾選依賴界面。我們勾選Web→Spring Web。(依賴是什么?我們到4.2節再說)
4.指定我們的項目名和項目路徑
5.此時可以看到idea為我們創建的項目結構
簡單說一說我們SpringBoot的項目結構,如圖:
紅色框:java文件夾
在這個文件夾中,主要寫我們的業務代碼。包括controller、service、dao,還有各種工具類等等,以及我們的程序主入口:xxxApplication。
藍色框:resources文件夾
在這個文件夾中,有我們的全局配置文件application.properties,一般我們也會放一些其他的配置文件,比如mapper.xml(暫時不用著急在意它是什么)等等。如果是前后端不分離項目,在resources文件夾中還會放一些靜態頁面資源(.html等)。
綠色框:test文件夾
在這個文件夾中,主要寫我們的軟件測試代碼。這個文件夾基本上不在我們專欄研究的范圍內。
橙色框:pom.xml
這是我們管理項目依賴的文件夾,具體解釋請看4.2節。在這一節中我們并不會用到它。
二、修改application.properties配置文件
首先,application.properties配置文件是什么?
這是我們SpringBoot項目的默認配置文件,在這個文件里可以設置我們的服務啟動端口、數據庫連接信息(連到哪個數據庫)、資源文件路徑(比如mybatis的xml路徑)、編碼、時區等等等等,很多適用于整個項目的配置都會在這里寫。
不要想得太復雜,我們從本質的角度來思考一下:
.properties其實也就是一種文件格式,完全可以用我們的txt文本文檔或者.xlsx表格文檔等等來替代。然后我們的程序讀取這個文檔,比如讀取這個文檔里的數據庫配置信息,那么我們的程序也就知道應該去訪問哪個數據庫。
當然,我們也完全可以丟棄配置文件,把數據庫配置等等信息直接寫到代碼里。但這就產生了一個硬編碼的問題,當我們要修改配置的時候就要回到代碼去修改,非常不便。
不僅是SpringBoot,各種流行的框架都會考慮這一點,把全局配置信息分離出來,放到一個或幾個單獨文件里。
application.properties就是這樣的文件。
但是一般應用場景中,我們會用.yml來替代.properties文件。簡單舉個例子講一下.properties和.yml的區別:
對于同樣的數據庫配置:
.properties的配置方式:
# 數據源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver.yml的配置方式:
# 數據源配置 spring:datasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver.yml文件采用縮進的方式,解決了.properties需要反復寫前綴的麻煩之處。
具體用.yml還是.properties來配置全憑個人喜好,筆者在這里會使用.yml來講解~
然后,現在先來改一下配置文件后綴:
在application.properties上右鍵,Refactor→Rename
在application.yml中輸入以下內容,為我們的Hello World項目設置一下服務啟動端口(如果不設置的話,默認也是8080):
server:port: 8080注意:port后面的冒號后面要有空格。不然配置會失效。
正確的寫法:
錯誤的寫法:
我們可以看到,如果冒號后面沒有空格,port會變黑色。
三、構建項目結構
按照上篇的內容(STEP3.2 服務器對于HTTP請求的處理流程)我們應該有Controller、Service、Dao的分層,為項目添加結構如下:
注:保持良好習慣,包名小寫
第一個SpringBoot程序只是寫helloworld,所以service和dao層暫時用不到。但是保持良好習慣,文件夾可以先建在那里。
四、寫一個HelloWorld服務
在controller包中新建一個類MyController.java,寫入以下代碼:
import涉及到的兩個關鍵注解,釋義如下:
(1)@RestController
我們查看一下RestController的定義(Ctrl+鼠標左鍵點進@RestController可以看到)
@Target@RestController是@ResponseBody和@Controller的集合(一個注解包含了兩個注解,同時具有兩個注解的功能)。
@Controller
@Controller方法可以修飾類,指定該類是一個控制器類。這意味著該類下的方法在返回時,會自動通過視圖解析器解析(如果有解析器的話),返回頁面資源。(參考我們的springboot-helloworld項目的myController2:springboot-helloworld項目)
@Controller是前后端不分離的解決方案(頁面通過后臺來返回),不屬于我們的重點內容。
@ResponseBody
該注解用于將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。本質上就是把返回頁面資源的控制器轉變成返回數據(字符串、浮點數、json對象等等)的控制器。
(2)@GetMapping
我們查看一下@GetMapping的定義:
@Target也就是說,如下這兩種寫法是等價的:
@GetMapping@RequestMapping那么看到下面這個@RequestMappling的寫法也就很好理解了。
@GetMapping也就是指定請求方式為GET方式,里面傳的參數也就是value值,代表請求的URL。
換言之,用戶通過"/hello"這個url發送一個GET請求,可以進入@GetMapping("/hello")修飾的方法public String hello()里,執行里面的業務邏輯并返回。
最后運行我們的服務(在入口類SpringbootHelloworldApplication上右鍵運行),控制臺會顯示如下字樣:
會首先顯示一個Spring的大圖標,在倒數第二行會顯示服務運行在8080端口上(支持http協議訪問)
打開瀏覽器輸入localhost:8080/hello可以看到如下界面:
至此,最簡易的服務就算是搭建完成了~完結撒花~
我們的helloworld項目的地址:
springboot-helloworld
總結
以上是生活随笔為你收集整理的springboot静态网页放哪里_STEP4.1 第一个SpringBoot项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http中的请求头各部分都是什么意思_3
- 下一篇: 2020斐讯k3刷什么固件_斐讯K2/K