我的感受这篇文档写的没有什么意义,可是终究有的时候须要面对一些新手,他们仍是比较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