美文网首页程序员Java后端
SpringMVC基础知识 (1)

SpringMVC基础知识 (1)

作者: LeaveStyle | 来源:发表于2018-08-31 15:51 被阅读78次

1. Spring体系结构

 如图所示,MyBatis属于其管理下的ORM(持久层映射)层,而SpringMVC则属于Web-MVC处理层的框架。


Spring4体系结构.jpg

Spring MVC有以下优点:

  • Spring MVC技术是与Spring框架结合而成的,它同时拥有Spring的优点(例如依赖注入(IOC)和面向切面编程(AOP)等)。
  • Spring MVC提供了强大的约定大于配置的契约式编程支持,即提供一种如阿健设计范式,减少软件开发人员做决定的次数,开发人员仅需规定应用中不符合约定的部分。
  • 支持灵活的URL到页面控制器的映射。
  • 可以方便地与其他视图技术(FreeMarker等)进行整合。由于SpringMVC的模型数据往往是放置在Map数据结构中的,因此其可以很方便地被其他框架引用。
  • 拥有十分简洁的异常处理机制。
  • 可以十分灵活地实现数据验证、格式化和数据绑定机制,可以使用任意对象进行数据绑定操作。
  • 支持RESTful风格。

注: 逆向工程自动生成数据的相关文件的操作,依赖于核心XML配置文件,只有进行了正确的操作,才能获得需要的数据文件。

2. Spring MVC请求流程

Spring MVC流程视图

流程如下:

  • 一. 用户点击某个请求,发起一个request请求,此请求会被前端控制器(DispatcherServlet)处理。
  • 二. 前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)去查找Handler。可以一句注解或者XML配置去查找。
  • 三. 处理器映射器(HandlerMapping)根据配置找到相应的Handler(可能包含若干个Interceptor拦截器),返回给DispatcherServlet。
  • 四. DispatcherServlet请求处理HandlerAdapter去执行相应的Handler(常称为 Controller)。
  • 五. HandlerAdapter执行Handler。
  • 六. Handler执行完毕后返回给HandlerAdapter一个ModelAndView对象(Spring MVC底层对象,包括Model数据模型和View视图信息)。
  • 七. HandlerAdapter接收到Handler返回的ModelAndView后,将其返回给DispatcherServlet。
  • 八. DispatcherServlet接收到ModelAndView后,会请求ViewResolver对视图进行解析。
  • 九. ViewResolver根据View信息匹配到相应的视图结果,反馈给DispatcherServlet。
  • 十. DispatcherServlet收到View具体视图后,进行视图渲染,将Model中的模型数据填充到View视图中的request域,生成最终的View。
  • 十一. DispatcherServlet向用户返回请求结果。

各个组件功能:

  • 前端控制器(DispatcherServlet)
    作用:接受用户请求,然后给用户反馈结果。它的作用相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的扩展。
  • 处理器映射器(HandlerMapping)
    作用:根据请求的URL路径,通过注解或者XML配置,寻找匹配的处理器(Handler)信息。
  • 处理器适配器(HandlerAdapter)
    作用:根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)。
  • 处理器(Handler)
    作用:执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装值ModelAndView对象中。
  • 视图解析器(View Resolver)
    作用:进行解析操作,通过ModelAndView对象中的View信息逻辑视图名解析成真正的视图View(如通过一个JSP路径返回一个真正的JSP页面)。
  • 视图(View)
    作用:其本身是一个接口,实现类支持不同的View类型(JSP、FreeMarker、Excel等)。

3. Spring MVC和Struts的区别

 Struts与Spring MVC类似,也是一款基于传统MVC设计模式的Java EE框架。它的核心是一个弹性的控制层,能够很好地发挥MVC模式的“分离显示逻辑和业务逻辑”的能力。
Spring MVC和Struts都是基于MVC模式的Java EE框架,而近年来越来越多的开发者使用Spring MVC技术来代替Struts技术
,所以来看一下它们之间的具体区别:

  • 区别一: Spring MVC基于方法开发,Struts基于类开发。
     在使用Spring MVC框架进行开发时,会将URL请求路径与Controller类的某个方法进行绑定,请求参数作为该方法的形参。当用户请求该URL路径时,Spring MVC会将URL信息与Controller类的某个方法进行映射,生成一个Handler对象,该对象中包含了一个method方法。方法执行结束之后,形参数据也会销毁。
     而在使用Struts框架进行开发时,Action类中所有方法使用的请求参数都是Action类中的成员变量,随着方法变得越来越多,就很难分清楚Action中那么多的成员变量到底是哪一个方法使用的,整个Action类会变得十分混乱。
     相比较,Spring MVC的优点是:其所有请求参数都会被定义为相应的方法的形参,用户在网页上的请求路径会被映射到Controller类对应的方法上,此时请求参数会注入到对应方法的形参上。Spring MVC的这种开发方式类似于Service开发。
  • 区别二:Spring MVC可以进行单例开发,Struts无法使用单例。
     Spring MVC支持单例开发模式,而Struts由于只能通过类的成员变量接受参数,所以无法使用单例模式,只能使用多例。
  • 区别三:经过专业人员大量测试,Struts的处理速度略微Spring MVC慢,原因是Struts使用了Struts标签,Strtus标签由于设计原因,会出现加载数据慢的情况。
     这里仅仅比较了Spring MVC在某些方面相比Struts的优势,并不是说Spring MVC就比Struts优秀,仅仅因为早起Struts使用广泛,所以出现的漏洞也比较多,但是在新版本中的Struts中也修复了许多漏洞。Spring MVC自诞生以来,几乎没有什么漏洞,且Spring MVC是基于方法开发的,这一点比较接近Service开发,这是Spring MVC近年来备受关注的原因之一。

相关文章

  • Spring MVC框架原理与开发

    一、学习指南 1.基础知识: 1)什么是springMVC;2)springMVC框架原理(掌握);3)sprin...

  • SpringMVC基础知识

    SpringMVC基础知识 @(开源框架) 1.什么是 Spring MVC Spring MVC 属于 Spri...

  • SpringMVC基础知识 (1)

    1. Spring体系结构  如图所示,MyBatis属于其管理下的ORM(持久层映射)层,而SpringMVC则...

  • SpringMVC

    接触SpringMVC也有一年多了,用起来却有些地方还是不熟练,梳理一下基础知识。 跟踪SpringMVC的请求(...

  • 找工作必备技能

    基础知识Java和JQuery SpringMVC 源码学习-入门 Mysql存储过程,Mysql高级查询相关SQ...

  • SpringMVC - 基础知识

    第一章: 回顾JavaWeb中的MVC设计模式 MVC这种设计模式,不光运用于Web领域,而且也能用于非Web领域...

  • 扩展和全面接管SpringMVC

    1、扩展SpringMVC 创建springmvc.xml文件 2、全面接管SpringMVC

  • java基础-day56-SpringMVC-02

    springmvc 1.SpringMVC方式文件上传 SpringMVC框架提供了MultipartFile对象...

  • SpringMVC概述

    【目录】1 什么是SpringMVC2 简单解析运行流程 1 什么是SpringMVC SpringMVC是目前主...

  • 2018-09-05

    什么是Springmvc??? 1、springmvc是什么? springmvc全称是spring web mv...

网友评论

    本文标题:SpringMVC基础知识 (1)

    本文链接:https://www.haomeiwen.com/subject/ktsswftx.html