玩转 SpringBoot 2 快速整合 Servlet
前言
本文主要介绍如何在SpringBoot 2 中使用 Servlet 的快速搭建教程,阅读前需要你必须了解 Servlet 的基础使用以及如何搭建 SpringBoot 项目。
快速演示操作
第一步: 编写 Servlet 类并且在 Servlet 类上声明 @WebServlet 注解,并通过@WebServlet 注解 urlPatterns 属性来执行访问路径。具体代码如下:
这里通过获取所有用户信息的 Servlet 来进行演示。
@WebServlet(urlPatterns = "/user")
public class UserServlet extends HttpServlet{private static final long serialVersionUID = 1L;@Overridepublic void init() throws ServletException {}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {User user1 = new User("ljk1",18);User user2 = new User("ljk1",18);List<User> userList = new ArrayList<User>();userList.add(user1);userList.add(user2);String userListJson = JsonUtil.toJson(userList);resp.getWriter().write(userListJson);return ;}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doPost(req, resp);}@Overridepublic void destroy() {}}
第二步:通过 JavaConfig 方式将编写的 UserServlet 类注入到 Spring 的上下文中。
将我们自定义 Servlet 传入到 ServletRegistrationBean 的构造中,然后创建 ServletRegistrationBean Bean实例,具体代码如下:
@Configuration
public class WebApplicationConfig {@Beanpublic ServletRegistrationBean<UserServlet> userServlet(){return new ServletRegistrationBean<UserServlet>(new UserServlet());}
}
或者在启动类上声明 @ServletComponentScan 注解,具体代码如下:
@SpringBootApplication
@ServletComponentScan
public class SpringbootexamplesApplication {public static void main(String[] args) {SpringApplication.run(SpringbootexamplesApplication.class, args);}
}
JavaConfig 方式 或者声明@ServletComponentScan 方式选择一种即可。
用户代码:
public class User {private String name;private Integer age;public User(String name, Integer age) {super();this.name = name;this.age = age;}//省略 getter and setter 方法}
用户集合转换Json 对象的工具类具体代码如下:
public class JsonUtil {private static Gson gson = null;static {if (gson == null) {gson= new GsonBuilder().create();}}public static String toJson(Object object){return gson.toJson(object);}public static <T> T GsonToBean(String json,Class<T> clazz){return gson.fromJson(json, clazz);}
}
需要引入 Gson 依赖
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version>
</dependency>
测试
这里使用 PostMan 进行演示,访问 http://localhost:8080/sbe/user 。具体结果如下图所示:
小结
SpringBoot 中整合 Servlet步骤如下:
- 需要在Servlet 上声明 @WebServlet
- 在启动类上声明@ServletComponentScan注解或者将 Servlet 通过ServletRegistrationBean 进行包装然后通过 JavaConfig 方式将其注入到Spring上下文中。
代码示例
我本地环境如下:
- SpringBoot Version: 2.1.0.RELEASE
- Apache Maven Version: 3.6.0
- Java Version: 1.8.0_144
- IDEA:Spring Tools Suite (STS)
整合过程如出现问题可以在我的GitHub 仓库 springbootexamples 中模块名为 spring-boot-2.x-servlet 项目中进行对比查看
GitHub:https://github.com/zhuoqianmingyue/springbootexamples
参考文献
Springboot 系列(六)web 开发之拦截器和三大组件 By 雪漫士兵
玩转 SpringBoot 2 快速整合 Servlet相关推荐
- 玩转 SpringBoot 2 快速整合 | RESTful Api 篇
概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...
- 玩转 SpringBoot 2 快速整合 | JSP 篇
前言 JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面.作为Java技术系列的一部分,JSP技术可以快速开发独立 ...
- 玩转 SpringBoot 2 快速整合 Filter 注解版
前言 本文主要介绍如何在SpringBoot 2 中使用 Filter 的快速搭建教程,阅读前需要你必须了解 Filter 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 第一步: ...
- 玩转 SpringBoot 2 快速整合 Listener
前言 本文主要介绍如何在SpringBoot 2 中使用 Listener 的快速搭建教程,阅读前需要你必须了解 Listener 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 ...
- 玩转 SpringBoot 2 快速整合拦截器
概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器(HandlerInterceptor).使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInt ...
- 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)
概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...
- 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇
前言 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用 ...
- 玩转 SpringBoot 2 快速整合 Filter
概述 SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter .但是我们可以通过 javaConfig(@Configuration +@Bea ...
- 玩转 SpringBoot 2 快速整合 | FreeMarker篇
FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...
最新文章
- CentOS 配置epel源
- Linux 内核完成 urb: 完成回调处理者
- tcp三次握手四次挥手(及原因)详解
- Kubernetes 的2020年“野望”
- msSql 利用 xp_cmdshell 删除 创建目录
- Swift 将日期转化为字符串,显示上午还是下午
- 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
- axios跨域携带cookie_vue 本地调试跨域---带cookies(axios)
- 获取表单对象,得三种方法getElementById(), getElementsByName(), and getElementsByTagName() 和用法...
- R语言列表(list)与向量(numeric)的转换
- [English] notes
- Apache Zookeeper 集群环境搭建
- TCP异常终止(RESET报文)
- 动态加载执行 JS 文件、对话框 confirm 方法
- Mybatis 项目开发实际常用SQL笔记总结
- 【180629】VC++ QQ头像连连看游戏源码
- 用计算机进行废物回收,回收旧的显示器以进行废物利用
- ecshop后台首页mysql_ECSHOP后台自带数据库管理
- crypto-js前端解密工具
- 手机连接投影机的步骤_手机怎么连接投影仪?这几招实用
热门文章
- 在ECS系统中使用IJobChunk作业
- sublime html乱码,HTML5 sublime 编码出现乱码怎么处理
- OpenShift 4 - 对镜像进行合规扫描,加固应用镜像安全
- 从ASP.NET Boilerplate v5 +到ABP框架的迁移
- Vue 3 最新进展
- 11 月全球 Web 服务器调查报告:nginx 表现最佳
- azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF
- linux日志搜索关键词_linux中的实用技巧和快捷键总结
- c语言课本引言课后答案,C语言基础(01-引言及预备知识)作业题
- 怎么把matlab中的图导出,matlab的数据能保存到excel表格-如何将matlab 中输出的图形保存到Excel中去,详细点...