目录

理论

演示及代码


理论

在Spring Boot中使用下面3个函数可以注册Servlet、Filter、Listener

ServletRegistrationBean

FilterRegistrationBean

ServletListenerRegistrationBean

演示及代码

首先是Servlet请求:

注册Filter后的现象:

注册Listener的现象:

注意:

下面那个按钮相当于正常退出,上面那个相当于拔电源。

程序结构如下:

MyServerConfig.java

package servlettestdemo.demo.config;import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import servlettestdemo.demo.filter.MyFilter;
import servlettestdemo.demo.listener.MyListener;
import servlettestdemo.demo.servlet.MyServlet;import javax.servlet.ServletContextListener;
import java.util.Arrays;@Configuration
public class MyServerConfig {//注册三大组建@Beanpublic ServletRegistrationBean myServlet(){ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean myFilter(){FilterRegistrationBean registrationBean = new FilterRegistrationBean();registrationBean.setFilter(new MyFilter());registrationBean.setUrlPatterns(Arrays.asList("/myServlet"));return registrationBean;}@Beanpublic ServletListenerRegistrationBean myListener(){ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());return  registrationBean;}//配置嵌入式Servlet容器@Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){return new EmbeddedServletContainerCustomizer() {@Overridepublic void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {configurableEmbeddedServletContainer.setPort(10010);}};}
}

MyFilter.java

package servlettestdemo.demo.filter;import javax.servlet.*;
import java.io.IOException;public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("MyFilter process ...");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}

MyListener.java

package servlettestdemo.demo.listener;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class MyListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {System.out.println("contextInitialized ... web应用启动");}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println("contextDestroyed ...web项目销毁");}
}

MyServlet.java

package servlettestdemo.demo.listener;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class MyListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {System.out.println("contextInitialized ... web应用启动");}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println("contextDestroyed ...web项目销毁");}
}

porn.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu</groupId><artifactId>spring-boot-04-web-restfulcrud</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>spring-boot-04-web-restfulcrud</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><!-- 布局功能的支持程序  thymeleaf3主程序  layout2以上版本 --><!-- thymeleaf2   layout1--><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version></properties><dependencies><!-- 引入web模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入其他的Servlet容器--><!--<dependency><artifactId>spring-boot-starter-undertow</artifactId><groupId>org.springframework.boot</groupId></dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Spring Boot注册Servlet三大组建(Servlet、Filter、Listener)相关推荐

  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注册三大组件

    注册三大组件 Spring boot 以jar包的方式 使用嵌入式的Tomcat启动Web应用 没有Web应用目录结构,没有web.xml文件 Web应用 是一个Web应用的目录结构 存在目录文件sr ...

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

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

  5. Spring Boot切换其他嵌入式的Servlet容器

    Spring Boot默认支持: Tomcat(默认使用) <dependency><groupId>org.springframework.boot</groupId& ...

  6. Spring Security with Spring Boot 2.0:使用Servlet堆栈的简单身份验证

    Spring安全性是一个很好的框架,可节省开发人员的大量时间和精力. 此外,它还具有足够的灵活性,可以自定义并满足您的需求. 随着spring的发展,spring安全性也使得在项目中设置安全性变得更加 ...

  7. Spring Boot怎么样注册Servlet三大组件[Servlet、Filter、Listener]

    前言 由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件用以下方式 一.ServletRegis ...

  8. Spring Boot自定义 Servlet Filter 的两种方式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 针 ...

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

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

最新文章

  1. Redis运行流程源码解析
  2. edge浏览器 开启java,启动Edge浏览器,然后等待其关闭[重复]
  3. javascript高级程序设计第3版——第6章 面向对象的程序设计
  4. t-sql导出EXCEL语句
  5. Eclipse 创建 Maven 工程
  6. 数据结构与算法总结(八股文)
  7. BGP通告路由的方法以及BGP静态路由下放
  8. no symbol version section for versioned symbol `memcpy@GLIBC_2.4'
  9. 税控接口 - 模拟录入
  10. 车辆有效信息的识别 车牌车型车颜色 车标识别,基于mallab算法
  11. html代码实现全国地图分布,html5 svg浙江地图map省市地区代码
  12. 计算机语言的正交性,什么是“正交性”?
  13. [原创] PowerPC 汇编入门与优化
  14. 普通素人做知识付费项目或者副业,会不会特别容易“凉凉”?
  15. 括弧匹配检验:比较基础的栈
  16. c语言考研复试一般考什么,考研复试考什么
  17. Android Switch和ToggleButton控件
  18. 你会用“お”和“ご”吗?
  19. ThinkPHP 2
  20. SPARK SHUFFLE中 ShuffleId BlockManagerId 以及 与ESS(External Shuffle Server)交互

热门文章

  1. 开机启动inittab详解
  2. 一个牛人在美国的跳槽经历(有感)
  3. 如何高效管理BI报表的需求
  4. C++ 程序员如何迎接 Windows 10 的到来
  5. 表妹好奇地问的飞鸽传书
  6. 【转】用MYSQL都可能会遇到的问题:MYSQL字符数字转换
  7. FireFox 继续优化 JS处理性能再度大幅提升
  8. 看,他们都转行做web前端工程师了
  9. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法
  10. 诺奖技术和高通量筛选双双找到新冠病毒的脉门