大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~
希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!!
加油吧!未来可期!!!
本文介绍的是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三大组件整合实验。