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. linq 和lambda查询

    EF 查询的两种 写法. linq 方法 或者 lambda方法 其中 ,只有tolist()的时候,才会真正的 在数据库中执行. 如果没有 tolist 方法,那么province1是 iqueab ...

  2. 线程 task pritce

    1.使用task类创建并执行简单任务: 使用task的构造函数来创建 任务,并调用start方法来启动任务,执行异步操作 aitAll用于等待提供的所有 System.Threading.Tasks. ...

  3. javascript原生API总结

    一.查找: getElementById() 方法返回带有指定 ID 的元素(唯一): getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组). ...

  4. url 解析

    最近在做一个单页应用,使用AngularJS来处理一些页内路由(哈希#后的路由变化).自然会要解析URL中的参数.使用AngularJS自带的方法$location.search();可以自动将参数整 ...

  5. iOS网络图片缓存详解

    在开发移动应用的时候比如Android,IOS,因为手机流量.网速.内存等这些因素,当我们的移动应用是针对互联网,并要频繁访问网络的话,对网络优化这块就显得尤为重要了. 比如某个应用要经常显示网络图片 ...

  6. 解决mysql远程连接失败的问题

    问题描述 在我远程连接我的服务器数据库的时候,navicat给我提示了这么一个错误: ERROR : Host 'xxx' is not allowed to connect to thisMySQL ...

  7. Linux nohup 关闭终端的时候,程序依然能在后台运行( linux重定向及nohup不输出的方法)

    先说一下linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出.在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号 ...

  8. JS下载文件常用的方式

    下载附件(image,doc,docx, excel,zip,pdf),应该是实际工作中经常遇到一个问题:这里使用过几种方式分享出来仅供参考; 初次写可能存在问题,有问题望指出 ​ 主要了解的几个知识 ...

  9. Facebook Reporting API -- Facebook 数据导出API

    1.获取token 浏览器打开 "访问口令工具" (FB链接请FQ)  https://developers.facebook.com/tools/accesstoken/ App ...

  10. Scala构建元数据

    反射方式构建元数据: 通过反射来获取RDD中的Schema信息.这种方式适合于列名(元数据)已知的情况下 步骤: 1.SparkConf配置环境 2.SparkContext初始化上下文 3.SQLC ...