一、Spring MVC执行原理和基于Java配置的配置过程

(一)Spring MVC执行过程,大致为7步。

  1. 所有的请求都会经过Spring的一个单例的DispacherServlet。
  2. DispatcherServlet会查询一个或多个处理器映射,找到请求的URL所对应的控制器。
  3. 把请求的内容传递给控制器后等待控制器处理这些内容。
  4. 控制器在逻辑处理后会产生一些数据(例如查询所有的用户信息),这些数据存在在模型(Model)中,同时返回一个视图名用作渲染数据。
  5. DispacherServlet找到视图解析器,视图解析器通过视图名找到真正的视图实现。
  6. DispacherServlet找到视图实现后再把模型(Model)的数据渲染到视图中。
  7. 把最终的视图通过响应对象传递给客户端

(二)搭建Spring MVC

  1. 配置DispacherServletServlet

DispatcherServlet是SpringMVC的核心,所有请求通过它来接触到框架,它又把请求转发到其他的组件。

按照传统的方式,Servlet需要配置在web.xml的文件中。但是,在Servlet3和Spring3.1之后,又提供了另外一种依据Java类配置的方式。我们先看看这种方式的代码是什么样的。

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
System.out.println("用来加载spring管理的中间层和数据层组件,下面会给出具体代码");
return new Class[]{RootConfig.class};
}
protected Class<?>[] getServletConfigClasses() {
System.out.println("用来加载web相关的组件,如控制器、视图解析器等,下面会给出具体代码");
return new Class[]{WebConfig.class};
}
protected String[] getServletMappings() {
System.out.println("如果映射是/,代表DispacherServlet是默认的Servlet");
return new String[]{"/"};
}
}

“SpittrWebAppInitializer”是我们自定义的类名,它继承了AbstractAnnotationConfigDispatcherServletInitializer并且实现了三个方法,下图解释了为什么需要继承这个类,以及为什么继承了这个类后,请求就能自动的转到DispacherServlet来处理。

  1. 启用SpringMVC

当配置完DispacherServlet后,还需要启用SpringMVC组件。

如果使用XML启动,可以使用<mvc:annotation-driven>。

当基于Java配置时,需要在配置类上添加@EnableWebMvc注解:

但是如果只添加一个注解的话,会出现下面的问题:

(1)没有配置视图解析器,Spring会使用BeanNameView-Resolver,这个视图解析器会查找ID与视图名相同的Bean,并且这个Bean需要实现View接口,通过这种方式来解析视图。

(2)没有启动组件扫描。Spring只能使用显式配置的控制器

(3)DispacherServlet会映射为应用默认Servlet,会处理所有请求,包括静态资源,如图片和样式表。

下面是一个更完整的Config,解决了上面的问题。

除了WebConfig还有一个RootConfig,由于现在只关注web,RootConfig很简单:

Spring MVC执行原理和基于Java的配置过程的更多相关文章

  1. (4.1)Spring MVC执行原理和基于Java的配置过程

    一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...

  2. spring Mvc 执行原理 及 xml注解配置说明 (六)

    Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...

  3. Spring MVC执行原理

    spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...

  4. Spring Mvc和Mybatis的多数据库访问配置过程

    Spring Mvc 加Mybatis的多数据库访问源配置访问过程如下: 在applicationContext.xml进行配置 <?xml version="1.0" en ...

  5. spring的MVC执行原理

    spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...

  6. Java——一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: Sp ...

  7. Spring MVC执行的流程

    1.Spring MVC应用的开发步骤 a.在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求.由于Web应用是基于请求/响应架构的应用,所以 不管哪个MVC Web ...

  8. Spring MVC简单原理

    Spring MVC原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离, ...

  9. Spring IOC之基于JAVA的配置

    基础内容:@Bean 和 @Configuration 在Spring中新的支持java配置的核心组件是 @Configuration注解的类和@Bean注解的方法. @Bean注解被用于表明一个方法 ...

随机推荐

  1. Linux经常使用命令(十八) - find概述

    Linux下find命令在文件夹结构中搜索文件,并运行指定的操作.Linux下find命令提供了相当多的查找条件,功能非常强大.由于find具有强大的功能,所以它的选项也非常多.当中大部分选项都值得我 ...

  2. Java知识点梳理——多态

    1.定义:多态是同一个行为具有多个不同表现形式或形态的能力,即一个接口不同的实例执行不同的操作: 2.优点:消除类型之间的耦合关系.可替换性.可扩展性.接口性.灵活性.简化性: 3.多态存在的3个必要 ...

  3. 如何阅读不同格式的Ubuntu/Linux帮助文档

    Ubuntu和Linux的帮助文档有各种各样的格式,下面简单说下如何阅读这些帮助文档. 1)通过man命令阅读软件或命令的manual page.例如阅读man命令的manual页面可使用如下命令: ...

  4. openvswitch总述

    前面用了两天时间了解了OpenvSwitch的结构,今天参考其他资料加自己的心得做个总结 一. openvswitch的安装和使用 在前一篇文章中详细的介绍了OpenvSwitch的安装和使用,不再赘 ...

  5. 【BZOJ4665】小w的喜糖 容斥+组合数

    [BZOJ4665]小w的喜糖 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那 ...

  6. 【BZOJ2090/2089】[Poi2010]Monotonicity 2 动态规划+线段树

    [BZOJ2090/2089][Poi2010]Monotonicity Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度 ...

  7. iOS7下status bar相关问题的解决方法

    转载自:http://blog.csdn.net/volcan1987/article/details/14227313 iOS7里status bar的实现跟iOS6下有写不一样,前段时间碰到了这个 ...

  8. 【转】windows 下 goprotobuf 的安装与使用

    1. 安装 在网上看了很多教程,都提到要安装 protoc 与 protoc-gen-go,但通过尝试之后并不能正确安装 protoc,一下记录能够顺利安装 protoc 与 protoc-gen-g ...

  9. 第03章—打造RESTful风格API

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  10. Python(数据库安装与基本语句)

    一.数据库相关概念 1.两种硬件扩展方式 a.垂直扩展:针对一台计算机 b.水平扩展:多台普通计算机 2.数据库相关概念 数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端) ...