简谈springMvc框架

简谈springMvc框架

    • springMvc框架
      • Spring MVC的工作原理
      • springMVC中的几个组件
      • SpringMVC的运行机制,以及运行机制的流程
      • springMvc框架的特点
      • springMvc注解的优点
      • springMVC的工作原理图

springMvc框架

  • Spring MVC提供了一种轻度耦合的方式来开发web应用。
  • Spring MVC是Spring的一个模块,式一个web框架。通过Dispatcher Servlet, ModelAndView 和 ViewResolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。
  • Spring MVC是一个基于动作的MVC框架。该框架突出了HTTP协议中的请求/响应特性,在该框架中,用户的每一个请求都声明了一个需要执行的动作。而这主要是通过将每个请求URI映射到一个可执行的方法来实现。同时,也将请求参数映射到对应方法的参数。

Spring MVC的工作原理

  1. 客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求。
  2. DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler(任何一个对象都可以作为请求的Handler)。
  3. 在这个地方Spring会通过HandlerAdapter对该处理器进行封装。
  4. HandlerAdapter是一个适配器,它用统一的接口对各种Handler中的方法进行调用。
  5. Handler完成对用户请求的处理后,会返回一个ModelAndView对象给DispatcherServlet,ModelAndView顾名思义,包含了数据模型以及相应的视图的信息。
  6. ModelAndView的视图是逻辑视图,DispatcherServlet还要借助ViewResolver完成从逻辑视图到真实视图对象的解析工作。
  7. 当得到真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染。
  8. 客户端得到响应,可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件。

springMVC中的几个组件

  1. 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
  2. 处理器映射器(HandlerMapping):根据URL去查找处理器。
  3. 处理器(Handler):(需要程序员去写代码处理逻辑的)。
  4. 处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)。
  5. 视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

SpringMVC的运行机制,以及运行机制的流程

  1. 用户发送请求时会先从DispathcherServler的doService方法开始,在该方法中会将ApplicationContext、localeResolver、themeResolver等对象添加到request中,紧接着就是调用doDispatch方法。
  2. 进入该方法后首先会检查该请求是否是文件上传的请求(校验的规则是是否是post并且contenttType是否为multipart/为前缀)即调用的是checkMultipart方法;如果是的将request包装成MultipartHttpServletRequest。
  3. 然后调用getHandler方法来匹配每个HandlerMapping对象,如果匹配成功会返回这个Handle的处理链HandlerExecutionChain对象,在获取该对象的内部其实也获取我们自定定义的拦截器,并执行了其中的方法。
  4. 执行拦截器的preHandle方法,如果返回false执行afterCompletion方法并理解返回
  5. 通过上述获取到了HandlerExecutionChain对象,通过该对象的getHandler()方法获得一个object通过HandlerAdapter进行封装得到HandlerAdapter对象。
  6. 该对象调用handle方法来执行Controller中的方法,该对象如果返回一个ModelAndView给DispatcherServlet。
  7. DispatcherServlet借助ViewResolver完成逻辑试图名到真实视图对象的解析,得到View后DispatcherServlet使用这个View对ModelAndView中的模型数据进行视图渲染。

springMvc框架的特点

  1. SpringMVC 是Spring的一个子项目。
  2. Spring MVC提供了一种绑定机制,通过该机制可以从用户请求中提取数据,然后将数据转换为预定义的数据格式,最后映射到一个模型类,从而创建一个对象。该实现机制只需请求参数名称与Java类的属性相匹配即可。
  3. Spring MVC是视图不可知的,他并没有规定你的视图必须使用哪种视图技术,可以是JSP,也可以是Velocity模板、Tiles、Freemarker以及XSLT等。
  4. Spring MVC是非侵入性的,因为业务逻辑代码与框架本身是相分离的。

springMvc注解的优点

  1. XML配置起来有时候冗长,此时注解可能是更好的选择,如jpa的实体映射;注解在处理一些不变的元数据时有时候比XML方便的多,比如springmvc的数据绑定,如果用xml写的代码会多的多。
  2. 注解最大的好处就是简化了XML配置;其实大部分注解一定确定后很少会改变,所以在一些中小项目中使用注解反而提供了开发效率,所以没必要一头走到黑。
  3. 注解相对于XML的另一个好处是类型安全的,XML只能在运行期才能发现问题。

springMVC的工作原理图

简谈springMvc框架_第1张图片
引用了SpringMVC工作原理的原理图

你可能感兴趣的:(简谈springMvc框架)