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