SpringMVC框架理解

1.1 关于三层架构和MVC

1.1.1 三层架构

  • 我们开发架构一般都是基于两种形式的,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器。在JavaEE开发中,几乎全部都是基于B/S结构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。
  • 三层架构中,每一层都各司其职,接下来说说每一层都负责哪些方法:
  • 表现层:也就是我们常说的web层,它负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求web层,web需要接收http请求,完成http响应。表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果展示。表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。表现层的设计一般都使用MVC模型。(MVC是表现层的设计模式,和其他层没有关系
  1. 获取请求数据
  2. 调用Service
  3. 根据Service返回结果,响应返回数据
  • 业务层:也就是我们常说的Service层。它负责业务逻辑处理,和我们开发项目的需求信息相关。web层依赖业务层,但是业务层不依赖web层。业务层在处理业务可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就是我们说的,事务应该放到业务层来控制) 
  •  持久层:也就是我们常说的dao层。负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗的说,持久层和数据库交互,对数据库进行增删改查。

 1.1.2 MVC模型

  • MVC全名是Model View Controller ,是模型(Model)-视图(View)-控制器(Controller)的缩写,是一种用于设计web应用程序表现层的模式。MVC中每个部分各司其职:
  • Model(模型):通常指的就是我们的数据模型。作用一般情况下用于封装数据
  • View(视图):通常指的就是我们的jsp或者 HTML。作用一般就是展示数据的。通常视图是依据模型数据创建的。
  • Controller(控制器):是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。它相对于前两个不是很好理解,这里举个例子:我们要保存一个用户的信息,该用户信息中包含了姓名、性别、年龄等等。这时候表单输入要求年龄必须是1~100之间的整数。姓名和性别不能为空。并且把数据填充到模型之中。此时除了js的校验之外,服务器端也应该有数据准确性校验,那么校验就是控制器该做的事情

1.1.3 总结

  •  三层架构:项目分层开发
  • 表现层:获取请求数据、调用业务方法、根据业务响应返回结果
  • 业务层:与具体框架无关
  • 数据访问层:mybatis框架
  • MVC设计模式?
  • MVC设计模式,是表现层用到的设计模式
  • Model :模型    封装数据(entity、service、dao)
  • View: 视图    jsp、HTML...  呈现数据
  • Controller 控制器  Servlet、filter控制业务流转 
  • 获取请求数据(三种方式):获取请求数据有几种方式,由HTTPServletRequest对象决定。 
  • 原始的HTTP协议数据获取:
  • GET:request.getQueryString();//name=aaa&pwd=8888
  • POST :request.getInputStream()
  • request.getParameter();
  • request.getParameterValues();
  • request.getInputStream();
  • 响应(三种方式):响应结果由HTTPServletResponse对象决定。
  • response.getRequestDispatcher().forward();
  • response.sendRedirect();
  • response.getWriter().writer();//返回json字符串
  • SpringMVC就是MVC模式的实现。 

 2.1 SpringMVC概述

2.1.1 SpringMVC是什么

  • SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFramework的后续产品,已经融合在Spring Web Flow里面。
  • Spring框架提供了构建web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行web开发时,可以选择使用Spring的SpringMVC框架或集成其它的MVC开发框架,如Struts1(现在一般不用),Struts2等。
  • SpringMVC已经成为目前最主流的MVC框架之一,从Spring3.0的发布,就已经全面超越Struts2,成为最优秀的MVC框架。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持RESTful编程风格的请求
  • 侵入式设计:class MyServlet extends HttpServlet

  • 非侵入式设计:class MyController 处理请求

2.1.2 SpringMVC在三层架构的位置

 SpringMVC框架理解_第1张图片

 2.1.3SpringMVC的好处

  • 清晰的角色划分:
  1. 前端控制器(DispatcherServlet)
  2. 请求搭配处理器映射(HandlerMapping)
  3. 处理器适配器(HandlerAdapter)
  4. 视图解析器(ViewResolver)
  5. 处理器或页面控制器(Controller)
  6. 验证器(Validator)
  7. 命令对象(Command请求参数绑定到的对象就叫命令对象)
  8. 表单对象(Form Object提供给表单展示和提交到的对象就叫表单对象)
  1. 清晰的角色划分
  2. 分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要。
  3. 由于命令对象就是一个POJO,无需继承框架特定的API,可以使用命令对象直接作为业务对象。
  4. 和Spring其它框架无缝集成,是其它web框架所不具备的。
  5. 可适配,通过HandlerAdapter可以支持任意的类作为处理器。
  6. 可定制性,HandlerMapping、ViewResolver等能够非常简单的定制。
  7. 功能强大的数据验证、格式化、绑定机制。
  8. 利用Spring提供的Mock对象能够非常简单的进行web层单元测试。
  9. 本地化、主题的解析的支持,使得我们更容易进行国际化和主题的切换。
  10. 强大的JSP标签库,使JSP编写更容易。

你可能感兴趣的:(SpringMVC框架)