標籤:mave lib xml檔案 mapping lan net enc mod cli
直接使用SpringMVC時配置訪問jsp頁面時很容易的事,但是由於spring Boot使用內嵌的servlet容器,所以對jsp的支援不是很好,而且也不建議使用jsp,但是為了滿足這種返回jsp頁面的需求同時又想享受Spring Boot免去各種配置的麻煩,經本各種實驗,有兩種方法可以供參考,在說明以下兩種方法前首先聲明所用的依賴如下:
<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應用開發的,在匯入之後會自動匯入內嵌的servlet容器,比如Tomcat
,但是要注意的是此時並沒有能解析jsp頁面的jasper模組,由此可以看出內嵌的servlet容器
並不是全部匯入的,而是分模組部分匯入的,Jasper需要我們手動匯入。如果還要使用jstl庫,也可以繼續匯入:
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId></dependency>
1、在工程中返回jsp頁面
由於Spring Boot的目錄結構和普通的Web應用的目錄結構是不同的,為了返回jsp,首先要建立對應的web應用程式目錄,在/src/main
下建立WEB-INF/jsp
目錄,形成/src/main/WEB-INF/jsp
,然後將我們的jsp頁面放在下面即可。
然後再繼續設定檔,如下:
application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp
或者application.yml
spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp
這與只使用SpringMVC時的配置十分類似,而且可以看出使用的是InternalResourceViewResolver
視圖解析器。使用代碼測試一下:
@Controller
public class SpringBootController {
@RequestMapping("/index")
public String index(){
return "main";
}
}
以上會返回/src/main/WEB-INF/jsp/main.jsp
視圖。
但是,返回頁面只是在eclipse這種IDE中直接運行Spring Boot程式時會起作用,如果打包成jar包後是不會包含我們建立的WEB-INF/jsp
目錄的,也就沒有我們定義的jsp頁面,所以會返回404狀態代碼
,所以這種方法實際上是沒有什麼意義的,但可以解決:
①將打成jar包的方式改為war包
②修改pom.xml檔案配置
<!-- 忽略無web.xml警告 --><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin>
<resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes></resource> <!-- 打包時將jsp檔案拷貝到META-INF目錄下--> <resource> <!-- 指定resources外掛程式處理哪個目錄下的資源檔 --> <directory>src/main/webapp</directory> <!--注意此次必須要放在此目錄下才能被訪問到--> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource>
③靜態檔案存放目錄src/main/resources,預設的靜態資源檔案位置是/static下
jsp直接引用靜態檔案
<script src="jquery-3.1.1.min.js" type="text/javascript"></script><script src="main.js" type="text/javascript"></script>
④打成war包後運行,一切正常
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
就可以愉快地部署應用程式了,順便說一句,此時在jsp頁面也可以使用EL運算式擷取Model中儲存的資料了。
【web】支援jsp+mvc訪問