一.怎么配置
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。
注册三大组件用以下方式:
Servlet用:ServletRegistrationBean
Filter用:FilterRegistrationBean
Listener用:ServletListenerRegistrationBean
二.案例
1)、编写一个自定义Servlet
public class MyServlet extends HttpServlet {
//处理get请求
@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().write("hello MyServlet");
}
}
2)、编写一个自定义Filter
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化过滤器");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("我的过滤器执行了");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("销毁过滤器");
}
}
3)、编写一个自定义Listener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("web应用启动了");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("web应用关闭了");
}
}
4)、编写自定义配置类将三大组件注册进去
@Configuration
public class MyServerConfig {
/*
*注册三大组件
*/
//Servlet
@Bean
public ServletRegistrationBean myServlet(){
return new ServletRegistrationBean(new MyServlet(),"/myServlet");
}
//Filter
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter());
filterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
return filterRegistrationBean;
}
//listener
@Bean
public ServletListenerRegistrationBean myListener(){
return new ServletListenerRegistrationBean<MyListener>(new MyListener());
}
}