注册三大组件

Spring boot
以jar包的方式
使用嵌入式的Tomcat启动Web应用
没有Web应用目录结构,没有web.xml文件

Web应用
是一个Web应用的目录结构
存在目录文件src/main/webapp/WEB-INF/web.xml
可以把三大组件,注册在web.xml中

Spring boot
提供了三大组件,注册方式

注册Servlet,使用ServletRegistrationBean
注册Filter,使用FilterRegistrationBean
注册ServletListener,使用ServletListenerRegistrationBean

Servlet

自定义Servlet,继承HttpServlet
重写方法,处理请求

public class MyServlet extends HttpServlet {//处理get请求@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("Hello MyServlet");}
}

Filter

自定义Filter,实现Filter接口
实现Filter的三个方法

Init,初始化
doFilter,过滤
destroy,销毁
chain.doFilter,放行请求

public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("MyFilter process...");chain.doFilter(request,response);}@Overridepublic void destroy() {}
}

Listener

自定义Listener,实现ServletContextListener
Listener有很多,这里监听启动和销毁的Listener

contextInitialized,初始化方法,Web项目启动
contextDestroyed,销毁方法,Web项目销毁

public class MyListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("contextInitialized...web应用启动");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("contextDestroyed...当前web项目销毁");}
}

注册Servlet

返回一个ServletRegistrationBean
是一个class,直接new一个
使用有参构造器,传递自定义的Servlet,映射路径

注册Filter

返回一个FilterRegistrationBean
是一个class,直接new一个
设置自定义的Filter,设置拦截请求的url
是一个集合,使用Arrays转换

注册Listener

返回一个ServletListenerRegistrationBean
是一个类,直接new一个
传递自定义的Listener
可以注册的Listener类型

注册方式

@Configuration
public class MyServerConfig {//注册三大组件@Beanpublic ServletRegistrationBean myServlet(){ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");registrationBean.setLoadOnStartup(1);return registrationBean;}@Beanpublic FilterRegistrationBean myFilter(){FilterRegistrationBean registrationBean = new FilterRegistrationBean();registrationBean.setFilter(new MyFilter());registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));return registrationBean;}@Beanpublic ServletListenerRegistrationBean myListener(){ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());return registrationBean;}}

属性设置

可以直接在registrationBean中设置
自定义组件的属性

Spring boot注册三大组件相关推荐

  1. Spring Boot 注册 Servlet 的三种方法,真是太有用了!

    2019独角兽企业重金招聘Python工程师标准>>> 本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 ...

  2. Spring Boot 注册 Servlet 的3种方式

    一.Spring Boot 注册 Spring Boot 提供了 ServletRegistrationBean, FilterRegistrationBean, ServletListenerReg ...

  3. Spring boot(web 组件,ORM 操作 MySQL,接口架构风格—RESTful,集成 Redis,集成 Dubbo,打包)

    文章目录 1.3 第三章 Spring Boot 和 web 组件 1.3.1 SpringBoot 中拦截器 1.3.2 Spring Boot 中使用 Servlet 1.3.3 Spring B ...

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

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

  5. Spring Boot注册Servlet三大组建(Servlet、Filter、Listener)

    目录 理论 演示及代码 理论 在Spring Boot中使用下面3个函数可以注册Servlet.Filter.Listener ServletRegistrationBean FilterRegist ...

  6. Spring boot容器导入组件

    @Import 向容器中,导入组件 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inher ...

  7. spring boot 分布式锁组件 spring-boot-klock-starter

    基于redis的分布式锁spring-boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目 快速开始 sprin ...

  8. Spring Boot自定义Start组件开发

    Start 组件开发,核心是自动注解类的注解顺序,即根据条件进行注解. 首先我们来理解@Configuration.@Value.@Bean注解 以DataSourceAutoConfiguratio ...

  9. Spring Boot之注册servlet三大组件

    由于Spring Boot默认是以jar包的形式启动嵌入式的Servlet容器来启动Spring Boot的web应用是,没有web.xml配置文件 注册三大组件用以下方式 ServletRegist ...

最新文章

  1. Xamarin.Android模拟器提示HAX kernel module is not Installed
  2. FZU 2087 统计树边【MST相关】
  3. linux简单使用命令发送邮件
  4. vue.config.js多页配置
  5. axios的content-type是自动设置的吗?
  6. oracle sap mas,MAS 移动业务整合系统
  7. 学python能赚钱吗-自学Python三个月能赚钱吗?
  8. 防火墙放开oracle远程,oracleMTS模式下防火墙如何开通
  9. linux 命令学习
  10. M1 芯片Macbook pro连接支持AirPrint的佳能打印机
  11. Telink BLE MESH开发|ble mesh开发教程《四》telink_sig_mesh休眠与唤醒
  12. 软件工程师嵌入式开发交流论坛推荐排行
  13. SVN中删除彻底删除某一个版本
  14. 那些崩溃率低于万分之一的独角兽APP都作对了什么?
  15. 比价寄快递CPS小程序开发
  16. 32位计算机处理64位数据,win764位和32位区别
  17. [已解决]为什么使用远程桌面无法打开雷电模拟器,OpenGL版本始终1.1.0?
  18. .avi文件转为.mp4
  19. 织梦仿微信公众号文章页面html,织梦DEDECMS微信内容页插件
  20. qq空间有密码怎么看里面的相册

热门文章

  1. 【很早以前的作品】自编游戏之NationFight
  2. 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
  3. 三种SQL分页查询的存储过程
  4. sqlserver 日常检查脚本
  5. SQL 去除重复记录 只保留重复记录中的一条
  6. android enum java包_Android @IntDef注解取代Java enum枚举提高性能详解
  7. poi excel mysql_java的poi技术读取Excel数据到MySQL
  8. Windows SID理解
  9. 【Flask】数据的CRUD操作之聚合函数
  10. HTML5中各种标签总结(超链接标签、锚点设置)