Spring Boot深度课程系列
峰哥说技术—2020庚子年重磅推出、战胜病毒、我们在行动
15 峰哥说技术:Spring Boot整合web基础组件
一般情况下,使用了Spring MVC这些框架后,基本上就不会再去使用Servlet、Filter和Listener这些web组件。但是有时候需要使用第三方的框架,就可能需要使用。比如在使用报表插件的时候,可能就需要使用这些web组件。这也是我们在这里讲解的原因之一。 它们的整合非常简单,可以在工程中直接定义Servlet、Filter和Listener,不需要使用web.xml,也不需要加任何的依赖。最后就是在启动类中添加注解@ServletComponentScan。这个注解可以扫描这三种类型的web组件。下面用一个案例来说明。
案例:新建一个工程,在工程中使用web基础组件,并进行测试。
步骤:
1)创建工程chapter04-webcomponent,添加web依赖
2)创建Servlet
@WebServlet(urlPatterns = "/hello_servlet") public class HelloServlet extends HttpServlet { @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 { System.out.println("hello,Servlet"); } }
|
3)创建Filter
@WebFilter
public class HelloFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("hello Filter init"); }
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("hello Filter doFilter"); filterChain.doFilter(servletRequest,servletResponse); }
@Override public void destroy() { System.out.println("hello Filter destroy"); } }
|
4)创建Listener
@WebListener public class HelloHttpSessionListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { System.out.println("HelloHttpSessionListener requestDestroyed"); }
@Override public void requestInitialized(ServletRequestEvent sre) { System.out.println("HelloHttpSessionListener requestInitialized"); } }
|
5)在启动类添加注解@ServletComponentScan
@SpringBootApplication @ServletComponentScan(basePackages = "com.java.chapter04webcomponent.webcomponent") public class Chapter04WebcomponentApplication { public static void main(String[] args) { SpringApplication.run(Chapter04WebcomponentApplication.class, args); } }
|
6)启动项目,可以看到如下结果。
大家可以看到过滤器初始化。然后在浏览器中输入:http://localhost:8080/hello_servlet
大家可以看到监听器、过滤器、servlet都发挥了作用了。