Spring MVC框架详解(一)

一、三层架构与MVC模型

  • 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器架构,另一种是B/S架构,也就是浏览器/服务器架构。在JavaEE开发中,几乎都是基于B/S架构的开发。
  • 在B/S架构中,系统标准的三层架构包括:表现层业务层持久层

Spring MVC框架详解(一)_第1张图片

1. 三层架构

表现层:(web层)

  • 也就是我们常说的web层。它负责接收客户端的请求,向客户端响应结果,通常客户端使用HTTP协议请求web层,web层需要接收HTTP请求,完成HTTP响应。
  • 表现层包括展示层和控制层,其中控制层负责接收请求,展示层负责结果的展示。
  • 表现层依赖于业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。
  • 表现层的设计一般都是使用MVC模型。(MVC是表现层的设计模型,和其他层没有关系)。

业务层:(service层)

  • 也就是我们常说的service层。它负责业务逻辑的处理,和我们开发项目的需求息息相关。web层依赖于业务层,但是业务层不依赖web层。
  • 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性(也就是我们常说的事务应该放在业务层来控制)

持久层:(dao层)

  • 也就是我们常说的dao层。它负责数据持久化,包括数据层即数据库和数据库访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗来讲,持久层就是和数据库交互,对数据库表进行增删改查的。

2. MVC模型

简介:

MVC模型的全名是Model-View-Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于创建web应用程序表现层(web层)的模式

原理:

当浏览器向服务器发送请求的时候,请求首先到控制器(Servlet),控制器(Servlet)接收到请求以后,将请求中的数据封装到数据模型中(JavaBean对象)。此时,数据模型(JavaBean对象)可以到业务层调用相应的业务逻辑,当业务层执行完毕以后,将处理结果再次封装到数据模型(JavaBean对象)中。最后将数据模型中的数据通过视图(JSP或HTML页面)响应给浏览器并展示给用户。

描述:

  • Model(模型):通常指的是我们的数据模型。作用一般情况下用于封装数据(即JavaBean对象)。
  • View(视图):通常指的是我们的JSP或者HTML。作用一般情况下用于展示数据。通常视图是依据模型数据创建的。(即JSP或HTML页面
  • Controller(控制器):通常是应用程序中处理用户交互的部分。作用一般情况下用于处理程序逻辑。(即Servlet

 

二、SpringMVC框架

1. 简介

  • SpringMVC框架是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级web框架,属于Spring FrameWork的后续产品,已经融合在Spring Web Flow里面。
  • SpringMVC框架已经成为目前主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struct2,或成为最优秀的MVC框架。
  • SpringMVC框架通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持RESTful编程风格的请求。

2.SpringMVC在三层架构的位置

Spring MVC框架详解(一)_第2张图片

3.SpringMVC框架与Struts2的优劣分析

共同点:

  • 它们都是表现层(web层)框架,都是基于MVC模型编写的。
  • 它们的底层都离不开Servlet。
  • 它们处理请求的机制都是一个核心控制器。

区别:

  • SpringMVC框架的入口是Servlet,而Struts2框架的入口是Filter
  • SpringMVC框架是基于方法设计的,而Struts2框架是基于类设计的,Struts2框架每次执行都会创建一个Action类,所以SpringMVC框架会稍微比Struts框架块些。
  • SpringMVC框架使用更加简介,同时还支持JSR303,处理Ajax的请求更方便。
  • Struts2框架的OGNL表达式使页面的开发效率相比SpringMVC框架更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有HTML执行效率高。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(web框架,springmvc)