整合SSM框架必备基础—SpringMVC(上)

01 MVC概述

在Web系统开发中通常按照视图(View)、模型(Model)、控制(Controller)三层设计模式进行构建,视图层负责模型数据的渲染,将数据用必定的形式展示给用户;模型层负责监听实体的变化并对实体进行解析和封装;控制层负责提供先后端交互的请求逻辑处理入口,处理用户请求,并创建适当的模型传递给视图进行渲染。层级关系通常以下图所示: 前端

在这里插入图片描述
在Web开发的早期,JSP + Servlet + JavaBean的组合很是流行,那个时候JSP担任着视图层渲染工做,Servlet做为控制器负责用户的请求和响应,而JavaBean则负责一些更加复杂的业务逻辑,例如跟数据库打交道。

后来出现了一个新的MVC框架Struts2,它将action做为框架的控制器负责用户请求响应,同时为前端页面提供了标签库和有力的渲染工具-OGNL,用户请求action返回数据到JSP后,在JSP中能够采用OGNL表达式对数据进行动态的渲染,它还增长了请求过滤器以及进行请求先后处理的拦截器,方便系统过滤、拦截一些不符合规则的请求并作出及时的响应操做,不得不说它的出现下降了系统的耦合性,让MVC模式的分层更加明显,也大大的简化了开发者的代码量。数据库

02 SpringMVC简介

因为Struts2框架带来的便利,它和Spring在过去很长一段时间被结合在一块儿用来构建系统,可是随着技术的发展,两者的结合出现了不少问题例如类臃肿、兼容性以及Struts2漏洞等问题,而就在这时候,Spring家族诞生了一个新的MVC框架来与Spring实现无缝结合,它就是SpringMVC。后端

SpringMVC是采用Java开发,一种基于Web MVC设计模式,以请求驱动为类型的轻量级Web框架。因为使用了MVC架构模式的思想,将Web层进行了职责解耦,让分层更加的明显。设计模式

03 SpringMVC优点

谈到SpringMVC的优点,首先想到的就是它依赖Spring的包才能运行,也就是说它实际上是Spring的一个MVC子框架,这样的话就能够跟Spring实现无缝的结合,从而继承它的众多特性,这一点比起Struct2框架就有了很大的先天优点,另外还有其余的几个优势以下:架构

一、实现方法级别的请求拦截 上面说起的Struts2采用的是类级别的请求拦截,即一个类对应一个请求上下文,而SpringMVC采用方法级别的拦截,一个方法对应一个请求URL,也就是一个请求上下文。因此从架构自己上SpringMVC容易实现Restful接口,而Struts2的架构实现起来要麻烦不少,由于Struts2 action的一个方法能够对应一个URL,可是它的类属性却被全部的方法共享,这也就没法用注解或其余方式标识其所属的方法了。app

二、SpringMVC提供强大的注解 SpringMVC引入了注解的功能,经过在类、方法上标记相应的注解,能够实现实体的映射、配置的加载等,使用起来很是便利,能够大大简化配置和代码量,好比说一样是接收请求,Servlet做为控制器须要在doPost或者doGet中作一些处理后才能调用业务代码,而SpringMVC经过几个注解就能够实现,例如@Controller能够帮助定义当前类为一个Spring管理的bean,同时指定该类是一个控制器,能够用来接受请求,标识当前类是控制层的一个具体的实现;@requestMapping放在方法上面用来指定某个方法的路径,当它放在类上的时候至关于命名空间须要组合方法上的requestMapping来访问。框架

三、清晰的角色划分 控制器(Controller)、验证器(Validator)、命令对象(Command-obect)、表单对象(form-object)、模型对象(model-object)、Servlet分发器(DispatcherServlet)、处理器映射(handler-mapping)、视图解析器(view-resolver)等等。每个角色均可以由一个专门的对象来实现。jsp

04 SpringMVC流程步骤

在这里插入图片描述
SpringMVC的具体执行流程步骤以下:

1.首先用户在前台页面向某一个后台指定的URL发起了请求,SpringMVC收到这个请求后会首先交给中央控制器(DispatcherServlet)工具

2.中央控制器请求HandlerMapping查找 Handler处理器 (能够根据xml配置、注解进行查找)spa

3.处理器映射器HandlerMapping向中央控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器对象),经过这种策略模式,很容易添加新的映射策略

4.中央控制器调用处理器适配器去执行Handler

5.处理器适配器HandlerAdapter将会根据适配的结果去执行Handler

6.Handler执行完成给适配器返回ModelAndView

7.处理器适配器向中央控制器返回ModelAndView (ModelAndView实际上是SpringMVC框架的一个底层对象,包括模型Model和视图View)

8.中央控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp),经过这种策略很容易更换其余视图技术,只须要更改视图解析器便可

9.视图解析器向中央控制器返回View

10.中央控制器进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)

11.前端控制器向用户响应结果

相关文章
相关标签/搜索