SSM框架学习笔记8—SpringMVC背景

SSM框架学习笔记8—SpringMVC篇背景

  • 1 背景概述
    • 1.1 表现层的三大课题
    • 1.2 MVC框架模式
      • 1.2.1 框架介绍
      • 1.2.2 模型Model
      • 1.2.3 视图View
      • 1.2.4 控制器Controller
      • 1.2.5 MVC的好处
    • 1.3 MVC与SpringMVC的联系
  • 2. SpringMVC
    • 2.1 介绍
    • 2.2 和struts对比
    • 2.3 工作流程
    • 2.4 主要接口

SSM框架学习笔记系列,记录的是我在参加学校的京淘项目时所学习的内容,经我个人总结整理而成为本系列学习笔记。预计将分开为X篇进行记录,目前已有10篇。

接下来是这一系列的第八篇学习笔记


1 背景概述

1.1 表现层的三大课题

  1. URL到框架的映射
  2. http请求参数绑定
  3. http响应的生成和输出

1.2 MVC框架模式

1.2.1 框架介绍

MVC是模型(model)-视图(view)-控制器(controller)的缩写。他是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 [1-2]

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。 [3]

1.2.2 模型Model

Model(模型)表示应用程序核心(比如数据库记录列表),表示企业数据和业务规则,是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。

在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,也就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性

1.2.3 视图View

View(视图)是应用程序中处理数据显示的部分,也就是用户看到并与之交互的界面。通常视图是依据模型数据创建的。

对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.

1.2.4 控制器Controller

Controller(控制器)处理输入(写入数据库记录),是应用程序中处理用户交互的部分。

控制器将接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

1.2.5 MVC的好处

  1. MVC分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
  2. MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
  3. 它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

1.3 MVC与SpringMVC的联系

MVC是一种框架模式,springMVC框架是基于Java的实现了MVC框架模式的请求驱动类型的轻量级框架。


2. SpringMVC

2.1 介绍

SpringMVC是Spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行整合。

SpringMVC是一个基于MVC的web框架。Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,全面引入注解方式,号称xml零配置。spring3.0配置注解引入后也就是这个点成为了它和struts2的分水岭。现在越来越多的开发团队选择了Spring MVC。

2.2 和struts对比

Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。

Spring3 MVC的优点:

  1. SpringMVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。
  2. SpringMVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
  3. SpringMVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,SpringMVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
  4. 角色清晰,分工明确,进行更简介的web开发;
  5. 和其他Spring框架无缝集成;
  6. 强大的JSP标签库;
  7. HandlerMapping, ViewResolver等能够简单地进行定制;

性能对比图:
SSM框架学习笔记8—SpringMVC背景_第1张图片SSM框架学习笔记8—SpringMVC背景_第2张图片

2.3 工作流程

SSM框架学习笔记8—SpringMVC背景_第3张图片
如上图所示为SpringMVC的工作流程图,前端控制器是DispatcherServlet接口实现类,映射处理器是HandlerMapping接口实现类,视图解析器是ViewResolver接口实现类,页面控制器是Controller接口实现类。SpringMVC的工作流程如下:

(1)客户端请求提交到前端控制器DispatcherServlet
(2)前端控制器DispatcherServlet查找一个或者多个映射处理器HandlerMapping,从而确定调用哪个页面控制器Controller对请求进行处理;
(3)DispatcherServlet将请求提交给Controller;
(4)Controller根据业务逻辑对请求进行处理,并返回ModelAndView;
(5)DispatcherServlet查找一个或者多个ViewResolver,得到ModelAndView指定的视图view,并将model中的数据传入视图view中进行渲染;
(6)DispatcherServlet将渲染后的视图返回响应;

由上述过程可见,DispatcherServlet是Spring MVC的核心,它负责协调SpringMVC的各个组成部分对所有的Http请求进行处理,其主要工作如下:

(1)截获符合特定格式的Http请求;
(2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久层的WebApplicationContext关联起来;
(3)初始化Spring MVC的各个组件,并装配到DispatcherServlet中;

2.4 主要接口

DispatcherServlet接口:Spring提供的前端控制器,所有的请求都是由它来进行分发。在DispatcherServlet将请求分发到对应的Controller之前,需要借助Spring提供的HandlerMapping才能定位到相应的Controller.

HandlerMapping接口:完成客户请求到Controller的映射。

Controller接口:需要为并发用户处理请求,在实现Controller接口时,必须保证线程安全且可重用。具体地,框架在Controller完成用户请求的处理后,返回ModelAndView对象给DispatcherServlet,ModelAndView对象中包含了模型Model和视图View。

从宏观角度进行考虑,DispatcherServlet是整个Web应用的控制器;从微观角度进行考虑,Controller是单个Http请求处理过程的控制器。

ViewResolver接口:根据ModelAndView对象在web应用查找view视图,并将model中是数据传入到view视图中进行渲染。


未完待续…


目前为止这一系列已更新的学习笔记导航:
SSM框架学习笔记1——Maven
SSM框架学习笔记2——Maven安装及配置
SSM框架学习笔记3——SpringBoot介绍与使用
SSM框架学习笔记4—Junit单元测试
SSM框架学习笔记5—Mybatis
SSM框架学习笔记6—Mybatis Plus
SSM框架学习笔记7—Spring
SSM框架学习笔记8—SpringMVC背景
SSM框架学习笔记9—SpringMVC常用注解和RESTful介绍
SSM框架学习笔记10—SpringMVC请求和响应

你可能感兴趣的:(SSM,spring,mvc,java)