一、使用原生Servlet API(推荐)

@Slf4j
@WebFilter(urlPatterns={"/css/*","/images/*"}) //my
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("MyFilter初始化完成");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info("MyFilter工作");chain.doFilter(request,response);}@Overridepublic void destroy() {log.info("MyFilter销毁");}
}
-------------------------------------------------------------------------------
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("66666");}
}
-------------------------------------------------------------------------------
@Slf4j
@WebListener
public class MySwervletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {log.info("MySwervletContextListener监听到项目初始化完成");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {log.info("MySwervletContextListener监听到项目销毁");}
}

利用@ServletComponentScan扫描进来

@MapperScan("com.aa.admin.mapper")
@ServletComponentScan(basePackages = "com.aa.admin")
@SpringBootApplication(exclude = RedisAutoConfiguration.class)
public class Boot05WebAdminApplication {public static void main(String[] args) {SpringApplication.run(Boot05WebAdminApplication.class, args);}
}

二、使用RegistrationBean

ServletRegistrationBean, FilterRegistrationBean, and ServletListenerRegistrationBean

@Configuration
public class MyRegistConfig {@Beanpublic ServletRegistrationBean myServlet(){MyServlet myServlet = new MyServlet();return new ServletRegistrationBean(myServlet,"/my","/my02");}@Beanpublic FilterRegistrationBean myFilter(){MyFilter myFilter = new MyFilter();
//        return new FilterRegistrationBean(myFilter,myServlet());FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));return filterRegistrationBean;}@Beanpublic ServletListenerRegistrationBean myListener(){MySwervletContextListener mySwervletContextListener = new MySwervletContextListener();return new ServletListenerRegistrationBean(mySwervletContextListener);}
}

三、扩展:DispatchServlet 如何注册进来

  1. 容器中自动配置了 DispatcherServlet 属性绑定到 WebMvcProperties;对应的配置文件配置项是 spring.mvc。
@Configuration(proxyBeanMethods = false)@Conditional({DispatcherServletAutoConfiguration.DispatcherServletRegistrationCondition.class})@ConditionalOnClass({ServletRegistration.class})@EnableConfigurationProperties({WebMvcProperties.class})@Import({DispatcherServletAutoConfiguration.DispatcherServletConfiguration.class})protected static class DispatcherServletRegistrationConfiguration {protected DispatcherServletRegistrationConfiguration() {}@Bean(name = {"dispatcherServletRegistration"})@ConditionalOnBean(value = {DispatcherServlet.class},name = {"dispatcherServlet"})public DispatcherServletRegistrationBean dispatcherServletRegistration(DispatcherServlet dispatcherServlet, WebMvcProperties webMvcProperties, ObjectProvider<MultipartConfigElement> multipartConfig) {DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean(dispatcherServlet, webMvcProperties.getServlet().getPath());registration.setName("dispatcherServlet");registration.setLoadOnStartup(webMvcProperties.getServlet().getLoadOnStartup());multipartConfig.ifAvailable(registration::setMultipartConfig);return registration;}}
  1. 通过 ServletRegistrationBean 把 DispatcherServlet 配置进来。
  2. springboot默认映射的是 / 路径。

Tomcat-Servlet;
多个Servlet都能处理到同一层路径,精确优选原则
A: /my/
B: /my/1

如果访问 /my/1 那么由B处理,如果访问/my/2,那么由A处理

SpringBoot Web原生组件注入(Servlet、Filter、Listener)相关推荐

  1. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference 转载于:https://www.cnblogs.com/Jeremy2001 ...

  2. servlet/filter/listener/interceptor区别与联系

    2019独角兽企业重金招聘Python工程师标准>>> servlet/filter/listener/interceptor区别与联系 博客分类: java 由于最近两个月工作比较 ...

  3. servlet,filter,listener区别

    时间的朋友 随笔 - 2314, 文章 - 3, 评论 - 101, 引用 - 0 servlet/filter/listener/interceptor区别与联系 一.概念: 1.servlet:s ...

  4. Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)

    Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...

  5. Springboot2Web原生组件注入

    官方文档 - Servlets, Filters, and listeners 使用原生的注解Servlet API @ServletComponentScan(basePackages = &quo ...

  6. servlet/filter/listener/interceptor区别与联系(转)

    由于最近两个月工作比较清闲,个人也比较"上进",利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servle ...

  7. Spring Boot整合Servlet,Filter,Listener,访问静态资源

    目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...

  8. JAVA基础(16) Servlet/Filter/Listener/Interceptor区别与联系

    一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层.最早支持 Serv ...

  9. 【SpringBoot 2】(九)异常处理 web原生组件的注入

    写在前面

最新文章

  1. 重磅!泰晤士发布重量级学科排名,90所中国大陆高校上榜
  2. 清华孵化、张钹加盟的这家公司,现在把“第三代人工智能”落地了
  3. 二十一、oracle pl/sql分类一 存储过程
  4. linux / scp 详解
  5. canvas实现半圆环形进度条
  6. SAP UI5对mobile touch事件的支持
  7. python 第13天作业
  8. 中维云视通录像文件存储及设置_视频监控存储方式选择,磁盘阵列与NVR优势对比...
  9. python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
  10. win10系统崩溃怎么修复_新手怎么重装系统win10
  11. HTML认识数字游戏,小班数学游戏教案《认识数字》
  12. w ndows10专业版连接不上网,Win10电脑连不上网怎么回事?Win10电脑连不上网解决办法...
  13. 腾讯防水墙的使用(python_web)
  14. 逻辑学入门很简单 笔记 一些逻辑学常见概念
  15. snapchat中国使用_如何在不共享位置的情况下使用Snapchat
  16. 集线器、交换机和路由器
  17. asp dotnet core 从零开始创建一个 WebApi 服务
  18. 最近大火的chatGPT是什么?它是怎样聊天的?
  19. v2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.t
  20. 常见开放api平台-OpenAPI

热门文章

  1. ubuntu16.04设置静态IP
  2. 嘿!不用太过于担心的单点故障
  3. 15、Java并发编程:Callable、Future和FutureTask
  4. 《第一行代码》学习笔记40-网络(1)
  5. ios开发之 icon规范+启动图规范+启动页规范
  6. Visual Studio 2010/2013 UTF8编码调试时显示中文
  7. LayoutInflater作用及使用
  8. plsql连接oracle数据库
  9. 组合模式(Composition)
  10. 页面间参数值传递含“%”的处理方法