01-1、SpringMVC概述

目录

 

1、SpringMVC的基本概念

1.1 三层架构

1.2 MVC模型

1.3 SpringMVC概述


1、SpringMVC的基本概念

1.1 三层架构

开发架构:C/S架构,B/S架构(浏览器服务器,客户端/服务器)

系统标准的三层架构包括:表现层,业务层,持久层

表现层:
web层,它负责接收客户端请求,向客户端响应结果,通过客户端使用http协议请求web层,web需要接收http请求,完成http响应。

表现层:包括展示层控制层

  • 控制层,负责接收请求。
  • 展示层,负责结果的展示。
  • 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。
  • 表现层的设计,一般都使用MVC模型,MVC是表现层的设计模型,和其它层没有关系。

业务层:
service层,负责业务逻辑处理,与开发项目的需求有关。

  • web层依赖业务层,但是业务层不依赖web层。
  • 业务层在业务处理时,可能会依赖持久层,如果要对数据持久化,需要保证事务一致性,即事务应该放到业务层来控制

持久层:
dao层,负责数据持久化,包括数据层,即数据库和数据访问层。

  • 数据库,是对数据进行持久化的载体;
  • 数据访问层,业务层持久层交互的接口
  • 业务层需要通过数据访问层,将数据持久化到数据库中;
  • 持久层,就是和数据库交互,对数据库表进行增删改查。

 

1.2 MVC模型

MVC,全名是Model View Controller,模型-视图-控制器的缩写,是一种用于设计创建Web应用程序表现层的模式。

MVC各部分职责:

  • Model(模型):指数据模型,一般用于封装数据;
  • View(视图)指jsp或者html,一般用于展示数据。视图是依据模型数据创建的
  • Controller(控制器):应用程序中,处理用户交互的部分,一般是处理程序逻辑的。

Controller控制器

举例:要保存一个用户的信息,该用户信息中包含姓名,性别,年龄等;

要求:表单输入要求年龄必须是1~100之间的整数,姓名和性别不能为空,并且把数据填充到模型之中。

此时,除了js的校验外,服务器端也应有数据准确性的校验,那么校验就是控制器该做的。

  • 当校验失败后,由控制器负责把错误页面展示给是使用者;
  • 如果校验成功,控制器负责把数据填充到模型,并且调用业务层实现完整的业务需求。

01-1、SpringMVC概述

MVC设计模型:

  • M     model模型,JavaBean
  • V     View视图,JSP、html
  • C     Controller控制器,Servlet

 

1.3 SpringMVC概述

SpringMVC,是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架;

  • 属于Spring FrameWork的后续产品,已经融合在Spring Web Flow里面;
  • Spring框架提供了构建Web应用程序的全功能MVC模块;
  • 使用Spring可插入的MVC架构,从而在使用Spring进行Web开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等;
  • SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring3.0发布,全面超越Struts2,成为最优秀的MVC框架;
  • 它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口,同时,它还支持RESTful编程风格的请求。

 

SpringMVC的优势

各角色划分:

  • 前端控制器(DispatcherServlet)
  • 请求处理器映射(HandlerMappering)
  • 处理器适配器(HandlerAdapter)
  • 视图解析器(ViewReslover)
  • 处理器或页面控制器(Controller)
  • 验证器(Validator)
  • 命令对象(Command 请求参数绑定到的对象)
  • 表单对象(Form Object 提供给表单展示和提交到的对象)

 

优势:

  • 分工明确,而且扩展点相当灵活,可以很容易扩展;
  • 由于命令对象就是一个POJO,无须继承框架特定API,可以使用命令对象直接作为业务对象;
  • 和Spring其他框架无缝继承,是其他Web框架所不具备的;
  • 可适配,通过HandlerAdapter可以支持任意的类作为处理器;
  • 可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
  • 功能强大的数据验证、格式化、绑定机制;
  • 利用Spring提供的Mock对象,能够非常简单的进行Web层单元测试;
  • 本地化,主题的解析的支持,使我们更容易进行国际化和主题的切换;
  • 强大的JSP标签库,使JSP编写更容易;
  • RESTful风格的支持
  • 简单的文件上传
  • 约定大于配置的契约式编程支持
  • 基于注解的零配置支持等。

 

SpringMVC和Struts2的优略分析  ---面试时可以用上

  • 共同点:
  1. 它们都是表现层框架,都是基于MVC模型编写的;

  2. 它们的底层都离不开原始ServletAPI

  3. 它们处理请求的机制,都是一个核心控制器

  • 区别:
  1. SpringMVC的入口是Servlet,而Struts2是Filter;
  2. SpringMVC是基于方法设计的,而Struts2是基于类,Struts2每次执行都会创建一个动作类,所以SpringMVC会稍微比Struts2快些;
  3. SpringMVC使用更加简洁,同时还支持JSR303,处理ajax的请求更方便;
  4. JSR303是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面,就可以在需要校验的时候进行校验了;
  5. Struts2的OGNL表达式使页面的开发效率相比SpringMVC更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有html执行效率高。

01-1、SpringMVC概述