SpringBoot注册Servlet、Filter、Listener

SpringBoot默认是以jar包的方式启动嵌入式的Servlet容易来启动SpringBoot的Web应用,没有web.xml文件

因此我们可以使用以下方式来注册Servlet、Filter、Listener。

(1)、注册Servlet

复制代码
 1 package cn.coreqi.servlet;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.http.HttpServlet;
 5 import javax.servlet.http.HttpServletRequest;
 6 import javax.servlet.http.HttpServletResponse;
 7 import java.io.IOException;
 8 import java.io.PrintWriter;
 9 
10 public class MyServlet extends HttpServlet {
11     @Override
12     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
13         // 设置响应内容类型
14         resp.setContentType("text/html");
15 
16         // 实际的逻辑是在这里
17         PrintWriter out = resp.getWriter();
18         out.println("<h1>MyServlet</h1>");
19     }
20 }
复制代码

 

1     //注册Servlet
2     @Bean
3     public ServletRegistrationBean myServlet(){
4         ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myservlet");
5         return registrationBean;
6     }

 

(2)、注册Filter

复制代码
 1 package cn.coreqi.filter;
 2 
 3 import javax.servlet.*;
 4 import java.io.IOException;
 5 import java.io.PrintWriter;
 6 
 7 public class MyFilter implements Filter {
 8     @Override
 9     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
10         PrintWriter out = servletResponse.getWriter();
11         out.println("<h1>MyFilter</h1>");
12         filterChain.doFilter(servletRequest,servletResponse);
13     }
14 }
复制代码

 

1     @Bean
2     public FilterRegistrationBean myFilter(){
3         FilterRegistrationBean registrationBean = new FilterRegistrationBean();
4         registrationBean.setFilter(new MyFilter());
5         registrationBean.setUrlPatterns(Arrays.asList("/myservlet"));
6         return registrationBean;
7     }

 

(3)、注册Listener

复制代码
 1 package cn.coreqi.listener;
 2 
 3 import javax.servlet.ServletContextEvent;
 4 import javax.servlet.ServletContextListener;
 5 
 6 public class MyListener implements ServletContextListener {
 7     @Override
 8     public void contextInitialized(ServletContextEvent sce) {
 9         System.out.println("contextInitialized");
10     }
11 }
复制代码

 

1     @Bean
2     public ServletListenerRegistrationBean myListener(){
3         ServletListenerRegistrationBean registrationBean = new ServletListenerRegistrationBean();
4         registrationBean.setListener(new MyListener());
5         return registrationBean;
6     }

 

作者:奇

出处:https://www.cnblogs.com/fanqisoft/p/10335765.html

版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。

posted @   SpringCore  阅读(414)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示