servlet、filter、listener的用法就不讲了,只讲如何在spring boot中配置它们。有两种方式,一种是从servlet3开始提供的注解方式,另一种是spring的注入方式

servlet注解方式

servlet3.0以前,servlet、filter、listener需要在web.xml中配置,从servlet3.0开始,支持通过类注解进行配置。在spring boot中如果要支持这种注解,必须在配置类增加一个@ServletComponentScan注解,来扫描servlet的注解
@ServletComponentScan
@SpringBootApplication

servlet注解配置,urlPatterns就是这个servlet的请求路径,相当于spring mvc的mapping

@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
filter注解配置,urlPatterns就是这个过滤器要过滤哪些路径
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {

listener注解配置,监听器都是全局性的,不需要配置路径

 
@WebListener
public class MyListener implements ServletContextListener {

spring的注入方式

	//servlet
@Bean
public ServletRegistrationBean myServlet() {
//配置servlet及其请求路径
return new ServletRegistrationBean(new MyServlet(), "/hello");
}
//过滤器
@Bean
public FilterRegistrationBean myFilter() {
FilterRegistrationBean myFilter =new FilterRegistrationBean();
//配置过滤器
myFilter.setFilter(new MyFilter());
//配置过滤路径
myFilter.addUrlPatterns("/*");
return myFilter;
}
//监听器
@Bean
public ServletListenerRegistrationBean<MyListener> myListener() {
return new ServletListenerRegistrationBean<MyListener>(new MyListener());
}

id命名冲突

上面的spring注入方法我都是用my*来命名,在第二篇中我讲过,这个方法名就是在spring中注册的bean的id。有一种习惯就是用类名的首字母小写来命名id,如下

	@Bean
public ServletRegistrationBean servletRegistrationBean() {

如果你的项目中配置了我在11篇讲的druid监控,这个方法名id已经被druid使用了,这个配置也将无法生效。这就是不使用spring boot默认组件可能会引发的一些冲突问题,所以如非必要,建议优先使用spring boot默认的各种组件,稳定性兼容性更高。

servlet注解还是spring注入

servlet注解不会有上面的冲突问题,而且简单易用。更主要的是,servlet是出自java官方的web技术,如tomcat之类的服务器,只知道有servlet,而不知道spring为何物。所有对spring mvc控制层的请求,都是通过一个servlet也就是DispatchServlet进行分发的。请求首先到达servlet,分发以后才会到spring,如果不分发也就没spring什么事了。spring需要依赖servlet才能处理请求,将你所依赖的东西整合到你自己的框架内部,是不是有点本末倒置?所以,使用servlet注解才是原味的servlet

spring boot(18)-servlet、filter、listener的更多相关文章

  1. springboot_4 spring boot 使用servlet,filter,listener和interceptor

    上一篇我们学习了 spring boot 利用Controller响应数据与响应页面. 一般的Web开发使用 Controller 基本上可以完成大部分需求,但是有的时候我们还是会用到 Servlet ...

  2. Spring Boot使用Servlet、Filter或Listener的方式

    根据官方文档说明,有两种方式可以在你的Spring Boot应用中使用Servlet.Filter或Listener. 其一:将Servlet.Filter或Listener注册成Spring Bea ...

  3. Spring Boot 学习系列(08)—自定义servlet、filter及listener

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...

  4. Spring Boot (19) servlet、filter、listener

    servlet.filter.listener,在spring boot中配置方式有两种:一种是以servlet3开始提供的注解方式,另一种是spring的注入方式. servlet注解方式 serv ...

  5. Spring Boot 2.X(十):自定义注册 Servlet、Filter、Listener

    前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...

  6. SpringBoot 源码解析 (七)----- Spring Boot的核心能力 - 自定义Servlet、Filter、Listener是如何注册到Tomcat容器中的?(SpringBoot实现SpringMvc的原理)

    上一篇我们讲了SpringBoot中Tomcat的启动过程,本篇我们接着讲在SpringBoot中如何向Tomcat中添加Servlet.Filter.Listener 自定义Servlet.Filt ...

  7. Spring Boot 自定义注册 Servlet、Filter、Listener

    前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...

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

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

  9. spring boot整合servlet、filter、Listener等组件方式

    创建一个maven项目,然后此项目继承一个父项目:org.springframework.boot 1.创建一个maven项目: 2.点击next后配置父项目及版本号 3.点击finish后就可查看p ...

随机推荐

  1. 【从0到1学Web前端】CSS定位问题二(float和display的使用) 分类: HTML+CSS 2015-05-28 22:03 812人阅读 评论(1) 收藏

    display 属性规定元素应该生成的框的类型. 这个属性用于定义建立布局时元素生成的显示框类型.对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定 ...

  2. Microsoft Azure存储架构设计

    SQL Azure简介 SQL Azure是Azure存储平台的逻辑数据库,物理数据库仍然是SQL Server.一个物理的SQL Server被分成多个逻辑分片(partition),每一个分片成为 ...

  3. Java多线程-Callable的Future返回值的使用

    一般使用线程池执行任务都是调用的execute方法,这个方法定义在Executor接口中: public interface Executor { void execute(Runnable comm ...

  4. [Python学习笔记-005] 理解yield

    网络上介绍yield的文章很多,但大多讲得过于复杂或者追求全面以至于反而不好理解.本文用一个极简的例子给出参考资料[1]中的讲解,因为个人觉得其讲解最为通俗易懂,读者只需要对Python的列表有所了解 ...

  5. Application Metrics With Spring Boot Actuator

    转自:https://bartcode.co.uk/2015/01/application-metrics-with-spring-boot-actuator Update 12/2017: It w ...

  6. 复刻smartbits的国产网络测试工具minismb-网络连接数测试方法

    复刻smartbits的网路性能测试工具MiniSMB,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和最 ...

  7. layer插件学习——icon样式

    本文是自己整理的关于layer插件的icon样式结果 一.准备工作 下载jQuery插件和layer插件,并引入插件(注意:jQuery插件必须在layer插件之前引用) 百度云资源链接: jQuer ...

  8. webpack4 自学笔记二(typescript的配置)

    全部的代码及笔记都可以在我的github上查看, 唤醒star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/typesc ...

  9. 并发编程之 Fork-Join 分而治之框架

    前言 "分而治之" 一直是一个有效的处理大量数据的方法.著名的 MapReduce 也是采取了分而治之的思想.简单来说,就是如果你要处理1000个数据,但是你并不具备处理1000个 ...

  10. C#操作MongoDB入门

    1.MongoDB安装及配置 (1)下载:   mongodb官网 https://www.mongodb.com/download-center      进入官网下载页,你会发现版本都是windo ...