springboot的jsp应该放在哪_详解SpringBoot 添加对JSP的支持(附常见坑点)
序言:
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的支持(附常见坑点)相关推荐
- springboot的jsp应该放在哪_七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置...
1.创建JSP目录 在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图: 然后再改文件夹下面我们创建JSP文件: 大家在使用IDEA 的new菜单创建JSP ...
- java h5模板引擎_详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎
序言: Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+ ...
- java restful接口测试_详解SpringBoot restful api的单元测试
现在我们来利用Spring Boot来构建一个RestFul API,具体如下: 1.添加Springboot测试注解 @RunWith(SpringRunner.class) @SpringBoot ...
- java xml快捷注释_详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)
序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求. 一 ...
- jsp去掉input边框_详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)...
前两天在开发在微信访问的HTML5页面,里面有个订单查询要选择时间,刚开始使用的输入框,没加任何的样式,效果是白色的背景再加上边框很丑,完全与整个背景不协调. 刚开始设置了输入框背景色透明(backg ...
- java获取mysql数据定时执行_详解SpringBoot 创建定时任务(配合数据库动态执行)...
序言:创建定时任务非常简单,主要有两种创建方式:一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer). 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库 ...
- django python3 异步_详解配置Django的Celery异步之路踩坑
人生苦短,我用python. 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上.今天奶牛来分享自己今天踩的一个坑 ...
- mysql 添加外键 完整_详解mysql添加外键的方法
本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...
- 详解SpringBoot应用跨域访问解决方案
详解SpringBoot应用跨域访问解决方案 参考文章: (1)详解SpringBoot应用跨域访问解决方案 (2)https://www.cnblogs.com/zimug/p/11832737.h ...
最新文章
- Linux环境编译安装Mysql以及PHP中文乱码解决
- 【机器学习】机器学习中的异常值的识别和处理
- onbeforeunload与onunlond的区别
- 设计模式学习笔记(十八:模板方法模式)
- em在聊天中是什么意思_被神化的EM菌,该怎样正确使用?
- Java编程思想基本介绍
- 机器学习实战-Python机器学习项目实战
- mac下安装pyaudio
- 【PIE-Engine Studio学习笔记06】图像分类——监督分类
- Minecraft mod制作简易教程(五)——本地化和国际化
- 【Java面试系列】ElasticSearch面试题
- icraft服务器网页图片,iCraft家族添新一代顶级显卡
- 傲梅轻松备份linux,傲梅轻松备份官方下载_傲梅轻松备份最新版_傲梅轻松备份5.7免费版-华军软件园...
- 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
- C++语言99个常见编程错误 常见错误7:无视基础语言的精妙之处
- 3.用js实现关闭淘宝二维码
- RabbitMQ与PHP应用
- 【Python CUDA版】河北工业大学计算机图像处理实验五:图像分割
- 怎么在网页上嵌入新浪微博页面
- 网络营销课程带你解读:什么是互联网
热门文章
- LinkedList 真的是查找慢增删快?
- 如何干掉恶心的 SQL 注入?
- 如何在Spring Boot中玩转智能合约【修订版】
- linux内核网络初始化,Linux内核--网络栈实现分析
- 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
- mxnet制作人脸识别训练集
- 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
- python 笛卡尔积,排列,组合
- face track
- Flask入门之Jinjia模板的一些语法