SpringMVC简介

一、MVC模式

MVC是一种设计模式,是模型(Model),视图(View)和控制(Controller)的缩写。本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离,流程控制逻辑、业务逻辑调用与展示逻辑分离。最终目的是实现系统的职能分工。其中:
Model层:数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。表示应用程序核心(比如数据库记录列表),用于处理数据逻辑; 
View层:用于与用户的交互,用来显示数据(数据库记录),依据模型视图创建的。简单点说就是负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西
Controller层:是Model与View之间沟通的桥梁(或者可以理解它是一个调度员),它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

二、WEB应用程序的演变:

web应用是基于浏览器/服务器(B/S)的交互模式.一般的流程是:
1.用户在客户端发起请求
2.服务器接收到请求后,处理请求(例如查找用户信息)
3.服务器处理完成后,根据结果渲染页面,返回信息给客户端浏览器。

对于WEB应用程序的开发,也经历了从NoMVC的划分,到MVC划分过程的演变。
1.CGI:最早用来给用户返回动态页面的技术叫CGI(Common GateWay Interface),一种在web服务端使用的脚本技术,使用C或Perl语言编写,用于接收web用户请求并处理,最后动态产生响应给用户,但每次请求将产生一个进程,重量级。
2.Servlet:对于JavaEE程序,最早产生了一个JAVAEE的组件,也就是Servlet对象,用于接收用户的请求并处理,最后动态产生响应给用户。但每次请求只产生一个线程(而且有线程池),轻量级。而且能利用许多Java技术(如JDBC等)。本质就是在java代码里面输出html流。但表现逻辑、控制逻辑、业务逻辑调用混杂。使用存粹的Servlet来处理请求是绝对不可取的,逻辑控制、数据展示、请求转发等混杂在一起,最大的问题是直接在Java代码里面输出Html,这样前端开发人员无法进行页面风格等的设计与修改,即使修改也是很麻烦,因此实际项目这种做法不可取。
3.JSP:原来Servlet中的操作大部分浪费在对于HTML页面的输出,真正java代码的逻辑处理等可能相对较少(换句话说,Servlet相当于在Java代码中嵌套了html),我们就希望能够将java代码和HTML的输出过程反过来,就有了JSP的产生(JSP相当于在html中嵌套java代码,编译后还是一个Servlet)。相对应Servlet更简单方便。使用存粹的JSP开发应用程序,前端人员可以进行页面风格等的设计和修改,但是逻辑控制,数据展示,包括请求转发依然混杂在一起(根据单一职责原则,我负责的功能越多,责任越大,独立性越差,可重用性越低),可读性也很差。
4.Model1: JSP+JavaBean
此时jsp中可以使用<jsp:useBean>来简化从请求参数到数据模型的封装。但是 也仅止于此。我的请求逻辑的控制,数据展示等依然混杂。只是比纯JSP简化了获取请求参数和封装请求参数
5.Model2: Servlet+JSP+JavaBean
在JavaEE世界里,它可以认为就是Web MVC模型
6.将Model5进行细化。和ServletAPI解耦。
将控制器分为:
1.中央控制器:统一接收用户请求,对请求做先一步的处理。然后根据不同的参数,调用不同的业务逻辑控制器
2.业务逻辑控制器:根据请求不同处理不同的业务逻辑,将逻辑结果,交给视图控制器。
3.视图控制器:根据业务逻辑控制器返回的结果,选择合适的视图/页面进行返回。

三、SpringMVC框架的介绍

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。
简单点说,SpringMVC就是Spring提供的一个模块。是一个基于MVC的web应用的框架。SpringMVC框架提供了MVC模式在B/S架构中的应用。

四、SpringMVC框架

Spring的mvc框架跟其他的Web MVC框架一样,请求驱动,设计围绕一个能够分发请求到控制器并且提供其他加快web应用开发功能的核心Servlet(DispatcherServlet)。Spring的DispatcherServlet实现比上边还要多的功能。它和spring的ioc容器完全整合,并且允许你使用spring具有的其他的所有的功能。
SpringMVC框架设计的一个核心的原则就是“开闭原则”,对扩展开放,对修改关闭.所以SpringMVC框架中很多方法都是final的不允许用户随意覆盖行为,但是却提供给用户很多可扩展的机制。SpringMVC目前已经成为非常流行的web应用的框架。

SpringMVC的DispatcherServlet处理请求的过程,详见(SpringMVC_work_flow.png)


五、SpringMVC框架的搭建.

所谓框架,就是能够帮助我们快速搭建应用结构的一些代码的集合,他们一般按照编者的习惯,按照某种包结构制作成jar包,所以如果我们需要用到框架,请将框架中需要的jar包获取,使用(spring-3.2.4,如需其他版本请自行下载)。
所有的web应用都是基于B/S架构的应用框架。都是客户端浏览器发送请求,然后服务器接收到请求之后,按照url的解析规则,将请求转发到不同的应用程序。

    5.1 SpringMVC框架中提供给用户如下几个概念:
1.DispatcherServlet : 核心控制器,用来过滤客户端发送过来,想要进行逻辑处理的请求。
2.Handler(Controller): 处理器。开发人员自定义,用来处理用户请求的,并且处理完成之后返回给用户指定视图的对象。
3.HandlerMapping:处理器映射器。DispatcherServlet在根据URL转发请求给Handler时得有一个匹配规则,这个匹配规则由HandlerMapping决定。
4.HandlerAdaptor:处理器适配器。处理器适配器用来适配每一个要执行的Handler对象。
5.ViewResolver:视图解析器。Handler返回的是逻辑视图名,需要有一个解析器能够将逻辑视图名转换成实际的物理视图。而且Spring的可扩展性决定了视图可以由很多种,所以需要不同的视图解析器,解析不同的视图。
5.2 SpringMVC基本处理过程介绍:
SpringMVC框架提供一个核心的Servlet对象(DispatcherServlet)来对服务器转交给应用的所有的请求资源进行解析。当这个请求被DispatcherServlet获取到之后,DispatherServlet需要根据HandlerMapping对象的映射关系,将这个请求转交给真正能够处理客户端请求的处理器(Handler,这些Handler应该是应用程序开发人员提供的)来处理。Handler处理完成后返回给用户ModelAndView,也就是模型和视图的结合体。ViewResolver根据ModelAndView中的逻辑视图名找到真正的物理视图,同时使用ModelAndView中的模型对视图进行渲染
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值