Spring 5 (含 Spring MVC) 新手村起手式 之 HelloWorld

Christy
appxtech
Published in
6 min readNov 5, 2021
  • Spring 介紹
  • 第一個HelloWorld 網頁

什麼是Spring ?

至於 什麼是 Spring 的話,可以參考 Wiki 的一段說明:

「Spring框架是 Java 平台的一個開源的全棧(full-stack)應用程式框架和控制反轉容器實現,一般被直接稱為 Spring。該框架的一些核心功能理論上可用於任何 Java 應用,但 Spring 還為基於Java企業版平台構建的 Web 應用提供了大量的擴充支援。Spring 沒有直接實現任何的編程模型,但它已經在 Java 社群中廣為流行,基本上完全代替了企業級JavaBeans(EJB)模型。

Spring框架以 Apache License 2.0 開源許可協定的形式發布,該框架最初由 Rod Johnson 以及 Juergen Hoeller 等人開發。」

簡單來說,就是一套好用的框架,然後已經有一套程式撰寫的架構,容易讓每個人來理解跟遵循。這樣的好處是,寫出來的程式也相較容易被人理解跟被人維護。(*避免…看到一些像論文,或是無字天書的程式碼)

何時要用Spring ?

目前一般會使用Spring框架的情境,大多是都是在Web相關的專案。

不過Spring框架本身,並沒有限定使用的情境 ,比如說 JavaFX 視窗的專案,Java Console 專案 都可導入Spring。只是目前趨勢看來,各種系統現在都傾向放上雲端(即使是公司內部在使用的系統),所以現在軟體專案上相信有很高的比例都是以Web Application為主(*網站類型的系統,如電商平台、公司內部的員工請假系統,集團內部績效考核系統 等等)

所以在使用Java來開發這類Web專案時,非常高的機率會使用的技術就會是以Spring 框架為核心基礎,再依需求來加入其它相關的技術,如 Spring MVC, Spring Data, Spring Security 等等。

程式撰寫

所以接下來,就讓我們接著上一章的範例,來接著看如何來寫我們的第一個Spring網頁。

在原本的專案結構裏,加上一個controller的資料夾,如左邊黃框
並且在新建一個純Java的類別檔,這裏我們取名 HelloController
請注意類別名稱上,我們加上一個 @Controller (詳見補充說明1)

同時,為了能快速在瀏覽器上呈現結果,我們在HelloController 裏再補一個函式 Index(),
請注意函式名稱上,我們加上一個 @GetMapping(“/”) (詳見補充說明2)

如果是直接在IDE裏copy/paste @Controller, @GetMapping可能會出現以下畫面

這二個視窗 只是提醒我們,貼上的標注(Annotation),是分別關連到spring裏的對應類別,按下OK即可。

執行結果

在IDE裏按下執行鈕後,我們可以透過輸出看到

程式已啟動,跑在tomcat 上的 port 8080

這時候,我們用Chrome 來開本機 localhost:8080 的結果
下面訊息提到 看不到 root template ?

這是因為我們沒有指定準備要用哪個頁面來回應,所以這時候我們要加上對應的頁面資料夾及內容

在原本的resources資料下,加上 templates 資料夾,以及 root.html。而 html檔裏面的內容 可以是一個簡單的網頁內容即可,只要是HTML內容皆可(包含CSS/JavaScript/Image 等等,如下圖右邊)

這時候,再用Chrome 重開 localhost:8080,就可以看到頁面結果如下

Wola !!!!!

這樣,我們就完成了HelloWorld / Welcome to Spring 的範例了 ~

總結

我們在單純的Java class 上,透過spring 提供的標注功能,進而讓原本的程式將結果呈現在瀏覽器裏。

補充說明

1.@Controller :
讓程式能具備處理瀏覽器的要求(Request)

2.@GetMapping(“/”) :

當瀏覽器輸入網站的根目錄位置時,進而呼叫對應的函式。以我們這次的例子,也就是呼叫 Index () 函式,而函式回傳的字串,則代表實際內容的主檔名(root)。當然 root.html 必需存在於 src\main\resources\templates\root.html 的位置,才能正確的回應給使用者的瀏覽器呈現。

練習

  1. 如果我們想要改成 http://localhost:8080/hello 來秀出 原本 root.html的內容; 該如何修改 ?
  2. 如果我們想要改成 http://localhost/hello,該如何修改 ?

歡迎在文章下討論區留下您的回答喔!

--

--