SpringBoot中默认内置了Servlet容器,Tomcat。SpringBoot默认是以jar包的方式启动内置的Servlet容器,没有web.xml文件。所以只能通过自定义servlet配置。使用ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean来实现servle的三大组件。
CustomServletConfig
@Configuration
public class CustomServletConfig {
//注册servlet
@Bean
public ServletRegistrationBean myServlet()
{
ServletRegistrationBean<Myservlet> registrationBean = new ServletRegistrationBean<>();
registrationBean.setServlet(new Myservlet());
registrationBean.addUrlMappings("/myServlet");
return registrationBean;
}
//注册Filter
@Bean
public FilterRegistrationBean myFilter()
{
System.out.println("CustomServletConfig.myFilter");
FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/showLogin","/test1");
return registrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener()
{
ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>();
servletListenerRegistrationBean.setListener(new MyListener());
return servletListenerRegistrationBean;
}
}
Myservlet
public class Myservlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Myservlet.doGet");
doPost(req,resp);
}
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Myservlet.doPost");
}
}
MyListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("MyListener.contextInitialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("MyListener.contextDestroyed");
}
}
MyFilter
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
System.out.println("MyFilter.doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
MyListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("MyListener.contextInitialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("MyListener.contextDestroyed");
}
}