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;
}