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了,你学会了吗?

相关文章
|
JavaScript Java 容器
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
本文简要回顾了Servlet过滤器Filter的概念和使用,通过实例演示了如何创建过滤器以过滤请求字符编码,并解释了在web.xml中配置过滤器时使用`/`、`/*`和`/**`的区别。
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
1944 78
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),利用`request.getLocale()`获取用户区域设置,通过`DateFormat`类格式化特定区域的日期。示例代码演示了根据用户区域显示相应日期,强调了处理多语言网站的关键方法,如`getCountry()`、`getLanguage()`等。
292 6
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
搜索推荐 Java Spring
Spring Filter深度解析
【10月更文挑战第21天】Spring Filter 是 Spring 框架中非常重要的一部分,它为请求处理提供了灵活的控制和扩展机制。通过合理配置和使用 Filter,可以实现各种个性化的功能,提升应用的安全性、可靠性和性能。还可以结合具体的代码示例和实际应用案例,进一步深入探讨 Spring Filter 的具体应用和优化技巧,使对它的理解更加全面和深入。
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
2040 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
NoSQL Java Redis
深入理解Servlet Filter及其限流实践
深入理解Servlet Filter及其限流实践
537 44
|
Java API 数据安全/隐私保护
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
908 6
|
开发框架 缓存 Java
JSP 教程 之 Eclipse JSP/Servlet 环境搭建 1
本教程指导如何使用Eclipse搭建JSP/Servlet开发环境。需下载Eclipse J2EE和Tomcat,将Tomcat解压至无中文和空格的D盘目录。启动Tomcat后,服务器运行,通过浏览器访问`http://localhost:8080/`。在Tomcat的webapps\ROOT目录创建test.jsp文件,输入代码并访问`http://localhost:8080/test.jsp`以验证环境配置成功。
615 1