直接使用SpringMVC時(shí)配置訪問jsp頁(yè)面時(shí)很容易的事,但是由于Spring Boot使用內(nèi)嵌的servlet容器,所以對(duì)jsp的支持不是很好,而且也不建議使用jsp,但是為了滿足這種返回jsp頁(yè)面的需求同時(shí)又想享受Spring Boot免去各種配置的麻煩,經(jīng)本屌絲各種試驗(yàn),有兩種方法可以供參考,在說明以下兩種方法前首先聲明所用的依賴如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
spring-boot-starter-web
是用來(lái)支持web應(yīng)用開發(fā)的,在導(dǎo)入之后會(huì)自動(dòng)導(dǎo)入內(nèi)嵌的servlet容器,比如Tomcat
,但是要注意的是此時(shí)并沒有能解析jsp頁(yè)面的jasper模塊,由此可以看出內(nèi)嵌的servlet容器
并不是全部導(dǎo)入的,而是分模塊部分導(dǎo)入的,Jasper需要我們手動(dòng)導(dǎo)入。如果還要使用jstl庫(kù),也可以繼續(xù)導(dǎo)入:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
1、在工程中返回jsp頁(yè)面
由于Spring Boot的目錄結(jié)構(gòu)和普通的Web應(yīng)用的目錄結(jié)構(gòu)是不同的,為了返回jsp,首先要建立對(duì)應(yīng)的web應(yīng)用程序目錄,在/src/main
下建立WEB-INF/jsp
目錄,形成/src/main/WEB-INF/jsp
,然后將我們的jsp頁(yè)面放在下面即可。
然后再繼續(xù)配置application.properties
文件,如下:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
這與只使用SpringMVC時(shí)的配置十分類似,而且可以看出使用的是InternalResourceViewResolver
視圖解析器。使用代碼測(cè)試一下:
@Controller
public class SpringBootController {
@RequestMapping("/")
public String index(){
return "welcome";
}
}
以上會(huì)返回/src/main/WEB-INF/jsp/welcome.jsp
視圖。
但是,返回頁(yè)面只是在eclipse這種IDE中直接運(yùn)行Spring Boot程序時(shí)會(huì)起作用,如果打包成jar包后是不會(huì)包含我們創(chuàng)建的WEB-INF/jsp
目錄的,也就沒有我們定義的jsp頁(yè)面,所以會(huì)返回404狀態(tài)碼
,所以這種方法實(shí)際上是沒有什么意義的,個(gè)人感覺(沒用你還說什么!!只是提出一種解決方式。。)
2、在打包后返回jsp頁(yè)面
如果想在打包后使用java -jar ***.jar
來(lái)運(yùn)行代碼,就要使用如下這種方法,在/src/main/resources/
中建立如下的目錄META-INF/resources/WEB-INF/jsp
,然后application.properties
的配置和第一種方法相同。但是這樣在使用mvn package
打包后會(huì)包含上面建立的目錄,如下:
這時(shí)使用java -jar SpringBootTemplate-0.0.1-SNAPSHOT.jar
就可以愉快地部署應(yīng)用程序了,順便說一句,此時(shí)在jsp頁(yè)面也可以使用EL表達(dá)式獲取Model中存儲(chǔ)的數(shù)據(jù)了。
相關(guān)文章:
</article>
</main>