欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解IDEA中SpringBoot整合Servlet三大组件的过程

程序员文章站 2022-06-27 14:23:26
spring mvc整合springboot提供为整合mvc框架提供的功能特性 内置两个视图解析器:contentnegotiatingviewresolver和beannameviewresolv...

spring mvc整合
springboot提供为整合mvc框架提供的功能特性

  • 内置两个视图解析器:contentnegotiatingviewresolver和beannameviewresolver
  • 支持静态资源以及webjars
  • 自动注册了转换器和格式化器
  • 支持http消息转换器
  • 自动注册了消息代码解析器
  • 支持静态项目首页index.html
  • 支持定制应用图标favicon.ico
  • 自动初始化web数据绑定器:configurablewebbindinginitializer

spring mvc功能扩展实现

  • 项目环境搭建(结构如这篇博客)
  • 功能扩展实现
  • 注册视图管理器

- 测试后发现,使用这种方式无法获取后台处理的数据,比如登录页面中的年份。
- 使用webmvcconfigurer接口中的addviewcontrollers(viewcontrollerregistry registry)方法定制
视图控制,只适合较为简单的无参数视图get方式的请求跳转,对于有参数或需要业务处理的跳转请求,最好还是采用传统方式处理请求。

注册自定义拦截器

- 自定义拦截器类myinterceptor实现了handlerinterceptor接口。在prehandle()方法中,如果用户请求以“/admin”开头,
则判断用户是否登录,如果没有登录,则重定向到“/tologinpage”请求对应的登录页面。
- 在posthandle()方法中,使用request对象向前端页面传递表示年份的currentyear数据。
- 在自定义配置类mymvcconfig中,重写addinterceptors()方法注册自定义的拦截器,如下

- 使用@autowired注解引入自定义的myinterceptor拦截器组件,重写其中addinterceptors()方法注册自定义的拦截器
- 使用addpathpatterns("/**")方法拦截所有路径请求,excludepathpatterns("/login.html")方法对“login.html”路径请求放行处理。
- 项目重启后,访问localhost:8080/admin,跳转到登录界面,自定义拦截器生效。

spring boot 整合servlet三大组件

组件注册方式整合servlet三大组件

在spring boot中,使用组件注册方式整合内嵌servlet容器的servlet、filter、listener三大组件时,
  只需要将这些自定义组件通过servletregistrationbean、filterregistrationbean、servletlistenerregistrationbean类注册到容器中即可

组件注册方式整合 servlet

启动测试,访问myservlet,显示数据说明成功整合servlet组件

组件注册方式整合filter

启动测试,访问/myfilter,控制台看到hello myfilter

组件注册方式整合listener

程序启动成功后,会自动打印输出"contextinitialized ...",单击坐下的exit关闭会输出销毁的监听信息,如果直接强制关闭程序,无法打印监听信息。

  • 注意:当自定义的servlet组件配置类servletconfig全部注释并重启项目后,自定义的servlet、filter、listener组件仍然生效。
  • 原因:嵌入式servlet容器对servlet、filter、listener组件进行了自动化识别和配置,而自定义的servlet、filter、listener都继承/实现了对应的类/接口,同时自定义的这三个组件都使用了@component注解,会自动被扫描为spring组件。

路径扫描整合servlet三大组件

  • 使用路径扫描的方式整合三大组件,需要再自定义组件上分别添加@webservlet、@webfilter、@weblistener注解进行声明,并配置相关注解属性,在主程序启动类上使用@servletcomponentscan注解开启组件扫描。
  • 分别用以下三个注解代替@component注解进行配置三个组件@webfilter(value={"/antionlogin","/antionmyfilter"})
  • @weblistener
  • @webservlet("/annotationservlet")
  • 启动类上加入@servletcomponentscan注解,开启基于注解的组件扫描支持
  • 对于filter测试访问"/antionlogin","/antionmyfilter",对于servlet测试访问"/annotationservlet",测试结果如上。

到此这篇关于详解idea中springboot整合servlet三大组件的过程的文章就介绍到这了,更多相关springboot整合servlet三大组件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!