Spring MVC 设计概述

  MVC设计的根本原因在于解耦各个模块

Spring MVC的架构

  对于持久层而言,随着软件发展,迁移数据库的可能性很小,所以在大部分情况下都用不到Hibernate的HQL来满足移植数据库的要求。与此同时,性能对互联网更为重要,不可优化SQL、不够灵活成了Hibernate难以治愈的伤痛,这样MyBatis就崛起了。无论是Hibernate还是MyBatis都没处理好数据库事务的编程,同时随着各种NoSQL的强势崛起,使得Java Web应用不仅能够在数据库获取数据,也可以从NoSQL中获取数据这些已经不是持久层框架能够处理的了,而Spring MVC给出了方案,如图所示。


  图展示了传统的模型层被拆分为业务层(Service)和数据访问层(DAO,Data Access Object)。在Service下可以通过Spring的声明式事务操作数据访问层,而在业务层上还允许我们访问NoSQL,这样就能够满足现今异军崛起的NoSQL的使用了,它的使用将大大提高互联网系统的性能。对于Spring MVC而言,其最大的特色是结构松散,比如几乎可以在Spring MVC中使用各类视图,包括JSON、JSP、XML、PDF等,所以它能够满足手机端、页面端和平板电脑端的各类请求,这就是现在它如此流行的原因

Spring MVC组件与流程

  Spring MVC的核心在于其流程,这是使用Spring MVC框架的基础,Spring MVC是一种基于Servlet的技术,它提供了核心控制器DispatcherServlet和相关的组件,并制定了松散的结构,以适合各种灵活的需要。为了让大家对Spring MVC有一个最简单的认识,首先给出其组件和流程图,如图所示。


  图中的阿拉伯数字给出了Spring MVC的服务流程及其各个组件运行的顺序,这是Spring MVC的核心。
  首先,Spring MVC框架是围绕着DispatcherServlet而工作的,所以这个类是其最为重要的类。从它的名字来看,它是一个Servlet,那么根据Java EE基础的学习,我们知道它可以拦截HTTP发送过来的请求,在Servlet初始化(调用init方法)时,Spring MVC会根据配置,获取配置信息,从而得到统一资源标识符(URI,Uniform Resource Identifier)和处理器(Handler)之间的映射关系(HandlerMapping),为了更加灵活和增强功能,Spring MVC还会给处理器加入拦截器,所以还可以在处理器执行前后加入自己的代码,这样就构成了一个处理器的执行链(HandlerExecutionChain),并且根据上下文初始化视图解析器等内容,当处理器返回的时候就可以通过视图解析器定位视图,然后将数据模型渲染到视图中,用来响应用户的请求了。
  当一个请求到来时,DispatcherServlet首先通过请求和事先解析好的HandlerMapping配置,找到对应的处理器(Handler),这样就准备开始运行处理器和拦截器组成的执行链,而运行处理器需要有一个对应的环境,这样它就有了一个处理器的适配器(HandlerAdapter),通过这个适配器就能运行对应的处理器及其拦截器,这里的处理器包含了控制器的内容和其他增强的功能,在处理器返回模型和视图给DispacherServlet后,DispacherServlet就会把对应的视图信息传递给视图解析器(ViewResolver)。注意,这一步取决于是否使用逻辑视图,如果是逻辑视图,那么视图解析器就会解析它,然后把模型渲染到视图中去,最后响应用户的请求;如果不是逻辑视图,则不会进行处理,而是直接通过视图渲染数据模型。这就是一个SpringMVC完整的流程,它是一个松散的结构,所以可以满足各类请求的需要,为此它也实现了大部分的请求所需的类库,拥有较为丰富的类库供我们使用,所以流程中的大部分组件并不需要我们去实现,只是我们应该知道整个流程,熟悉它们的使用就可以构建出强大的互联网系统了。

文章来源:SSM14.1

原文地址:https://www.cnblogs.com/ooo0/p/11103381.html

时间: 2024-08-01 06:14:14

Spring MVC 设计概述的相关文章

Spring MVC 设计架构思想

在整个Spring设计思想中,切面模块思想十分重要. 在Spring MVC Controller中是面向Model编程的. 不管是Cookie,Session,或是postData 都会被转换成Models, 最后,Models也会根据注解被自动转换为 Cookie, Session,  或者页面.

Spring MVC 体系概述

Spring MVC 框架围绕 DispatcherServlet 这个核心展开,DispatcherServlet 是 Spring MVC 的总导演.总策划,它负责截获请求并将其分派给相应的处理器处理.Spring MVC 框架包括注解驱动控制器.请求及响应的信息处理.视图解析.本地化解析.上传文件解析.异常处理及表单标签绑定等内容. 1.体系结构 Spring MVC 是基于 Model 2 实现的技术框架,Model 2 是经典的MVC(Model.View.Control)模型在 We

Spring MVC 编程基础

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 12.0pt; font-family: Consolas } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 21.25pt; text-align: justify

Spring MVC【入门】

MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 Java ,还要有高超的前端水平 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试 代码难以复用 正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP

spring mvc学习 总体概览

spring mvc 设计概览 springmvc处理http请求,主要是在web.xml中配置一个dispatcherservlet,然后由此进行拦截并处理请求返回相应,下面就针对源码大体记录下dispatcherservlet的初始化和请求的处理流程. 具体的核心开发步骤: 1. DispatcherServlet在web.xml 中的部署描述,从而拦截请求到Spring Web MVC 2. HandlerMapping的配置,从而将请求映射到处理器,这里可以通过实现HandlerMapp

带着问题学 Spring MVC 源码: 一、概述

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 简单就好,生活可以很德国 Q:什么是 Spring MVC ? ※ Spring MVC 是 Spring Web 的一个重要模块.Spring 支持 Web 应用,Spring MVC 是对 MVC 模式的支持. Q:MVC 模式? ※ MVC 模式是种经典的软件架构,分 Model 模型.View 视图及 Controller 控制器 三种角色.架构的意图明显区分三种角色的职责,使其不相互

01 - spring mvc 概述及配置DispatcherServlet

1.Spring mvc 基于model2实现,整体框架流程如(图片来自百度): ①web容器接收到http请求,若匹配DispatcherServlet的请求映射路径(web.xml),则容器会交给DispatcherServlet处理. ②DispatcherServlet根据请求的信息及handlerMapping(类似路由功能)的配置找到处理请求的Handler. ③Handler adapter对handler进行封装,使用统一的方法对Handler方法进行调用 ④处理器完成业务逻辑后

spring MVC概述

springMVC是当前最优秀的MVC框架,springMVC使用简单,学习成本低,很容易写出性能优秀的程序,灵活性高. 1.Spring MVC的核心类与接口 DispatcherServlet  前段控制器(总控制器),将发送的请求转发到具体控制类. HandlerMapping  映射处理器,负责映射中央处理器转发给Controller时的映射策略.一共分为三种. 1.BeanNameUrlHanderMapping: 按着controller的name来映射寻找.默认 2.SimpleU

Spring MVC 概述

[简介] Spring MVC也叫Spring web mvc,属于表现层的框架.SpringMVC是Spring框架的一部分,是在Spring 3.0后发布的. 由以上Spring的结构图可以看出,Spring由四大部分组成:Dao部分(DAO与ORM).AOP部分.Web部分(JEE与Web)及IOC容器部分(Core). 原文地址:https://www.cnblogs.com/zhzcode/p/9606964.html