1.問題列表
-
修改JSP需重啓才能生效
在生產環境中,SpringBoot重新編譯JSP可能會導致較大的性能損失,並且很難追查到問題根源,所以在最新 的版本中,官方已經默認關閉此功能,詳見JspServlet類的初始化參數。
- 使用devtools(我使用的這種方式)
- 添加配置
server.servlet.jsp.init-parameters.development=true
-
如何避免各種404
- 導入Tomcat+JASPER+JSTL
- 必須創建webapp目錄
2.搭建步驟說明
A. 通過腳手架搭建
首先使用 Spring Initializr 構建工程,選擇war類型進行構建,整體結構圖如下:
請注意我們選中的是war的選項
B. 添加依賴關係
<!--配置jsp jstl的支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--對jsp的支持-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- 熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--Provided start-->
<!--War包部署到外部的Tomcat中已經包含了這些,所以需要添加以下依賴 否則會和內嵌的Tomcat 容器發生衝突 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
C. 修改application.properties
#如果按照一般web工程將頁面放在src/main/webapp/WEB-INF/jsp/,則配置前綴
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
# 配置Tomcat編碼
server.tomcat.uri-encoding=UTF-8
server.port=8001
server.servlet.context-path=/boot
D.新建JSP頁面
- 在src/main下創建webapp/WEB-INF/jsp文件夾。
- 在jsp文件夾下創建hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello,${requestScope.name}
</body>
</html>
E. 創建Controller
package com.hanpang.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping({"/","/os01"})
public String test01(Model model){
model.addAttribute("name","胖先森");
return "jsp/hello";
}
}
F.啓動項目
- 啓動方式1:在IDE啓動Demo02BootApplication,然後打開項目地址。
-
啓動方式2:部署到外置Tomcat,啓動完成後,打開項目地址。這裏需要注意的是,使用外置Tomcat部署的時候,需要將嵌入式容器調整爲provided級別。(防止衝突)