一文搞懂spring工作的流程

MVC模式是在Java的Web应用开发中非常常用的模式。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

总之MVC模式实现了页面展示与业务逻辑向分离,这也是解耦的重要实现方式。由于mvc模式非常常用,当前基于MVC模式的框架也有很多,如struts2,springmvc,jsf等。

本篇开始介绍关于SpringMVC的基本使用以及源码分析。

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

首先说一下SpringMVC的架构,通过SpringMVC的架构,我们能更好的理解SpringMVC的工作流程。

其工作流程为: 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(二者组成HandlerExecutionChain),并将其一并返回给DispatcherServlet。 4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器 5、执行处理器(Controller,也叫后端控制器)。 6、Controller执行完成返回ModelAndView 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9、ViewReslover解析后返回具体View 10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。 11、DispatcherServlet对用户进行响应

简而言之,SpringMVC通过DispatcherServlet这个前端控制器(也叫中央调度器,我认为中央调度器更能体现其作用),来调用mvc的三大件:Controller、Model、View。这样就保证MVC的每一个组件只与DispatcherServlet耦合,而彼此之间独立运行,大大降低了程序的耦合性。

再来说一下,SpringMVC这个框架时如何实现MVC模式的。 注意SpringMVC中并没有涉及有关于Controller接口规范的实现,SpringMVC是通过调用Handler来实现Controller这一层的。

SpringMVC使用了适配器模式,前端控制器使用HandlerAdapter来调用不同的Controller,然后才是Controller调用Model产生数据模型; 产生的数据模型将会再次返回到前端控制器,并由前端控制器决定使用不同的模板引擎将页面进行渲染。

https://blog.csdn.net/james_shu/article/details/54616120

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-06-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏水击三千

SpringMvc学习-环境搭建

最近在学习SpringMVC,首先来说说SpringMVC项目的搭建。 1.SpringMVC简介 spring Web MVC是一种基于Java的实现了Web...

2477
来自专栏别先生

第一个Struts2实例之hello world!

Struts官网: http://struts.apache.org/ Struts2框架预先实现了一些功能     1:请求数据自动封装     2:文件上...

2109
来自专栏Java技术栈

终于,Spring 5.0正式发布了!

Spring 5.0都有什么新功能? 1、最低要求支持JDK8+, J2EE 7+。 2、移除了一些包、类及方法。 3、核心功能加强:全面应用jdk8并兼容j...

3217
来自专栏noteless

spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。

1186
来自专栏lgp20151222

struts2中action的class属性值意义

struts2单独使用时action由struts2自己负责创建;与spring集成时,action实例由spring负责创建(依赖注入)。这导致在两种情况下s...

662
来自专栏DT乱“码”

POST中文乱码解决方案

POST中文乱码解决方案 ? Spring Web MVC提供了Filter用于解决POST方式造成的中文乱码问题,具体配置 如下: <filter> ...

1925
来自专栏java架构学习交流

java web方面的面试问题,Spring MVC方面的面试问题,摘自java web轻量级开发面试教程

下面列出Spring Web方面的常见问题,除此之外,大家也可以自己不断收集,不断提升。 问题1,你们的项目是如何搭建Spring Web框架的,具体而言,如何...

1988
来自专栏冷冷

@ResponseBody响应JSON 406

搭建SpringMVC(4.1),但是搭建完成以后发现使用@ResponseBody的ajax无法访问,总是出现406的问题。 首先怀疑的是配置问题,经过查明,...

1828
来自专栏云霄雨霁

Java--SpringMVC架构原理分析

1807
来自专栏Java面试笔试题

Spring MVC的工作原理是怎样的?

① 客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求。 ② DispatcherSer...

633

扫码关注云+社区