Spring Boot 支持JSP

我的感受这篇文档写的没有什么意义,可是终究有的时候须要面对一些新手,他们仍是比较JSP的,因此胖先森仍是将这篇文档整理一下

SpringBoot默认不支持JSP,由于jsp相对于一些模板引擎,性能都比较低,官方推荐使用thymeleaf,若是想在项目中使用,须要进行相关初始化工做。html

1.问题列表

  • 修改JSP需重启才能生效java

    在生产环境中,SpringBoot从新编译JSP可能会致使较大的性能损失,而且很难追查到问题根源,因此在最新 的版本中,官方已经默认关闭此功能,详见JspServlet类的初始化参数。web

    • 使用devtools(我使用的这种方式)
    • 添加配置server.servlet.jsp.init-parameters.development=true
  • 如何避免各类404spring

    • 导入Tomcat+JASPER+JSTL
    • 必须建立webapp目录

2.搭建步骤说明

A. 经过脚手架搭建

首先使用 Spring Initializr 构建工程,选择war类型进行构建,总体结构图以下:apache

请注意咱们选中的是war的选项tomcat

项目结构图

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级别。(防止冲突)mvc

    个人疑问:这里我部署到外部的Tomcat以后,是访问成功了,可是每次修改JSP的时候,我都须要重启JSP,我我的感受很头疼,不知道是否是有解决方案,百度了一下,并无找到我想要的答案!

3.最后一句话

既然Spring boot不推荐使用jsp,那只能换成thymeleaf了,固然其余的好比freemarker也能够选。app

相关文章
相关标签/搜索