Spring Boot注册Servlet三大组建(Servlet、Filter、Listener)
目录
理论
演示及代码
理论
在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)相关推荐
- Spring Boot 注册 Servlet 的三种方法,真是太有用了!
2019独角兽企业重金招聘Python工程师标准>>> 本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 ...
- Spring Boot 注册 Servlet 的3种方式
一.Spring Boot 注册 Spring Boot 提供了 ServletRegistrationBean, FilterRegistrationBean, ServletListenerReg ...
- Spring boot注册三大组件
注册三大组件 Spring boot 以jar包的方式 使用嵌入式的Tomcat启动Web应用 没有Web应用目录结构,没有web.xml文件 Web应用 是一个Web应用的目录结构 存在目录文件sr ...
- Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)
Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...
- Spring Boot切换其他嵌入式的Servlet容器
Spring Boot默认支持: Tomcat(默认使用) <dependency><groupId>org.springframework.boot</groupId& ...
- Spring Security with Spring Boot 2.0:使用Servlet堆栈的简单身份验证
Spring安全性是一个很好的框架,可节省开发人员的大量时间和精力. 此外,它还具有足够的灵活性,可以自定义并满足您的需求. 随着spring的发展,spring安全性也使得在项目中设置安全性变得更加 ...
- Spring Boot怎么样注册Servlet三大组件[Servlet、Filter、Listener]
前言 由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件用以下方式 一.ServletRegis ...
- Spring Boot自定义 Servlet Filter 的两种方式
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 针 ...
- springboot_4 spring boot 使用servlet,filter,listener和interceptor
上一篇我们学习了 spring boot 利用Controller响应数据与响应页面. 一般的Web开发使用 Controller 基本上可以完成大部分需求,但是有的时候我们还是会用到 Servlet ...
最新文章
- Redis运行流程源码解析
- edge浏览器 开启java,启动Edge浏览器,然后等待其关闭[重复]
- javascript高级程序设计第3版——第6章 面向对象的程序设计
- t-sql导出EXCEL语句
- Eclipse 创建 Maven 工程
- 数据结构与算法总结(八股文)
- BGP通告路由的方法以及BGP静态路由下放
- no symbol version section for versioned symbol `memcpy@GLIBC_2.4'
- 税控接口 - 模拟录入
- 车辆有效信息的识别 车牌车型车颜色 车标识别,基于mallab算法
- html代码实现全国地图分布,html5 svg浙江地图map省市地区代码
- 计算机语言的正交性,什么是“正交性”?
- [原创] PowerPC 汇编入门与优化
- 普通素人做知识付费项目或者副业,会不会特别容易“凉凉”?
- 括弧匹配检验:比较基础的栈
- c语言考研复试一般考什么,考研复试考什么
- Android Switch和ToggleButton控件
- 你会用“お”和“ご”吗?
- ThinkPHP 2
- SPARK SHUFFLE中 ShuffleId BlockManagerId 以及 与ESS(External Shuffle Server)交互