SpringBoot Web原生组件注入(Servlet、Filter、Listener)
一、使用原生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 如何注册进来
- 容器中自动配置了 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;}}
- 通过 ServletRegistrationBean 把 DispatcherServlet 配置进来。
- springboot默认映射的是 / 路径。
Tomcat-Servlet;
多个Servlet都能处理到同一层路径,精确优选原则
A: /my/
B: /my/1
如果访问 /my/1 那么由B处理,如果访问/my/2,那么由A处理
SpringBoot Web原生组件注入(Servlet、Filter、Listener)相关推荐
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference 转载于:https://www.cnblogs.com/Jeremy2001 ...
- servlet/filter/listener/interceptor区别与联系
2019独角兽企业重金招聘Python工程师标准>>> servlet/filter/listener/interceptor区别与联系 博客分类: java 由于最近两个月工作比较 ...
- servlet,filter,listener区别
时间的朋友 随笔 - 2314, 文章 - 3, 评论 - 101, 引用 - 0 servlet/filter/listener/interceptor区别与联系 一.概念: 1.servlet:s ...
- Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)
Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...
- Springboot2Web原生组件注入
官方文档 - Servlets, Filters, and listeners 使用原生的注解Servlet API @ServletComponentScan(basePackages = &quo ...
- servlet/filter/listener/interceptor区别与联系(转)
由于最近两个月工作比较清闲,个人也比较"上进",利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servle ...
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...
- JAVA基础(16) Servlet/Filter/Listener/Interceptor区别与联系
一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层.最早支持 Serv ...
- 【SpringBoot 2】(九)异常处理 web原生组件的注入
写在前面
最新文章
- 重磅!泰晤士发布重量级学科排名,90所中国大陆高校上榜
- 清华孵化、张钹加盟的这家公司,现在把“第三代人工智能”落地了
- 二十一、oracle pl/sql分类一 存储过程
- linux / scp 详解
- canvas实现半圆环形进度条
- SAP UI5对mobile touch事件的支持
- python 第13天作业
- 中维云视通录像文件存储及设置_视频监控存储方式选择,磁盘阵列与NVR优势对比...
- python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
- win10系统崩溃怎么修复_新手怎么重装系统win10
- HTML认识数字游戏,小班数学游戏教案《认识数字》
- w ndows10专业版连接不上网,Win10电脑连不上网怎么回事?Win10电脑连不上网解决办法...
- 腾讯防水墙的使用(python_web)
- 逻辑学入门很简单 笔记 一些逻辑学常见概念
- snapchat中国使用_如何在不共享位置的情况下使用Snapchat
- 集线器、交换机和路由器
- asp dotnet core 从零开始创建一个 WebApi 服务
- 最近大火的chatGPT是什么?它是怎样聊天的?
- v2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.t
- 常见开放api平台-OpenAPI