SpringBoot注册Servlet、Filter、Listener

时间:2022-06-27 05:39:43

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

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

(1)、注册Servlet

 package cn.coreqi.servlet;

 import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置响应内容类型
resp.setContentType("text/html"); // 实际的逻辑是在这里
PrintWriter out = resp.getWriter();
out.println("<h1>MyServlet</h1>");
}
}
     //注册Servlet
@Bean
public ServletRegistrationBean myServlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myservlet");
return registrationBean;
}

(2)、注册Filter

 package cn.coreqi.filter;

 import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter; public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
PrintWriter out = servletResponse.getWriter();
out.println("<h1>MyFilter</h1>");
filterChain.doFilter(servletRequest,servletResponse);
}
}
     @Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.setUrlPatterns(Arrays.asList("/myservlet"));
return registrationBean;
}

(3)、注册Listener

 package cn.coreqi.listener;

 import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized");
}
}
     @Bean
public ServletListenerRegistrationBean myListener(){
ServletListenerRegistrationBean registrationBean = new ServletListenerRegistrationBean();
registrationBean.setListener(new MyListener());
return registrationBean;
}