序言:

SpringBoot默认不支持JSP,如果想在项目中使用,需要进行相关初始化工作。为了方便大家更好的开发,本案例可直接作为JSP开发的脚手架工程 SpringBoot+War+JSP .

常见问题:

1.修改JSP需重启才能生效:

在生产环境中,SpringBoot重新编译JSP可能会导致较大的性能损失,并且很难追查到问题根源,所以在最新的版本中,官方已经默认关闭此功能,详见JspServlet类的初始化参数。那么,如何解决这个问题呢?推荐两个解决办法:1.使用devtools 2. 添加配置(server.servlet.jsp.init-parameters.development=true)

2.各种404:

1.必须导入嵌入式容器和JASPER解析器 2.必须创建webapp目录

正文:SpringBoot 添加对JSP的支持

1. 搭建脚手架

首先使用 Spring Initializr构建工程,其中源码和静态资源目录默认生成,这里只需手工添加Web资源目录。如图:

2. 在pom.xml 添加相关依赖

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.hehe

springboot-web-jsp

0.0.1-SNAPSHOT

war

org.springframework.boot

spring-boot-starter-parent

2.0.0.M4

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

org.apache.tomcat.embed

tomcat-embed-jasper

javax.servlet

jstl

org.springframework.boot

spring-boot-devtools

org.springframework.boot

spring-boot-starter-test

test

spring-snapshots

http://repo.spring.io/snapshot

true

spring-milestones

http://repo.spring.io/milestone

spring-snapshots

http://repo.spring.io/snapshot

spring-milestones

http://repo.spring.io/milestone

org.springframework.boot

spring-boot-maven-plugin

3. 启动类添加Servlet支持

@SpringBootApplication

public class SpringbootWarJspApplication extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(SpringbootWarJspApplication.class);

}

public static void main(String[] args) {

SpringApplication.run(SpringbootWarJspApplication.class, args);

}

}

4. 添加MVC映射

application.yml 配置如下:

spring:

mvc:

view:

prefix: /WEB-INF/views/ # Read From Web Resources Dir

suffix: .jsp

5. 编写JSP页面

在 WEB-INF/views 目录下新建一个JSP文件

Hello JSP !!

![](${pageContext.servletContext.contextPath}/doge.gif)

6.启动项目

启动方式1:在IDE启动WebJspApplication,然后打开项目地址。

启动方式2:部署到外置Tomcat,启动完成后,打开项目地址。这里需要注意的是,使用外置Tomcat部署的时候,需要将嵌入式容器调整为provided级别。(防止冲突)

org.springframework.boot

spring-boot-starter-tomcat

provided

org.apache.tomcat.embed

tomcat-embed-jasper

provided

7.单元测试

@RunWith(SpringRunner.class)

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)

@DirtiesContext

public class WebJspApplicationTest {

@Autowired

private TestRestTemplate restTemplate;

@Test

public void testJspWithEl() throws Exception {

ResponseEntity entity = restTemplate.getForEntity("/", String.class);

assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);

assertThat(entity.getBody()).contains("Hello JSP");

}

}

全文至此,有疑问的小伙伴可在评论下方进行交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

springboot的jsp应该放在哪_详解SpringBoot 添加对JSP的支持(附常见坑点)相关推荐

  1. springboot的jsp应该放在哪_七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置...

    1.创建JSP目录 在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图: 然后再改文件夹下面我们创建JSP文件: 大家在使用IDEA 的new菜单创建JSP ...

  2. java h5模板引擎_详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎

    序言: Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+ ...

  3. java restful接口测试_详解SpringBoot restful api的单元测试

    现在我们来利用Spring Boot来构建一个RestFul API,具体如下: 1.添加Springboot测试注解 @RunWith(SpringRunner.class) @SpringBoot ...

  4. java xml快捷注释_详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求. 一 ...

  5. jsp去掉input边框_详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)...

    前两天在开发在微信访问的HTML5页面,里面有个订单查询要选择时间,刚开始使用的输入框,没加任何的样式,效果是白色的背景再加上边框很丑,完全与整个背景不协调. 刚开始设置了输入框背景色透明(backg ...

  6. java获取mysql数据定时执行_详解SpringBoot 创建定时任务(配合数据库动态执行)...

    序言:创建定时任务非常简单,主要有两种创建方式:一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer). 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库 ...

  7. django python3 异步_详解配置Django的Celery异步之路踩坑

    人生苦短,我用python. 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上.今天奶牛来分享自己今天踩的一个坑 ...

  8. mysql 添加外键 完整_详解mysql添加外键的方法

    本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...

  9. 详解SpringBoot应用跨域访问解决方案

    详解SpringBoot应用跨域访问解决方案 参考文章: (1)详解SpringBoot应用跨域访问解决方案 (2)https://www.cnblogs.com/zimug/p/11832737.h ...

最新文章

  1. Linux环境编译安装Mysql以及PHP中文乱码解决
  2. 【机器学习】机器学习中的异常值的识别和处理
  3. onbeforeunload与onunlond的区别
  4. 设计模式学习笔记(十八:模板方法模式)
  5. em在聊天中是什么意思_被神化的EM菌,该怎样正确使用?
  6. Java编程思想基本介绍
  7. 机器学习实战-Python机器学习项目实战
  8. mac下安装pyaudio
  9. 【PIE-Engine Studio学习笔记06】图像分类——监督分类
  10. Minecraft mod制作简易教程(五)——本地化和国际化
  11. 【Java面试系列】ElasticSearch面试题
  12. icraft服务器网页图片,iCraft家族添新一代顶级显卡
  13. 傲梅轻松备份linux,傲梅轻松备份官方下载_傲梅轻松备份最新版_傲梅轻松备份5.7免费版-华军软件园...
  14. 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
  15. C++语言99个常见编程错误 常见错误7:无视基础语言的精妙之处
  16. 3.用js实现关闭淘宝二维码
  17. RabbitMQ与PHP应用
  18. 【Python CUDA版】河北工业大学计算机图像处理实验五:图像分割
  19. 怎么在网页上嵌入新浪微博页面
  20. 网络营销课程带你解读:什么是互联网

热门文章

  1. LinkedList 真的是查找慢增删快?
  2. 如何干掉恶心的 SQL 注入?
  3. 如何在Spring Boot中玩转智能合约【修订版】
  4. linux内核网络初始化,Linux内核--网络栈实现分析
  5. 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
  6. mxnet制作人脸识别训练集
  7. 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
  8. python 笛卡尔积,排列,组合
  9. face track
  10. Flask入门之Jinjia模板的一些语法