SpringBoot整合Servlet三大组件的两种方法~

大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~

希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!!

加油吧!未来可期!!!

本文介绍的是SpringBoot整合Servlet三大组件的两种方法

前言:在Web开发中,会涉及到静态资源的访问支持、视图解析器的配置、转换器和格式化器的定制、文件上传下载等功能,甚至还需要考虑到与Web服务器关联的Servlet相关组件的定制,Spring Boot框架支持整合一些常用Web框架从而实现Web开发,并默认支持Web开发中的一些通用功能。

方法1:通过组件注册整合Servlet三大组件

方法2:路径扫描整合Servlet三大组件

方法1:组件注册整合Servlet三大组件

搭建步骤:

1、使用组件注册方式整合Servlet

2、使用组件注册方式整合Filter

3、使用组件注册方式整合Listener

① 使用组件注册方式整合Servlet

1、创建一个自定义Servlet类MyServlet,使用@Component注解将MyServlet类作为组件注入Spring容器。MyServlet类继承自HttpServlet,通过HttpServletResponse对象向页面输出“hello MyServlet”。(具体代码见备注)

2、创建Servlet组件配置类

@Configuration

public class ServletConfig {

    @Bean

    public ServletRegistrationBean getServlet(MyServlet myServlet){

        ServletRegistrationBean registrationBean =

                                     new ServletRegistrationBean(myServlet,"/myServlet");

        return registrationBean;

    }

}

3、重启项目,启动成功后,在浏览器上访问http://localhost:8080/myServlet

 

② 使用组件注册方式整合Filter

1、创建一个自定义Servlet类MyFilter,使用@Component注解将当前MyFilter类作为组件注入到Spring容器中。MyFilter类实现Filter接口,并重写了init()、doFilter()和destroy()方法,在doFilter()方法中向控制台打印了“hello MyFilter”字符串。(具体代码见备注)

2、向Servlet组件配置类注册自定义Filter类

@Bean

public FilterRegistrationBean getFilter(MyFilter filter){

FilterRegistrationBean registrationBean = new FilterRegistrationBean(filter);

registrationBean.setUrlPatterns(Arrays.asList("/toLoginPage","/myFilter"));

return registrationBean;

}

项目启动成功后,在浏览器上访问http://localhost:8080/myFilter,查看控制台打印效果

 

③ 使用组件注册方式整合Listener

1、创建一个类MyListener

@Component

public class MyListener implements ServletContextListener {

    @Override

    public void contextInitialized(ServletContextEvent servletContextEvent) {

        System.out.println("contextInitialized ..."); }

    @Override

    public void contextDestroyed(ServletContextEvent servletContextEvent) {

        System.out.println("contextDestroyed ...");  }

}

2、向Servlet组件配置类注册自定义Listener类

@Bean

public ServletListenerRegistrationBean getServletListener(MyListener myListener){

ServletListenerRegistrationBean registrationBean =

new ServletListenerRegistrationBean(myListener);

return registrationBean;

}

项目启动成功后查看控制台打印效果

 

方法2:路径扫描整合Servlet三大组件

整合步骤:

1、使用路径扫描方式整合Servlet、Filter、Listener

2、效果测试

① 使用路径扫描的方式整合Servlet、Filter、Listener

在对应组件上分别使用@WebServlet(“/annotationServlet”)注解来映射“/annotationServlet”请求的Servlet类,使用@WebFilter(value = {“/antionLogin”,“/antionMyFilter”})注解来映射“/antionLogin”和“/antionMyFilter”请求的Filter类,使用@WebListener注解来标注Listener类。(修改后的代码见备注)1主程序启动类上添加@ServletComponentScan注解开启基于注解方式的Servlet组件扫描支持

@SpringBootApplication

@ServletComponentScan  // 开启基于注解方式的Servlet组件扫描支持

public class Chapter05Application {

public static void main(String[] args) {

SpringApplication.run(Chapter05Application.class, args);

}

}

项目启动成功后查看控制台打印效果

在浏览器上访问http://localhost:8080/annotationServlet

在浏览器上访问http://localhost:8080/antionMyFilter

完成SpringBoot与Servlet三大组件整合实验。


版权声明:本文为m0_51750419原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。