Spring boot學習(六) 之響應jsp頁面
前言
spring-boot 支援多種模版引擎包括:
-
FreeMarker
-
Groovy
-
Thymeleaf
-
Velocity
-
Jsp
其中官方是推薦使用Thymeleaf
,而Jsp
官方不推薦,原因是spring-boot建立的專案在src/main/resources
下有個templates
目錄用於放模板檔案,而jsp
頁面是放在webapp目錄下,spirng-boot沒有這樣的目錄。但是企業用jsp用的很多,所以還是可以學習一下的。
正文
在 pom.xml
中新增依賴
<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> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
在 application.properies
中加入如下配置,指定jsp頁面的目錄和字尾
#配置要獲取的資訊 com.mlin.hello=hello,mlin # 頁面預設字首目錄 spring.mvc.view.prefix=/WEB-INF/jsp/ # 響應頁面預設字尾 spring.mvc.view.suffix=.jsp
新建檔案 UserController.java
,新增如下程式碼:
@Controller public class UserController { @Value("${com.mlin.hello}") privateString hello; //獲取配置檔案的資訊:mlin,hello @RequestMapping("/index") public ModelAndView index(){ // 預設會去尋找配置檔案配置的 spring.view.prefix 目錄下的頁面 // 即/WEB-INF/jsp/index.jsp ModelAndView modelAndView = new ModelAndView("index"); modelAndView.addObject("msg",this.hello); return modelAndView; } }
在 src/main
下面建立 webapp/WEB-INF/jsp
目錄存放jsp頁面,新建 index.jsp
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Spring Boot jsp Sample</title> </head> <body> Message: ${msg} </body> </html>
把 pom.xml
檔案中的jar改成war,這樣才可以支援jsp
<packaging>war</packaging>
啟動服務,瀏覽器輸入: http://localhost:8080/index

1.png
總結
在實踐過程中發現如下問題
當引入的依賴 tomcat-embed-jasper
指定範圍是 provide
的時候,右鍵啟動類一直報404找不到頁面錯誤,不指定則執行正常。尋找資料發現前輩們的總結如下:
指定provided時:
spring-boot:run ava -jar xxxxx.jar java -jar xxxxx.war
不指定provided時
spring-boot:run java -jar xxxxx.jar java -jar xxxxx.war
原創作者:夢凌小樣
作品連結: ofollow,noindex">https://www.jianshu.com/p/891c3e401e2f 【原創不易,轉載請註明出處,感謝理解】
一位愛生活,愛創作,愛分享,愛自己的90後女程式員一枚,記錄工作中的點點滴滴,一起學習,共同進步,期待能和優秀的您交上朋友