随笔 - 303  文章 - 0  评论 - 3  阅读 - 15万

Spring MVC 九大组件及其配置总结

  在实现一个自定义MVC中了解了Spring MVC本质就是将多个servelet的工作交给一个servelet全权处理。其工作流程围绕这个DispatcherServlet,大致可以如下图:

              

   上图中就涉及到封装了的Spring MVC的九大组件,大致作用如下:  

              

  在实现一个自定义MVC中就自定义了HandlerMapping,HandlerAdapter,ViewResolver,DipsatcherServelet实现了原生态的MVC。

  在Spring Boot Web项目整合jsp页面访问(非web项目改为web项目适用) - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)示例了spring-mvc整合jsp,为什么这样整合呢?这就与Spring MVC的九大组件中的ViewResolver(视图解析器)息息相关——具体整合jsp引擎的过程Spring Boot已经处理了(在Spring MVC快速搭建初体验有对这部分内容的处理),用户需要处理的是ModelAndView及View对象。实际在Spring MVC的应用中若需要集成一个模板引擎的话——即配置静态资源映射,就需要获取一个ViewResolver进行处理。

  通过上图中关于九大组件的具体执行流程可以明确Spring MVC的配置与其九大组件息息相关,通常涉及MVC的某个配置本质上就是九大组件的初始化或相关参数配置。Spring MVC常涉及配置如下(不限于以下): 

  1、静态资源映射

    项目中静态文件(js、css、图片)等需要直接访问,可以在配置中重写addResourceHandlers方法实现。在Spring MVC中如何处理的呢? 

                 

     add静态资源的同时,设置了viewRevoler视图解析器相关内容。

  2、拦截器配置

    具体操作参考Spring MVC拦截器(Interceptor)使用 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com),不再赘述。

  3、@ControllerAdvice

    该注解作用于控制器,将全局配置(@ExceptionHandler、@ModelAttribute、@InitBinder注解确定这些配置的细节)放在这个注解下的类中。对所有注解了@RequestMapping的控制器内的方法都有效——用于处理控制器中的异常。

    @ExceptionHandler:用于全局处理控制器里的异常

    @ModelAttribute:绑定键值对到Model里,同时全局的@RequestMapping类也都能获得@ModelAttribute设置的键值对。

    @InitBinder:用于设置WebDataBinder——用于自动绑定前台请求参数到Model中。

                 

                     

                   

     测试结果:

                  

  4、快捷的ViewController  

    参考Spring MVC拦截器(Interceptor)使用 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)最后补充部分。

                  

  5、路径匹配参数配置

    在Spring MVC中,路径参数中如果含有“.”的话,“.”后的值会被截断忽略。为解决这个问题其提供了路径匹配参数处理,如下:

                 

     高版本Spring MVC已经将该种场景默认设置为false,不需要再对此种情况进行处理。

  6、文件上传配置

    文件上传是一个项目里常用的功能,Spring MVC通过配置一个MutipartResolver来上传文件。在Spring的控制器中,通过MultipartFile来接收文件,通过MultipartFile[]接收多个文件上传——文件保存缓存。

                  

                   

                  

                 

  7、自定义HttpMessageConverter

    HttpMessageConverter是用来处理request和response里的数据的。Spring内置了大量的HttpMessageConverter,如下图(不限于下图):

                

    下面示例该接口的使用,查看其是否依据开发者的要求对数据进行的converter:

    1)实现类:

                

    2)dispatch配置加载:

                

    3)控制类:

                

  8、服务器端推送技术

 

 

 

  更多配置由@Configuration和@EnableWebMvc注解可以实现完全由开发者接管控制的MVC配置,具体通过实现WebMvcConfigurer接口完成:

                

                

                 

 

posted on   池塘里洗澡的鸭子  阅读(336)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示