Spring Web MVC 流程

Dispatcher Servlet

这是一个前端分派 Servlet(前端控制器模式),外部所有的请求都会先到达这里,然后由其将请求分派给其他组件进行实际的处理。

Handler Mapping

处理器映射,由 DispatcherServlet 通过 url 信息查询映射表,确定该请求要分派给哪个 Controller(即 Handler)。

Controller

请求被从 DispatcherServlet 发送到合适的 Controller 后,会在这里卸下它的负载(request context)并等待控制器处理这些信息。

实际上,设计良好的 Controller 本身只处理很少的工作(甚至根本不处理),而是将业务逻辑委托给一个或多个 Service 对象进行处理。

在处理完信息后,Controller 将模型数据打包进 Model 中,然后内部会自动将 Model 和 ViewName 打包成 ModelAndView 回传给 DispatcherServlet。(如果该方法有 @Repsonsebody 注解,则会跳过后面的视图解析,直接写入流)

Service

业务逻辑应该在这里实现

Repository

即 DAO(Data Access Object),专门连接数据库做增删查改用。

View Resolver

视图解析器,通过 Controller 返回的 ViewName 查询对应的 View。

View

这是请求的最后一站,在这里,View 得到 Model 对象,并将该对象中的数据渲染,然后该输出会被作为响应体返回给客户端。

使用 Spring Web MVC

配置 DispatcherServlet

Java Servlet 是 Java Web 的核心技术,所有的 Http 请求都要通过它进行处理,Http 响应对象都要通过它来填充。因此要使用 Spring Web MVC,首先要在 Servlet 容器中配置 DispatcherServlet。传统的配置方式是使用 web.xml,从 Spring3.1 和 Serlvet 3.0 规范开始,可以使用基于 Java 类的方式来配置 Servlet。

在 Serlvet3.0 环境中,Servlet 容器会在 classpath 中查找实现了 javax.servlet.ServletContainerInitializer 接口的类,如果找到了,就使用它来配置 Servlet 容器。从 Spring3.2 开始,可以直接继承 AbstractAnnotationConfigDispatcherServletInitializer 类,该类提供了一个很方便的基础实现。

Context Hierarchy(Context 层次结构)

DispatcherServlet 有两个 Context:一个 WebApplicationContext(ApplicationContext 的拓展),而 WebApplicationContext 又有一个指向它所关联的 ServletContext 和 Servlet 的链接。

待续。。

参考

附:完整的运行流程

Spring Web MVC 笔记的更多相关文章

  1. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

    spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...

  2. 菜鸟学习Spring Web MVC之二

    有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...

  3. 4.Spring Web MVC处理请求的流程

  4. 1.Spring Web MVC有什么

    Spring Web MVC使用了MVC架构模式的思想,将web层进行职责解耦. 同样也是基于请求驱动的,也就是使用请求-响应模型.它主要包含如下组件: DispatcherServlet :前端控制 ...

  5. Spring REST实践之Spring Web MVC

    Spring概要 Spring Framework提供了依赖注入模型和面向切面编程,简化了基础型代码的编写工作以及更好的能够与其它框架和技术整合起来.Spring Framework由data acc ...

  6. Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介绍了普通方式开发spring web mvc web service.接下来看看使用spring b ...

  7. Features of Spring Web MVC

    21.1.1 Features of Spring Web MVC Spring Web Flow Spring Web Flow (SWF) aims to be the best solution ...

  8. [转]Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    Spring Boot——2分钟构建spring web mvc REST风格HelloWorld http://projects.spring.io/spring-boot/ http://spri ...

  9. Spring Web MVC中的页面缓存支持 ——跟我学SpringMVC系列

    Spring Web MVC中的页面缓存支持 ——跟我学SpringMVC系列

随机推荐

  1. Java 文件切割工具类

    Story: 发送MongoDB 管理软件到公司邮箱,工作使用. 1.由于公司邮箱限制附件大小,大文件无法发送,故做此程序用于切割大文件成多个小文件,然后逐个发送. 2.收到小文件之后,再重新组合成原 ...

  2. Vuex进阶

    1.插件 下面以一个对state进行持久化存储的插件为例进行介绍: 代码结构: saveInLocal.js export default function (store) { if (localSt ...

  3. U盘装CentOS6.4

    1.打开UltraISO,依次点击“文件”>“打开”,选择“CentOS-6.4-i386-bin-DVD1.iso”文件. 2.“启动”>“写入硬盘映像”,在“硬盘驱动器选择u盘”,写入 ...

  4. Rxjava+retrofit+mvp整合

    转载请标明出处: http://blog.csdn.net/forezp/article/details/52621898 本文出自方志朋的博客 最近在看Rxjava,写了一个简单的 demo整合了R ...

  5. 3.2.5 Magic Squares 魔板

    3.2.5 Magic Squares 魔板 成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方 ...

  6. codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)

    http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n ...

  7. Java分享笔记:泛型机制的程序演示

    package packA; import java.util.*; public class GenericDemo { public static void main(String[] args) ...

  8. cordforce Educational Codeforces Round 47 补题笔记 <未完>

    题目链接 http://codeforces.com/contest/1009 A. Game Shopping 直接模拟即可,用了一个队列来存储账单 #include <iostream> ...

  9. linux redis5.0 集群搭建

    一.下载 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 二.解压.编译 #解押到 /usr/local/ 文件夹 tar -zxv ...

  10. Java8 新API读取文件内容

    import java.io.IOException;import java.nio.charset.Charset;import java.nio.file.Files;import java.ni ...