开发环境: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. centos7配置Memcached

    Memcached是一套分布式的高速缓存系统,用于提升网站访问速度,尤其对于一些大型的.需要频繁访问数据库的网站,访问速度提升效果十分显著. 1.安装memcached yum install mem ...

  2. render加载vue文件 vue-loader配置

    默认webpack无法打包.vue文件,需要安装相关Loader安装 npm install vue-loader vue-template-compiler -D webpack.config.js ...

  3. Http中URI协议 和URL协议的区别和联系

    虽然说URL和URI是整个网络协议栈很常用的东西.可是,假如你去面试求职者其中的差别,估计十个人有八个人答复不上来. 想要熟悉基础知识的朋友最好还是看一下我这个文章. “A Uniform Resou ...

  4. 2019icpc徐州区域赛F

    F. The Answer to the Ultimate Question of Life, The Universe, and Everything. 我的第一道真·打表题 这次是真的打表啊,不是 ...

  5. 零基础想学习C语言,没资源、没人带、不知道从何开始?

    初学编程的小伙伴经常会遇到的问题,1.没资源 2.没人带 3.不知道从何开始 ? 小编也是从新手期过来的,所以很能理解萌新的难处,现在整理一些以前自己学习买来的一些资料送给大家,希望对广大初学小伙伴有 ...

  6. 转pytorch中训练深度神经网络模型的关键知识点

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42279044/articl ...

  7. 3.java基础之关键字instanceof

    1. instanceof 使用:对象引用名 instanceof 类名 作用:来判读引用的对象和类名是否兼容(是否继承该类,或爷爷辈的类) 例子: Team team = new Team(); t ...

  8. springboot 2.0+整合RabbitMQ

    基于spring-boot 2.* 作用: 1.异步处理 2.应用解耦 3.流量削峰   相关概念介绍: Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指 ...

  9. 简单搭建docker registry

    已知信息: 服务端IP:192.168.7.2xx 客户端IP:192.168.7.1xx 服务端: docker registry中镜像本地映射地址:/Users/dockergit/private ...

  10. Java面试准备基础篇_11.24

    Java类加载机制 Java内存模型JMM 为什么 Redis 单线程能支撑高并发? 高并发下的接口幂等性解决方案! 面试官问:平常你是怎么对 Java 服务进行调优的? JAVA虚拟机(JVM)六: ...