咱們將SpringBoot能夠看作是集大成者,說的通俗一點就是簡化了配置,接下來咱們看看在SpringBoot中如何啓用並使用Spring MVC,Spring MVC和.NET或者.NET Core中MVC思想同樣,只不過名詞不同罷了,好了,咱們來看看在SpringBoot中如何使用Spring MVC。html
在咱們默認建立的SpringBoot項目中,咱們在Maven管理包的pom.xml裏添加以下包對JSP進行編譯web
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
這裏須要額外說明下,包spring-boot-starter-web雖然包含spring-boot-starter-tomcat,同時spring-boot-starter-tomcat包含了tomcat-embed-core包,可是,包tomcat-embed-core並未包含tomcat-embed-jasper,實際上,是包括tomcat-embed-core的依賴項的tomcat-embed-jasper,經過上述咱們能夠看到,包tomcat-embed-jasper被標記爲已提供(provided),所以代表咱們但願JDK或容器在運行時提供依賴項,該做用域僅在編譯和測試類路徑上可用,而且不可傳遞。總之,spring-boot-starter-web包含tomcat嵌入式依賴關係,但不包含jasper嵌入式依賴關係,所以咱們須要顯式聲明來編譯JSP。接下來咱們根據Java Web的約定建立文件目錄並在application.properties配置文件中配置搜索視圖即JSP的位置。spring
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
接下來咱們建立HelloWorld的控制器,以下:apache
package com.demo.springboot.controllers; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloWorldController { @RequestMapping(value = "/greeting", method = RequestMethod.GET) public String helloWorld(@RequestParam String name, ModelMap model) { model.put("greeting", "Hello:" + name + " from Spring 4.3x MVC"); return "welcome"; } }
經過@Controller註解將該類標記爲spring bean,它能夠根據在類上指定的映射或各個控制器方法來處理不一樣的HTTP請求,而@RequestMapping註解用於將Web請求映射到特定的處理程序類和/或處理程序方法,註解@RequestMapping具備幾個屬性[value,method,params,..],可用於將映射範圍縮小到更具體的選擇,方法附加了帶有value屬性的映射聲明,將知足/greeting格式的請求,屬性方法用於指定此方法能夠服務的HTTP請求的類型,若是映射不包含「方法」屬性,則該映射的控制器方法將在該映射的URL上處理全部類型的請求。註解@RequestParam用於接收請求參數且該參數是來自查詢字符串,ModelMap是一個Map實現,就是將值進行綁定從而視圖可以進行獲取,查看helloWorld方法的返回值,這些值將帶有後綴,並以在視圖解析器中定義的後綴和前綴做爲前綴,以造成實際的視圖文件名。最後咱們建立welcome.jsp的視圖文件,以下:tomcat
<%@ page contentType="text/html;" pageEncoding="utf-8" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
${greeting}!
</body>
</html>
注意在該視圖頁上要聲明頁面編碼,不然對於後臺的中文在視圖中將顯示亂碼,以下圖中的問號:springboot
本節咱們開始了Java Web的學習,並以最終視圖輸出Hello World而結束,小菜天天積累一點,感謝您的閱讀,咱們下節見。mvc