文章目錄
- Spring Boot 項目中使用 JSP
- 項目結構
- 引入依賴包
- 編寫頁面和后臺
- 運行
- 方式一:Maven 命令運行
- 方式二:在 IDEA 中運行
- 方式三:打 war 包部署運行
Spring Boot 項目中使用 JSP
在 Spring Boot 項目中不是不可以使用 JSP 。想在 Spring Boot 中使用 JSP,需要滿足一些特殊要求。
項目結構
Spring Boot 項目想要支持 JSP,其項目結構必須如下:
spring-boot-jsp
├── pom.xml
└── src├── main│ ├── java│ ├── resouces│ └── webapp│ └── WEB-INF│ └── jsp│ └── welcome.jsp└── test
在配置文件 application.properties 中進行配置:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
-
spring.mvc.view.prefix 指明 jsp 文件在 webapp 下的哪個目錄
-
spring.mvc.view.suffix 指明 jsp 以什么樣的后綴結尾
引入依賴包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId>
</dependency>
<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId>
</dependency>
-
spring-boot-starter-web 包依賴了 spring-boot-starter-tomcat,因此,后者不再需要單獨配置;
-
jstl 是一個 JSP 的 jstl 標簽庫;
-
tomcat-embed-jasper 主要用來支持 JSP 的解析和運行。
編寫頁面和后臺
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
Time: ${time}
<br>
Message: ${message}
</body>
</html>
@Controller
public class WelcomeController {@GetMapping("/")public String welcome(Model model) {model.addAttribute("time", new Date());model.addAttribute("message", "hello world");return "welcome";}}
運行
方式一:Maven 命令運行
cmd 進入項目根路徑下,執行:
mvn clean spring-boot:run
補充:IDEA 的 Maven 工具窗口中,有個 M
圖標,通過點擊它在彈出的窗口中可直接手動執行 maven 命令。
方式二:在 IDEA 中運行
如果像其他項目一樣,直接在 IDEA 中通過 main 方法來啟動項目,在訪問測試的時候會出現 404 not found
。
這是因為 Spring Boot JSP 項目需要額外進行一個設置:選擇 Edit Configurations
選項,打開 Configuration
,為 Working directory
賦值為項目的根目錄。
方式三:打 war 包部署運行
-
step 1 :在 pom.xml 里設置打包格式為
war
。<packaging>war</packaging>
-
step 2:排除內嵌的 Tomcat 依賴,避免 jar 包沖突。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 排除內置容器。導出成 war 包可以讓外部容器運行 spring-boot 項目 --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions> </dependency>
-
step 3:添加 Servlet 的支持
Spring Boot 項目必須實現 SpringBootServletInitializer 接口的 .configure() 方法才能讓外部容器運行 Spring Boot 項目。
在啟動類同目錄下創建 ServletInitializer 類:
public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(JspApplication.class);}}
-
step 4:maven 命令打包
在項目根目錄下執行:
mvn clean package
-
step 5:發布運行
將項目 target 目錄下的
.war
包拷貝到 tomcat 的webapps
目錄下,運行 tomcat 的bin
目錄下的startup.bat
啟動 tomcat 。在瀏覽器中訪問即可。