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