玩转 SpringBoot 2 快速整合 | JSP 篇
前言
JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面。
作为Java技术系列的一部分,JSP技术可以快速开发独立于平台的基于Web的应用程序。JSP技术将用户界面与内容生成分开,使设计人员能够在不改变底层动态内容的情况下更改整体页面布局。
对开发人员的好处
如果您是熟悉HTML的网页开发人员或设计人员,则可以:
使用JSP技术而不必学习Java语言:您可以使用JSP技术而无需学习如何编写Java scriplet。尽管不再需要scriptlet来生成动态内容,但仍然支持它们以提供向后兼容性。
扩展JSP语言:Java标记库开发人员和设计人员可以使用“简单标记处理程序”扩展JSP语言,该标记处理程序使用新的,更简单,更清晰的标记扩展API。这刺激了可用的可插拔,可重用标记库的数量不断增加,从而减少了编写功能强大的Web应用程序所需的代码量。
轻松编写和维护页面: JavaServer Pages标准标记库(JSTL)表达式语言现已集成到JSP技术中,并已升级为支持功能。现在可以使用表达式语言而不是scriptlet表达式。
——以上内容摘自自 Oracle 关于JSP的介绍 链接地址:https://www.oracle.com/technetwork/java/overview-138580.html
虽然现在 JSP基本已经淘汰,但是很多公司的老的项目还是在用 JSP 作为页面,通过阅读该篇博客,你将了解到如何在SpringBoot 中快速使用 JSP 简单操作。
SpringBoot 使用 JSP 操作步骤
第一步在 pom.xml 添加支持 JSP 视图的依赖,具体代码如下:
<!-- 非必选 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Provided 编译和测试的时候使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- 对jsp的支持的依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
第二步在 application.properties 配置文件中添加 JSP 相关配置信息,具体配置信息如下:
server.port=8080
server.servlet.context-path=/sbe
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
第三步创建 src/main/webapp 目录并在该目录创建 JSP。
添加JSP文件的路径位置如下图所示:

JSP 文件内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${welcome}
</body>
</html>
第四步创建访问 JSP 页面的 Controller。
package cn.lijunkui.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping()
public class JspController {
@RequestMapping("/helloworld")
public String toJps(Model model) {
model.addAttribute("welcome", "不建议使用jsp");
return "welcome";
}
}
测试
在游览器输入访问 JSP 页面的 Controller 的 URL:http://localhost:8080/sbe/helloworld 进行测试,测试结果如下:

小结
SpringBoot 使用 JSP 步骤如下:
- 引入 spring-boot-starter-tomcat 依赖 并且 scope为 provided
- 在 application.properties 配置文件中将视图设置成jsp
- 创建src/main/webapp 目录下创建 WEB-INF 目录并在该目录下创建 JSP 文件
- 创建访问 JSP 的 Controller
代码示例
具体代码示例请查看我的 GitHub 仓库 springbootexamples 中模块工程名: spring-boot-2.x-jsp 进行查看
Github:https://github.com/zhuoqianmingyue/springbootexamples
如果您对这些感兴趣,欢迎 star、或点赞给予支持!转发请标明出处!
参考文献
玩转 SpringBoot 2 快速整合 | JSP 篇的更多相关文章
- 玩转 SpringBoot 2 快速整合 | FreeMarker篇
FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...
- 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇
前言 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用 ...
- 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)
概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...
- 玩转 SpringBoot 2 快速整合拦截器
概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器 HandlerInterceptor.使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInte ...
- 玩转 SpringBoot 2 快速整合 Filter
概述 SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter .但是我们可以通过 JavaConfig(@Configuration +@Bea ...
- 玩转 SpringBoot 2 快速搭建 | RESTful Api 篇
概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...
- 玩转 SpringBoot 2 之整合 JWT 下篇
前言 在<玩转 SpringBoot 2 之整合 JWT 上篇> 中介绍了关于 JWT 相关概念和JWT 基本使用的操作方式.本文为 SpringBoot 整合 JWT 的下篇,通过解决 ...
- 使用Springboot + Gradle快速整合Mybatis-Plus
使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...
- 玩转 SpringBoot 2 之整合 JWT 上篇
前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合 JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术, ...
随机推荐
- jmh源码解析-整体架构
我理解的jmh运行架构图 生成字节码,字节码负责维护测试的状态和调用被测试的方法 默认在fork的进程中进行测试,可以配置多个fork进程,以减少误差 通过线程池,提交每个迭代的测试任务,任务执行后, ...
- Spring 5 新功能:函数式 Web 框架
英文:ARJEN POUTSMA 译文:debugging, 达尔文, 混元归一, leoxu, xufuji456 链接:oschina.net/translate/new-in-spring-5- ...
- Flutter学习笔记(16)--Scaffold脚手架、AppBar组件、BottomNavigationBar组件
如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 今天的内容是Scaffold脚手架.AppBar组件.BottomNavigationBa ...
- 聊一聊Java字符串的不可变
前言 在 Java 开发中 String (字符串)对象是我们使用最频繁的对象,也是很重要的对象.正是使用得如此频繁,String 在实现层面上不断进行优化,从 Java6 到 Java7,再到 Ja ...
- 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级
标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...
- SpringBoot:Java High Level REST Client 搜索 API
Springboot整合最新版elasticSearch参考之前的文章:SpingBoot:整合ElasticSearch 7.2.0 Search API SearchRequest用于与搜索文档, ...
- Python之变量、常量以及注释
Python之变量.常量以及注释 一.什么是变量 变量,是用于在内存中存放程序数据的容器,怎么理解呢? 计算机的最核心的功能j就是"计算",计算需要数据源,数据源存在在内存里,比如 ...
- 林大妈的CSS知识清单(一)添加样式
回顾CSS选择符,学习接入样式的更多方式. 一.选择符 1. 种类 ① 类型选择符:直接的HTML标签名,例如: body.p.div 等: ② 后代选择符:空格,例如: div p 选择div中的所 ...
- 一文看尽Java-Thread
一.前言 主要分成两部说起:Thread源码解读和常见面试题解答,废话不多说开始: 二.源码解读 首先看下构造函数,构造函数都是通过调用init方法对属性进行初始化,主要是对线程组.线程名字 ...
- shell操作钉钉机器人实现告警提醒
我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机APP的发展,很多告警开始发送到IM软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉 ...