SpringMVC的原理、搭建和应用(一)

SpringMVC属于SpringFrameWork的后续产品。是一个很优秀且轻量级的Web开发框架。由于最近新加入的项目组的需要,特此整理一下SpringMVC的相关东西,借此重新梳理,希望可以从原理到应用帮助大家系统的学习。
本文作为该系列的第一篇,注重讲解相关原理和概念,其具体的入门和环境搭建留到下一篇中讲解。并特此声明,本文中引用的配图来自慕课网。
一.Spring
1.Spring概述
谈到Spring,想必大家肯定都不陌生。Spring、Strut、Hibernate作为注明的三大Web开发框架,在各自适用的应用场景里贡献了很多。它的诞生,大大的简化了企业级系统的开发。简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
2.IOC机制和AOP机制
IOC的全称是Inversion of Control,中文意思是反向控制。Spring把依赖的对象注入给相应的类,相比于EJB来说,是被动地,所以称之为”反向”。
AOP的全称是Aspect-Oriented Programming,中文翻译是面向切面的编程。”切面” 是一种抽象,把系统不同部分的公共行为抽取出来形成了一个独立的模块,并且在适当的地方(切入点),把这些被抽取出来的功能在插入到不同的部分。从某种角度上来讲,”切面“ 像是横在各个模块之间的一道屏风,要想到达屏风后面的地方,就必须从屏风穿过去,而这一过程是不被我们的功能流程所知的,这样一来降低了模块之间的耦合度,也使得”切面“ 对系统有了监视和拦截的功能。
二.MVC
MVC模式由来已久, 是Model、View、Control三个单词的简写。MVC是指一种架构,并没有具体的指一个事物。包括SpringMVC在内的大多数MVC架构都实现了数据显示和数据管理的分离,从而降低了维护和开发的成本。
这里写图片描述
前台发来的请求到前端控制器,Font Controller负责转发给Controller, Controller负责业务数据抽取和处理,然后控制器将处理完的结果返回给Font Controller. 由FC 把该Model呈现给视图模板,然后显示到前台。
再次强调,MVC的主要思想即:将业务数据抽取和业务数据呈现分离。
三.SpringMVC
每个公司的Spring框架都不相同,这是因为Springframework允许了很好的扩展和改动。
早期的Spring需要较多的手动配置来保障框架和架构的运行,从Spring2.5 以后,Spring 引进了《注解》这一方法,大大简化了我们的手动配置工作。接下来,我们先看一下整体的运作原理和流程。
这里写图片描述

为了更好地理解和学习SpringMVC,我们再来看一下具体的几个重要的概念。
1.DispatcherServlet
在刚才的MVC讲解中,我们有提到Font Controller(前端控制器), 在SpringMVC框架中,我们的DispatcherServlet就是扮演了一个前端控制器的角色,它负责把请求分发给不同的Controller去进行下一步的数据抽取和业务处理。从开发的角度来讲,有点类似于传递到了后台。
2.Controller
控制器,负责后台的数据抽取和数据处理。并把结果返回。
3. HandlerAdapter
从字面意思,我们不难理解,HandlerAdapter是一个适配器。从流程来讲,它处在DispatcherServlet和Controller之间,负责将不同的Controller适配成DispatcherServlet可Handler。
4. HandlerInterceptor
这个是一个拦截器。查阅说明文档,可以发现,这是一个接口。有三个方法,分别是preHandle、postHandle、afterCompletion. 很容易,我们可以 看出,该拦截器是在要拦截的对象两端进行一些自己需要的处理,这些处理根据业务需要自行配置和实现,可以不设置。PreHandle是提交之前,postHandle是提交之后,afterCompletion是指完成已有,具体而精准的使用请自行查阅。我们需要知道的是,它允许我们对提交对象做一些我们需要的处理和控制。
5. HandlerMapping
这是一个映射。主要的作用有两个,一个是帮助DispatcherServlet和对应的Controller做拼配,由于业务需要,有时候可能会有多个Controller存在,HandlerMapping用来指明当前请求应该由哪一个Controller来负责响应。另外一个作用,HandlerMapping会把附加在当前请求对象上的操作(由HandlerInterceptor指明的处理和操作)和负责响应该请求的Controller包装成一个Model, 形成一个执行链条,返回给HandlerServlet。
这里写图片描述
6. HandleExecutionChain
这个就是我们刚才说的执行链条。
这里写图片描述
7. ModelAndView
在我们的java中有map这种类。而在SpringMVC中,我们使用的是ModelAndView,我们可以将它看成是一个model对象。而我们在程序中无论使用了model还是map, 都会被转换成ModelAndView这种类型,继续下一步的处理。

    8. ViewResolver
    这是一个试图解释器,负责匹配由哪一个试图模板显示当前的处理结果。

好的,到这里,SpringMVC的铺垫基本就完成了,下一篇,我们用各种方式来搭建一下SpringMVC的运行环境,并分析这几种方式的具体细节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值