开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。

一、使用Servlet配置

1、修改启动类 DemoApplication.java代码,加入注解ServletComponentScan,它用于扫描Servlet组件,包括使用@WebServlet、

@WebFilter和@WebListener进行修饰的类。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication
@ServletComponentScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

2、新建一个类 MyServlet.java,继承HttpServlet并且加入注解 @WebServlet

package com.example.demo;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet(value="/servlet")
public class MyServlet extends HttpServlet {
public MyServlet(){
System.out.println("servlet类");
}
protected void service(HttpServletRequest arg0, HttpServletResponse arg1){
System.out.println("servlet方法");
}
}

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出
servlet类
servlet方法

二、使用Listener配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyServlet.java

package com.example.demo;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener; @WebListener
public class MyListener implements ServletRequestListener {
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent){
System.out.println("请求创建");
}
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent){
System.out.println("请求销毁");
}
}

在浏览器中访问一个接口,如上步http://localhost:8080/servlet,可看到IDEA控制台输出:
请求创建
请求销毁

附,常用的监听器接口:

1.ServletContextListener -- 监听servletContext对象的创建以及销毁   
1.1 contextInitialized(ServletContextEvent arg0)   -- 创建时执行   
1.2 contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行
2.HttpSessionListener  -- 监听session对象的创建以及销毁   
2.2 sessionCreated(HttpSessionEvent se)   -- 创建时执行   
2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
3.ServletRequestListener -- 监听request对象的创建以及销毁   
3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行   
3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
4.ServletContextAttributeListener  -- 监听servletContext对象中属性的改变   
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行   
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行   
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
5.HttpSessionAttributeListener  --监听session对象中属性的改变   
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行   
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行   
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
6.ServletRequestAttributeListener  --监听request对象中属性的改变   
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行   
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行   
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

三、使用Filter配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyFilter.java

package com.example.demo;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException; //第一个参数为过滤器名字,第二个参数为要拦截的请求地址
@WebFilter(filterName="myFilter", urlPatterns="/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter初始化");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("filter方法");
chain.doFilter(request, response);
} @Override
public void destroy() {
System.out.println("filter销毁");
}
}

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出:
filter方法

最后,附上项目结构图:

Spring Boot 2 使用Servlet、Listener和Filter配置的更多相关文章

  1. 从零开始的Spring Boot(2、在Spring Boot中整合Servlet、Filter、Listener的方式)

    在Spring Boot中整合Servlet.Filter.Listener的方式 写在前面 从零开始的Spring Boot(1.搭建一个Spring Boot项目Hello World):http ...

  2. Spring boot中使用servlet filter

    Spring boot中使用servlet filter liuyuhang原创,未经允许请勿转载! 在web项目中经常需要一些场景,如参数过滤防止sql注入,防止页面攻击,空参数矫正等, 也可以做成 ...

  3. Spring Boot中使用Servlet与Filter

    在Spring Boot中使用Servlet,根据Servlet注册方式的不同,有两种使用方式.若使用的是Servlet3.0+版本,则两种方式均可使用:若使用的是Servlet2.5版本,则只能使用 ...

  4. (7)Spring Boot web开发 --- servlet容器

    文章目录 配置嵌入式 Servlet 容器 注册 三大组件 使用其他 servlet 容器 使用外置的 `Servlet` 容器 配置嵌入式 Servlet 容器 Spirng Boot 默认使用自带 ...

  5. Servlet, Listener 、 Filter.

    Java Web的三大组件:Servlet, Listener . Filter. 使用Listener监听器:八大监听器: 第一组:用于监听Servlet三个域对象的创建与销毁 1. Servlet ...

  6. Spring boot中注册Servlet

    Spring boot中注册Servlet 如何在spring boot项目中注册Servlet呢? 如何在spring boot项目中注册Servlet呢? 由于没有web.xml,无法直接在xml ...

  7. Spring boot 默认静态资源路径与手动配置访问路径的方法

    这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下   在application.propertis中配置 ##端口号 ...

  8. Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

    Spring boot项目maven的profile多环境配置不自动替换变量的问题解决   在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spring b ...

  9. spring boot: 中文显示乱码,在applicationContext里面配置

    spring boot: 中文显示乱码,在applicationContext里面配置 applicationContext.properties ########################## ...

  10. Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响

    前几天在<Spring Boot 2.4 对多环境配置的支持更改>一文中,给大家讲解了Spring Boot 2.4版本对多环境配置的配置变化.除此之外,还有一些其他配置变化,所以今天我们 ...

随机推荐

  1. ABAP分享六 alv显示的几种方式的简单示例

    方法1,也是大家常见的方法通过函数   REUSE_ALV_GRID_DISPLAY TYPES: BEGIN OF  ty_spfli,   "定义结构     carrid like s ...

  2. IT兄弟连 HTML5教程 DIV+CSS网页标准化布局 小结及习题

    小结 DIV+CSS布局页面的优势:表现和内容相分离.代码简洁,提高页面浏览速度.易于维护和改版.提高搜索引擎对网页的索引效率.每个HTML元素都可以看作一个区块,类似于装了东西的盒子,称为盒子模式. ...

  3. WebMvcConfigurationSupport 避坑指南

    通过返回WebMvcConfigurationSupport 的方式, 默认会覆盖 Spring boot的自动配置, 导致配置失效静态资源无法访问:但是在WebMvcConfigurationadp ...

  4. Consul初探-从安装到运行

    前言 伟大领袖毛主席说过:实践是检验真理的唯一标准!经过上一篇的学习,我基本掌握了 Consul 的基本原理,接下来就是动手实践了:Consul 的部署方式分为两种,分别是二进制包和docker方式, ...

  5. C# 打开文件/跳转链接

    mark一下~ 打开文件 1.打开文件夹: System.Diagnostics.Process.Start(FolderPath);-- 打开文件夹 System.Diagnostics.Proce ...

  6. Centos7通过yum跟源码编译安装Nginx

    源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...

  7. SSM框架之SpringMVC(5)文件上传

    SpringMVC(5)文件上传 1.实现文件上传的前期准备 1.1.文件上传的必要前提 A form 表单的 enctype 取值必须是: multipart/form-data(默认值是:appl ...

  8. 修改vscode的文件,对应的磁盘文件不改变

    两种解决办法: 首先:修改VSCode默认配置文件,点击左下角设置标志图 -> 设置,出来了设置相关的东西,搜索 files.autoSave 第一种:把"files.autoSave ...

  9. 【Beta阶段】第十二周Scrum会议

    [Beta阶段]第十二周Scrum会议 本次会议为第十二周第一次Scrum Meeting,会议对Beta阶段工作进行了总结,针对Beta阶段还未完成的问题进行了讨论. 会议时间为2019.12.3. ...

  10. CentOS7 安装Python3.6.8

    CentOS7 安装Python3.6.8 1. 安装依赖环境 yum -y groupinstall "Development tools" yum -y install zli ...