SpringBoot2.x系列教程25--SpringBoot中整合Servlet、Filter和listener

简介: 前言在学习Servlet、Filter、Listener的时候,我们知道可以有2种注册方式,即可以在web.xml文件中注册,也可以利用对应的注解实现注册。那么在SpringBoot中,如果我们还要创建使用Servlet、Filter、Listener这3个类,那么该如何使用呢?今天 壹哥 就带大家学习在SpringBoot中如何注册使用Servlet、Filter、Listener这3个类。一. Spring Boot中注册配置Servlet,Filter和Listener1. 概述我们在Spring Boot中使用内嵌的Servlet容器时,可以通过使用Spring Bean的

前言

在学习Servlet、Filter、Listener的时候,我们知道可以有2种注册方式,即可以在web.xml文件中注册,也可以利用对应的注解实现注册。那么在SpringBoot中,如果我们还要创建使用Servlet、Filter、Listener这3个类,那么该如何使用呢?

今天 壹哥 就带大家学习在SpringBoot中如何注册使用Servlet、Filter、Listener这3个类。

一. Spring Boot中注册配置Servlet,Filter和Listener

1. 概述

我们在Spring Boot中使用内嵌的Servlet容器时,可以通过使用Spring Bean的方式,或者扫描Servlet组件的方式来注册Servlet,Filter及Listener(比如HttpSessionListener)。

Spring Boot 为我们提供了ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean 三个类分别用来注册 Servlet、Filter、Listener,接下来我就通过代码给大家讲解在SpringBoot中如何注册Servlet。

2. 示例代码

我们可以先看一段示例代码,对用ServletRegistrationBean类来实现Servlet注册有个大致印象。

importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
/*** @author 一一哥*/publicclassRegisterServletextendsHttpServlet {
@Overrideprotectedvoidservice(HttpServletRequestreq, HttpServletResponseresp) throwsIOException {
Stringname=getServletConfig().getInitParameter("name");
Stringsex=getServletConfig().getInitParameter("sex");
resp.getOutputStream().println("name is "+name);
resp.getOutputStream().println("sex is "+sex);
    }
}
@BeanpublicServletRegistrationBeanregisterServlet() {
ServletRegistrationBeanservletRegistrationBean=newServletRegistrationBean(
newRegisterServlet(), "/registerServlet");
servletRegistrationBean.addInitParameter("name", "一一哥");
servletRegistrationBean.addInitParameter("sex", "man");
returnservletRegistrationBean;
}

3. Servlet 3.0组件扫描注册

Servlet 3.0 之前,Servlet、Filter、Listener 这些组件都需要在 web.xml 中进行配置,3.0 之后不再需要 web.xml 这个配置文件了,所有的组件都可以通过代码或者注解来达到注册的目的。Servlet 3.0 提供了3个注解来代替:

  • @WebServlet注解代替 Servlet 的xml配置方式;
  • @WebFilter注解代替 Filter 的xml配置;
  • @WebListener注解代替 Listener 的xml配置。

二. Spring Boot中Servlet的注册使用

接下来我会带大家学习在Spring Boot中如何进行Servlet的注册使用,本文主要是讲解两种实现方式,即组件注册方式和注解实现方式。

1. 创建Web项目

首先我会创建一个Spring Boot的Web项目,添加Web相关依赖包,具体过程略,请结合之前的章节,并参考下图创建。

2. 组件注册方式

然后我先讲解组件注册的方式,看以这种方式如何实现Servlet的注册使用。

2.1 创建UserServlet类

这里我随便创建一个UserServlet类,继承HttpServlet。

packagecom.yyg.boot.web;
importlombok.extern.slf4j.Slf4j;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
/*** @Author 一一哥Sun* @Date Created in 2020/3/29* @Description Description*/@Slf4jpublicclassUserServletextendsHttpServlet {
@OverrideprotectedvoiddoGet(HttpServletRequestreq, HttpServletResponseresp) throwsServletException, IOException {
log.warn("第一种Servlet实现方式-->组件注册方式");
resp.getWriter().write("success");
    }
}

2.2 注册Servlet组件

我们可以在启动类Application或者别的配置类中,利用ServletRegistrationBean来注册刚才创建的UserServlet组件。

packagecom.yyg.boot;
importcom.yyg.boot.web.UserServlet;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.boot.web.servlet.ServletRegistrationBean;
importorg.springframework.context.annotation.Bean;
/*** @Author 一一哥Sun* @Date Created in 2020/3/29* @Description Description*/@SpringBootApplicationpublicclassServletApplication {
publicstaticvoidmain(String[] args){
SpringApplication.run(ServletApplication.class,args);
    }
/***ServletRegistrationBean:注册创建的Servlet类*/@BeanpublicServletRegistrationBeangetServletRegistrationBean(){
ServletRegistrationBeanbean=newServletRegistrationBean(newUserServlet());
//url映射路径bean.addUrlMappings("/user");
returnbean;
    }
}

2.3 启动程序进行测试

接下来我们启动程序,在浏览器输入如下地址:
http://localhost:8080/user

这时候可以看到控制台中成功地输出了如下信息。

而且浏览器中也显示了如下内容:

这就说明我们的UserServlet成功的注册完毕。

3. 注解注册方式

然后我再以注解的方式来讲解如何注册使用Servlet。

3.1 创建OrderServlet类

这里我创建一个OrderServlet类,在该类上添加@WebServlet注解。

packagecom.yyg.boot.web;
importlombok.extern.slf4j.Slf4j;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
/*** @Author 一一哥Sun* @Date Created in 2020/3/29* @Description 第二种实现Servlet的方式, 通过@WebServlet注解来实现注册.*/@Slf4j@WebServlet(name="OrderServlet", urlPatterns="/order")
publicclassOrderServletextendsHttpServlet {
@OverrideprotectedvoiddoGet(HttpServletRequestreq, HttpServletResponseresp) throwsServletException, IOException {
log.warn("第2种Servlet实现方式-->注解实现方式");
resp.getWriter().write("success");
    }
}

3.2 添加@ServletComponentScan注解

注意,如果使用的是 Spring Boot 内嵌的Web服务器,需要在配置类上面添加额外的 @ServletComponentScan 注解来开启 Servlet 组件扫描功能。如果使用的是独立的Tomcat服务器,则不需要添加,它会使用服务器内部的自动发现机制。

本案例中需要添加@ServletComponentScan注解,扫描Servlet类所在的包。

packagecom.yyg.boot;
importcom.yyg.boot.web.UserServlet;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.boot.web.servlet.ServletComponentScan;
importorg.springframework.boot.web.servlet.ServletRegistrationBean;
importorg.springframework.context.annotation.Bean;
/*** @Author 一一哥Sun* @Date Created in 2020/3/29* @Description Description*/@SpringBootApplication@ServletComponentScan(basePackages="com.yyg.boot.web")
publicclassServletApplication {
publicstaticvoidmain(String[] args){
SpringApplication.run(ServletApplication.class,args);
    }
}

3.3 启动程序进行测试

然后我们启动程序,在浏览器输入如下地址:
http://localhost:8080/user

这样就可以看到控制台中成功输出如下信息:

浏览器中也会显示如下内容:

这样,我就用注解的方式注册使用了一个Servlet。

三. Filter与Listener的使用

另外Filter、Listener的使用,与Servlet的用法类似,在此我就不再进行一一讲解了,感兴趣的朋友可以自行尝试。

结语

这样,我们就掌握了如何在SpringBoot中注册使用Servlet、Filter、Listener了,你学会了吗?

相关文章
|
24天前
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
113 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
25天前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
102 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
2月前
|
JavaScript Java 容器
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
本文简要回顾了Servlet过滤器Filter的概念和使用,通过实例演示了如何创建过滤器以过滤请求字符编码,并解释了在web.xml中配置过滤器时使用`/`、`/*`和`/**`的区别。
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
|
24天前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
45 2
Springboot+shiro,完整教程,带你学会shiro
|
25天前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
97 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
24天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
166 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
24天前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
69 1
springboot的缓存和redis缓存,入门级别教程
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
25天前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
51 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......