SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】

Stella981
• 阅读 720

由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。 注册三大组件,class MyServlet()/class MyListener/ class MyFilter 需要自己亲自编写!!

1. class MyServlet

package com.szs.springboot04.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("Hello MyServlet!!!");
    }
}

ServletRegistrationBean 注册

@Configuration
public class MyServerConfig {
    /**
     * 注册三大组件
     */
    @Bean
    public ServletRegistrationBean myServlet(){
        ServletRegistrationBean registrationBean =
                new ServletRegistrationBean(new MyServlet(),"/myServlet");
        registrationBean.setLoadOnStartup(1);
        return registrationBean;
    }

效果展示

SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】


2.class MyFilter implements Filter

import javax.servlet.*;
import java.io.IOException;

public class MyFilter implements Filter {
    public MyFilter() {
        super();
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("myFilter正在初始化...");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("MyFilter 正在Process...");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

FilterRegistrationBean 注册

@Configuration
public class MyServerConfig {
  @Bean
    public FilterRegistrationBean myFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
        return registrationBean;
    }

SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】 SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】


3.class MyListener implements ServletContextListener

public class MyListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("contextInitialized ...web应用启动");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("contextDestroyed... web项目已经销毁");
    }
}

ServletListenerRegistrationBean myListener()

@Configuration
public class MyServerConfig {
@Bean
public ServletListenerRegistrationBean myListener(){
        return  new ServletListenerRegistrationBean<>(new MyListener());
    }

SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】 SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
2年前
SpringBoot连接常见设置
SpringBoot集成了Servlet容器,因此我们可以方便的启动一个容器,并访问其中的接口。那么如何控制Servlet容器中的线程池呢?可以通过如下配置进行控制server:tomcat:appcectcount:1minspacethreads:1maxthreads:
Stella981 Stella981
2年前
Spring Boot使用笔记
1\. boot将自动把bean类型为Servlet,Filter,listener等servlet规范中的类型,向boot内嵌的web容器注册,需要控制filter、servlet的初始化和参数等,可以使用FilterRegistrationBean和ServletRegistrationBean,来自文档https://docs.spring.i
Wesley13 Wesley13
2年前
JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
一、Servlet的传统配置方式  在JavaWeb开发中,每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示:1<servlet2<servletnameActionServlet</servletname3<servletcla
Stella981 Stella981
2年前
Spring Boot Servlet支持介绍
Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到Servlet、Filter、Listener、Interceptor 等等。当使用SpringBoot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet、Filter和Servlet规范的所有监听器(如HttpSessionListener监听器)。 
Wesley13 Wesley13
2年前
JavaWeb中的web.xml文件配置解析
一web.xml的文件重要性  web.xml是servlet规定的启动配置文件,凡属基于servlet的javaWeb容器必遵守这个规范,而目前主流的容器都是基于servlet的,因此可以理解web.xml是每个javaweb应用都离不开web.xml配置文件。  web.xml完整的名字应该叫做部署描述符
Easter79 Easter79
2年前
SpringBoot连接常见设置
SpringBoot集成了Servlet容器,因此我们可以方便的启动一个容器,并访问其中的接口。那么如何控制Servlet容器中的线程池呢?可以通过如下配置进行控制server:tomcat:appcectcount:1minspacethreads:1maxthreads:
Stella981 Stella981
2年前
Eclipse搭建springboot项目(八)拦截器、过滤器、监听器
知识点:1、SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter(核心知识)  filter简单理解:人检票员(filter)景点  1)SpringBoot启动默认加载的Filter    characterEncodingFilter    
Stella981 Stella981
2年前
Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)
javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置。①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Java应用程序②Filter过滤器:javax.servlet.Filter是一个接口,实现请求的拦截和放行,并可添加新功能,达到过滤请求的作用③list