个人感觉这篇文档写的没有什么意义,但是终究有的时候需要面对一些新手,他们还是比较JSP的,所以胖先森还是将这篇文档整理一下SpringBoot默认不支持JSP,因为jsp相对于一些模板引擎,性能都比较低,官方推荐使用thymeleaf,如果想在项目中使用,需要进行相关初始化工作。
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级别。(防止冲突)
我的疑问:这里我部署到外部的Tomcat之后,是访问成功了,但是每次修改JSP的时候,我都需要重启JSP,我个人感觉很头疼,不知道是不是有解决方案,百度了一下,并没有找到我想要的答案!
3.最后一句话
既然Spring boot不推荐使用jsp,那只能换成thymeleaf了,当然其他的比如freemarker也可以选。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。