賊煩的是,使用spring boot 創建web項目,然后我再idea下創建的,but 僅僅啟動spring boot的啟動類,就算整個項目都是好着的,就算是能夠進入controller中,也不能成功訪問到jsp頁面。很尷尬!也很無語!
好吧,開頭一句抱怨,下面全靠編~~~
=======================================================================================================
1.idea下spring boot創建web項目




剛創建完是下面這樣

當然,最后創建完的使用JSP的web項目可不是這個結構的。往下看。
2.pom.xml添加下面
<!--web 支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jsp頁面使用jstl標簽--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--用於編譯jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
上面這三個是spring boot項目創建使用jsp頁面的web項目必須的三個依賴
這里介紹下maven中scope依賴范圍的概念,因為后續涉及到這個會有問題。
依賴范圍就是用來控制依賴和三種classpath(編譯classpath,測試classpath、運行classpath)的關系,Maven有如下幾種依賴范圍:
- compile:編譯依賴范圍。如果沒有指定,就會默認使用該依賴范圍。使用此依賴范圍的Maven依賴,對於編譯、測試、運行三種classpath都有效。典型的例子是spring-code,在編譯、測試和運行的時候都需要使用該依賴。
- test: 測試依賴范圍。使用次依賴范圍的Maven依賴,只對於測試classpath有效,在編譯主代碼或者運行項目的使用時將無法使用此依賴。典型的例子是Jnuit,它只有在編譯測試代碼及運行測試的時候才需要。
- provided:已提供依賴范圍。使用此依賴范圍的Maven依賴,對於編譯和測試classpath有效,但在運行時候無效。典型的例子是servlet-api,編譯和測試項目的時候需要該依賴,但在運行項目的時候,由於容器以及提供,就不需要Maven重復地引入一遍。
3.創建webapp目錄,並創建jsp頁面在目錄下
注意創建的目錄層級關系
如果再創建jsp頁面的時候,不能右鍵直接創建的話,可以http://www.cnblogs.com/sxdcgaq8080/p/7676294.html


4.application.properties配置文件的完善
注意前綴 的值是 /WEB-INF/views/ 而不是 /WEB-INF/views
少一個/ 整個訪問的路徑就是不完整的。
spring.mvc.view.prefix = /WEB-INF/views/
spring.mvc.view.suffix = .jsp

因為webapp在剛剛上面創建jsp頁面的時候,已經被指定為classpath了,也就是根路徑了。

所以現在,這里配置了mvc的【view】視圖層前綴后綴,指定controller中尋找頁面就去/WEB-INF/views/ 下面去找.jsp文件了。
5.寫一個跳轉頁面的controller層


6.所以,最終項目的目錄結構是這個樣子的

哦哦,這里有一個web目錄,是可以刪掉的,不過刪不刪也無所謂,沒有多大的關系
7.最后一步,啟動並且能訪問
這里不是通過啟動類去啟動,而是需要通過spring-boot:run去啟動

右鍵 run 或者debug都可以
然后 啟動起來之后在瀏覽器訪問

是可以訪問到的。
8.還有就是,如果把用於編譯jsp的 這個插件的scope注解,也就是使用默認的scope
<!--用於編譯jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<scope>provided</scope>--> </dependency>
然后import 整個pom.xml文件之后。
再通過 啟動 啟動類的方式來啟動spring boot項目的話,也是可以訪問的到的【我把web目錄刪掉了】

通過啟動spring-boot:run的方式也可以訪問到。
=====================================================================================================
因為確實碰到很多小的點注意不到的地方,導致整個就是訪問不到,反正上面該羅列的都羅列出來了。
