开发环境: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. layui2.5 开关在confirm确认了之后在关/开

    <!--默认选中--> <div class="layui-form-item layui-form"> <div class="layui ...

  2. Node.js / Python 日志

    一.Node.js 日志 1.原生 Node.js 原生方法其实很简单,就四个: // 输出到 stdout console.log() console.info() = console.log() ...

  3. 【原创】WinForm中实现单独Time控件的方式

    WinForm默认只提供了DateTimePicker,今天的项目只用时间,不能出现日期,百撕不得骑姐(^^),也没花多少时间,随便试了一下,就成功了,分享一下. 在DateTimePicker属性中 ...

  4. Python中Pyyaml模块的使用

    一.YAML是什么 YAML是专门用来写配置文件的语言,远比JSON格式方便. YAML语言的设计目标,就是方便人类读写. YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩 ...

  5. 一文读懂AOE到底是什么!

    一.背景 1.1 AoE是什么 AoE (AI on Edge) 是一个滴滴开源的终端侧AI集成运行时环境(IRE).以 “稳定性.易用性.安全性” 为设计原则,帮助开发者将不同框架的深度学习算法轻松 ...

  6. Maven详解(非原创)

    文章大纲 一.maven功能介绍二.maven整合javaweb案例三.私服应用(了解)四.总结五.相关资料下载六.参考文章 一.maven功能介绍 1. maven基本介绍   Maven的Apac ...

  7. IDEA新建servlet时出现的错误

    未注入Tomcat里lib文件下的jar 这样即可

  8. 快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

    知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨 ...

  9. Linux系统学习 十一、DHCP服务器—相关文件、配置文件、服务器配置

    2.DHCP服务器相关文件 安装SHCP服务器 yum install dhcp 对应的端口 端口号: ipv4 udp67.udp68(不推荐改端口) ipv6 udp546.udp547(暂时还没 ...

  10. 如何将pyqt5的qt-designer设计出来的 .ui 和 .qrc 文件转化成 .py 文件

    一.pyrcc5的使用 1.1 作用 将 .qrc 资源文件转换成py文件,并在主程序中通过 import 引入 1.2 资源文件编写说明 创建一个icon.qrc,代码如下: <RCC> ...