SpringBoot整合Servlet和Filter和Listener组件详解

 更新时间:2024年01月08日 11:07:09   作者:探索er  
这篇文章主要介绍了SpringBoot整合Servlet和Filter和Listener组件详解,在整合某报表插件时就需要使用Servlet,Spring Boot中对于整合这些基本的Web组件也提供了很好的支持,需要的朋友可以参考下

整合Servlet、Filter和Listener

一般情况 下,使用Spring、Spring MVC这些框架之后,基本上就告别Servlet、Filter以及Listener了。

但是有时在整合一些第三方框架时,可能还是不得不使用Servlet, 比如在整合某报表插件时就需要使用Servlet。

Spring Boot中对于整合这些基本的Web组件也提供了很好的支持。

在一个Spring Boot Web项目中添加如下三个组件: (import javax.servlet.*; 下的类)

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("name>>>" + req.getParameter("name"));
    }
}
@WebFilter("/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("MyFilter>>>init");
    }

    @Override
    public void destroy() {
        System.out.println("MyFilter>>>doFilter");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("MyFilter>> >destroy");
    }
}
@WebListener
public class MyListener implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("MyListener>>> requestDestroyed");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("MyListener>> > requestInitialized");
    }
}

代码解释:

  • 这里定义了 三个基本的组件,分别使用@WebServlet、@WebFilter 和@WebListener三个注解进行标记。
  • 这里以 ServletRequestListener为例,但是对于其他的Listener, 例如HttpSessionI istener、ServletContextListener等也是支持的。

在项目入口类上添加@ServletComponentScan注解,实现对Servlet、Filter以及Listener的扫描,代码如下:

@SpringBootApplication
@ServletComponentScan
public class TestspringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestspringbootApplication.class, args);
    }

}

最后,启动项目,在浏览器中输入"//localhost:8080/my?name=Michael",可以看到相关日志。

MyListener>> > requestInitialized
MyFilter>> >destroy
MyListener>>> requestDestroyed
MyListener>> > requestInitialized
MyFilter>> >destroy
MyListener>>> requestDestroyed

到此这篇关于SpringBoot整合Servlet和Filter和Listener组件详解的文章就介绍到这了,更多相关SpringBoot整合Web组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 通过反射遍历所有字段修改值的实例代码

    java 通过反射遍历所有字段修改值的实例代码

    这篇文章主要介绍了java 通过反射遍历所有字段修改值,通过java 的反射,遍历所有字段,进行一个判断,取出来的值是带有图片链接的,进行操作,省去了很多代码,理解也很容易,下面跟随小编看下实例代码吧
    2021-05-05
  • Java 中的语法糖,真甜

    Java 中的语法糖,真甜

    语法糖(Syntactic sugar),也叫做糖衣语法,是英国科学家发明的一个术语,通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会.这篇文章主要介绍了Java 中的语法糖知识,需要的朋友可以参考下
    2020-12-12
  • Java使用Deque实现堆栈的方法

    Java使用Deque实现堆栈的方法

    这篇文章主要介绍了Java使用Deque实现堆栈的方法,实例分析了java简单实现堆栈的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Java中的private、protected、public和default的区别(详解)

    Java中的private、protected、public和default的区别(详解)

    下面小编就为大家带来一篇Java中的private、protected、public和default的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Spring Security使用Lambda DSL配置流程详解

    Spring Security使用Lambda DSL配置流程详解

    Spring Security 5.2 对 Lambda DSL 语法的增强,允许使用lambda配置HttpSecurity、ServerHttpSecurity,重要提醒,之前的配置方法仍然有效。lambda的添加旨在提供更大的灵活性,但是用法是可选的。让我们看一下HttpSecurity的lambda配置与以前的配置样式相比
    2023-02-02
  • elasticsearch中term与match的区别讲解

    elasticsearch中term与match的区别讲解

    今天小编就为大家分享一篇关于elasticsearch中term与match的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java中的base64编码器

    Java中的base64编码器

    这篇文章介绍了Java中的base64编码器,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Java中WeakHashMap和HashMap的区别详解

    Java中WeakHashMap和HashMap的区别详解

    这篇文章主要介绍了Java中WeakHashMap和HashMap的区别详解,WeakHashMap和HashMap一样,WeakHashMap也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以为null,需要的朋友可以参考下
    2023-09-09
  • java实现两个文件的拼接

    java实现两个文件的拼接

    这篇文章主要为大家详细介绍了java实现两个文件的拼接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 对ThreadLocal内存泄漏及弱引用的理解

    对ThreadLocal内存泄漏及弱引用的理解

    这篇文章主要介绍了对ThreadLocal内存泄漏及弱引用的理解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01

最新评论