我的感受這篇文檔寫的沒有什麼意義,可是終究有的時候須要面對一些新手,他們仍是比較JSP的,因此胖先森仍是將這篇文檔整理一下html
SpringBoot默認不支持JSP,由於jsp相對於一些模板引擎,性能都比較低,官方推薦使用thymeleaf,若是想在項目中使用,須要進行相關初始化工做。java
修改JSP需重啓才能生效web
在生產環境中,SpringBoot從新編譯JSP可能會致使較大的性能損失,而且很難追查到問題根源,因此在最新 的版本中,官方已經默認關閉此功能,詳見JspServlet類的初始化參數。spring
server.servlet.jsp.init-parameters.development=true
如何避免各類404apache
首先使用 Spring Initializr 構建工程,選擇war類型進行構建,總體結構圖以下:tomcat
請注意咱們選中的是war的選項mvc
<!--配置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>
複製代碼
#若是按照通常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
複製代碼
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello,${requestScope.name}
</body>
</html>
複製代碼
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";
}
}
複製代碼
啓動方式1:在IDE啓動Demo02BootApplication,而後打開項目地址。app
啓動方式2:部署到外置Tomcat,啓動完成後,打開項目地址。這裏須要注意的是,使用外置Tomcat部署的時候,須要將嵌入式容器調整爲provided級別。(防止衝突)webapp
**個人疑問:**這裏我部署到外部的Tomcat以後,是訪問成功了,可是每次修改JSP的時候,我都須要重啓JSP,我我的感受很頭疼,不知道是否是有解決方案,百度了一下,並無找到我想要的答案!jsp
既然Spring boot不推薦使用jsp,那隻能換成thymeleaf了,固然其餘的好比freemarker也能夠選。