Spring Boot學習筆記(二)使用Servlet、Filter、Listener
阿新 • • 發佈:2018-12-22
Servlet
還是得整合HttpServlet,然後重寫父類方法。 類的上方增加了@WebServlet註解,其實就是代替了xml的配置,可以被spring boot掃描、註冊到。
package org.test.Controll; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name="helloServlet",urlPatterns = "/helloServlet") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("執行了 Servlet 的 DoGet"); } }
Filter
package org.test.Controll; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter(filterName = "HelloFilter",urlPatterns = "/HelloServlet") public class HelloFilter 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("執行前doFilter"); filterChain.doFilter(servletRequest, servletResponse); System.out.println("執行後doFilter"); } @Override public void destroy() { } }
Listener
package org.test.Controll; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class HelloListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("contextInitialized 初始化啦"); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } }
註冊的兩種方式
第一種, 使用@ServletComponentScan,自動註冊
package org.test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan //掃描servlet註解
public class Application {
public static void main(String[] args) {
org.springframework.boot.SpringApplication.run(Application.class, args);
}
}
第二種,使用@Bean註解自行註冊
package org.test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
org.springframework.boot.SpringApplication.run(Application.class, args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new HelloServlet());
bean.addUrlMappings("/HelloServlet2");
return bean;
}
}