Spring Boot 、註冊Servlet三大元件Servlet、Filter、Listener
阿新 • • 發佈:2018-11-27
由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案
public class MyServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException { resp.getWriter().println("<h1>hello world</h1>"); }; @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } }
public class MyFilter implements Filter{ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException { System.out.println("================Hello world Filter"); chain.doFilter(request, response); } }
public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { ServletContextListener.super.contextInitialized(sce); System.out.println("-------------MyListener inited !"); } @Override public void contextDestroyed(ServletContextEvent sce) { ServletContextListener.super.contextDestroyed(sce); System.out.println("----------------MyListener Destroy !"); } }
@Configuration public class MyMvcConfig implements WebMvcConfigurer { //註冊Servlet @Bean public ServletRegistrationBean<Servlet> myServlet(){ return new ServletRegistrationBean<>(new MyServlet(),"/myServlet"); } //註冊Filter @Bean public FilterRegistrationBean<Filter> myFilter(){ FilterRegistrationBean<Filter> filter = new FilterRegistrationBean<>(); filter.setFilter(new MyFilter()); filter.addUrlPatterns("/myServlet"); FilterRegistrationBean<Filter> filter2 = new FilterRegistrationBean<>(new MyFilter(), myServlet()); return filter2; }
//註冊Listener @Bean public ServletListenerRegistrationBean<EventListener> myListener(){ ServletListenerRegistrationBean<EventListener> listener = new ServletListenerRegistrationBean<EventListener>(new MyListener()); return listener; } }