Spring boot注册三大组件
注册三大组件
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注册三大组件相关推荐
- Spring Boot 注册 Servlet 的三种方法,真是太有用了!
2019独角兽企业重金招聘Python工程师标准>>> 本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 ...
- Spring Boot 注册 Servlet 的3种方式
一.Spring Boot 注册 Spring Boot 提供了 ServletRegistrationBean, FilterRegistrationBean, ServletListenerReg ...
- 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 ...
- Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)
Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...
- Spring Boot注册Servlet三大组建(Servlet、Filter、Listener)
目录 理论 演示及代码 理论 在Spring Boot中使用下面3个函数可以注册Servlet.Filter.Listener ServletRegistrationBean FilterRegist ...
- Spring boot容器导入组件
@Import 向容器中,导入组件 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inher ...
- spring boot 分布式锁组件 spring-boot-klock-starter
基于redis的分布式锁spring-boot starter组件,使得项目拥有分布式锁能力变得异常简单,支持spring boot,和spirng mvc等spring相关项目 快速开始 sprin ...
- Spring Boot自定义Start组件开发
Start 组件开发,核心是自动注解类的注解顺序,即根据条件进行注解. 首先我们来理解@Configuration.@Value.@Bean注解 以DataSourceAutoConfiguratio ...
- Spring Boot之注册servlet三大组件
由于Spring Boot默认是以jar包的形式启动嵌入式的Servlet容器来启动Spring Boot的web应用是,没有web.xml配置文件 注册三大组件用以下方式 ServletRegist ...
最新文章
- Xamarin.Android模拟器提示HAX kernel module is not Installed
- FZU 2087 统计树边【MST相关】
- linux简单使用命令发送邮件
- vue.config.js多页配置
- axios的content-type是自动设置的吗?
- oracle sap mas,MAS 移动业务整合系统
- 学python能赚钱吗-自学Python三个月能赚钱吗?
- 防火墙放开oracle远程,oracleMTS模式下防火墙如何开通
- linux 命令学习
- M1 芯片Macbook pro连接支持AirPrint的佳能打印机
- Telink BLE MESH开发|ble mesh开发教程《四》telink_sig_mesh休眠与唤醒
- 软件工程师嵌入式开发交流论坛推荐排行
- SVN中删除彻底删除某一个版本
- 那些崩溃率低于万分之一的独角兽APP都作对了什么?
- 比价寄快递CPS小程序开发
- 32位计算机处理64位数据,win764位和32位区别
- [已解决]为什么使用远程桌面无法打开雷电模拟器,OpenGL版本始终1.1.0?
- .avi文件转为.mp4
- 织梦仿微信公众号文章页面html,织梦DEDECMS微信内容页插件
- qq空间有密码怎么看里面的相册
热门文章
- 【很早以前的作品】自编游戏之NationFight
- 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
- 三种SQL分页查询的存储过程
- sqlserver 日常检查脚本
- SQL 去除重复记录 只保留重复记录中的一条
- android enum java包_Android @IntDef注解取代Java enum枚举提高性能详解
- poi excel mysql_java的poi技术读取Excel数据到MySQL
- Windows SID理解
- 【Flask】数据的CRUD操作之聚合函数
- HTML5中各种标签总结(超链接标签、锚点设置)