本指南向您介紹了使用Spring建立「hello world」網站的過程。閱讀原文:Serving Web Content with Spring MVChtml
您將構建一個具備靜態主頁的應用程序,而且還將在如下位置接受HTTP GET請求:java
http://localhost:8080/greeting
並用顯示HTML的網頁進行響應。 HTML的主體包含一個問候語:git
"Hello, World!"github
您可使用查詢字符串中的可選名稱參數來自定義問候語:web
http://localhost:8080/greeting?name=User
名稱參數值覆蓋「World」的默認值,並反映在響應中:
"Hello, User!"
大約十五分鐘spring
一個喜歡的文本編輯器或者IDEapache
JDK 1.8 或者更高瀏覽器
Gradle 4+ 或者 Maven 3.2+緩存
你也能夠導入Code到你的IDE中服務器
像大多數Spring入門指南同樣,您能夠從頭開始並完成每一個步驟,也能夠繞過已熟悉的基本設置步驟。 不管哪一種方式,你最終獲得工做代碼。
1. 打開STS,New ————> Import Spring Getting Started Content
2. 輸入servi ,搜索找到Serving Web Content
Tips: Build Type 選擇Maven, Code Sets 所有勾選,由於這樣能夠同時生成完成後的點和空的項目,方便咱們學習。
3. 建立一個Web Controller
在Spring構建網站的方法中,HTTP請求由控制器處理。
您能夠經過@Controller註釋輕鬆識別這些請求。 在如下示例中,GreetingController經過返回View的名稱(在本例中爲「greeting」)來處理/ greeting的GET請求。 視圖負責呈現HTML內容:
src/main/java/hello/GreetingController.java
package hello; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class GreetingController { @GetMapping("/greeting") public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "greeting"; } }
這個控制器簡潔明瞭,但有不少事情要作。 讓咱們一步一步分解它。
@GetMapping註釋可確保將/ GET的HTTP GET請求映射到greeting()方法。
@RequestParam將查詢字符串參數名稱的值綁定到greeting()方法的name參數中。 此查詢字符串參數不是必需的; 若是請求中缺失,則使用「World」的缺省值。 name參數的值被添加到Model對象,最終使其能夠被視圖模板訪問。
方法體的實現依賴於視圖技術,在這種狀況下是Thymeleaf,執行HTML的服務器端呈現。 Thymeleaf解析下面的greeting.html模板並評估th:text表達式來呈如今控制器中設置的$ {name}參數的值。
src/main/resources/templates/greeting.html
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Getting Started: Serving Web Content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p th:text="'Hello, ' + ${name} + '!'" /> </body> </html>
4.開發Web應用程序
開發Web應用程序的一個常見功能是對變動進行編碼,從新啓動應用程序,並刷新瀏覽器以查看更改。 整個過程可能會耗費不少時間。 爲了加速事情的循環,Spring Boot附帶了一個稱爲spring-boot-devtools的方便模塊。
啓用熱交換
切換模板引擎以禁用緩存
使LiveReload可以自動刷新瀏覽器
其餘基於開發而非生產的合理違約
5. 使應用程序變得可執行
雖然能夠將此服務做爲傳統WAR文件打包以部署到外部應用程序服務器,但下面演示的更簡單的方法會建立獨立應用程序。 您將全部內容打包到一個單獨的,可執行的JAR文件中,由一個良好的舊Java main()方法驅動。 一路上,您使用Spring的支持將Tomcat servlet容器做爲HTTP運行時嵌入,而不是部署到外部實例。
src/main/java/hello/Application.java
package hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
@SpringBootApplication是一個方便的註釋,它增長了如下全部內容:
main()方法使用Spring Boot的SpringApplication.run()方法啓動應用程序。你有沒有注意到沒有一行XML?沒有web.xml文件。這個Web應用程序是100%純Java,您沒必要處理配置任何管道或基礎設施。
6. 編譯出一個可執行的Jar
您可使用Gradle或Maven從命令行運行應用程序。 或者您能夠構建一個包含全部必需的依賴項,類和資源的可執行JAR文件,並運行該文件。 這使得在整個開發生命週期內跨越不一樣環境等,將服務做爲應用程序發佈,版本化和部署變得很是容易。
若是您正在使用Gradle,則可使用./gradlew bootRun運行該應用程序。 或者您可使用./gradlew構建構建JAR文件。 而後你能夠運行JAR文件:
java -jar build/libs/gs-serving-web-content-0.1.0.jar
若是您使用的是Maven,則可使用./mvn spring-boot:run來運行該應用程序。 或者您可使用./mvn clean包構建JAR文件。 而後你能夠運行JAR文件:
java -jar target/gs-serving-web-content-0.1.0.jar
上述過程將建立一個可運行的JAR。 您也能夠選擇構建經典的WAR文件。
7.測試這個App
"Hello, World!"
如圖所示:
提供一個name查詢字符串參數經過 http://localhost:8080/greeting?name=User.
如今你注意到這個消息已經由 "Hello, World!" 改變成了 "Hello, User!"
"Hello, User!"
此更改演示了GreetingController中的@RequestParam排列按預期工做。 name參數已被賦予默認值「World」,但始終能夠經過查詢字符串顯式覆蓋。
添加一個Home 頁面
像HTML或JavaScript或CSS這樣的靜態資源能夠很容易地從Spring Boot應用程序中提供,只需將它們放在源代碼的正確位置便可。 默認狀況下,Spring Boot以「/ static」(或「/ public」)的類路徑中的資源提供靜態內容。 index.html資源是特殊的,由於它用做「歡迎頁面」(若是它存在),這意味着它將做爲根資源提供,即在咱們的示例中爲http:// localhost:8080 /。 因此建立這個文件:
src/main/resources/static/index.html
<!DOCTYPE HTML> <html> <head> <title>Getting Started: Serving Web Content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p>Get your greeting <a href="/greeting">here</a></p> </body> </html>
而後當你重啓你的App你將會看到這個頁面在這個網址 http://localhost:8080/
恭喜! 你剛剛用Spring開發了一個網頁。
源碼: 點擊查看