Spring MVC-前端控制器

原创 2018年04月15日 11:15:33
Spring MVC-前端控制器 
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处

DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

1、文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析;
2、通过 HandlerMapping,将请求映射到处理器(返回一个 HandlerExecutionChain ,它包括一个处理器、多个HandlerInterceptor 拦截器);
3、通过 HandlerAdapter 支持多种类型的处理器(HandlerExecutionChain 中的处理器);
4、通过 ViewResolver 解析逻辑视图名到具体视图实现;
5、本地化解析;
6、渲染具体的视图等;
7、如果执行过程中遇到异常将交给 HandlerExceptionResolver 来解析。
1.spring MVC中的前段控制器就是DsipatcherServlet,它在spring MVC框架中的结构图如下:

2.DispatcherServlet其实就是一个Servlet,它继承了HttpServlet这个抽象类。

先来看下该类在的位置:
为了使用它,你需要在你的web应用程序中的web.xml中配置一下,配置如下:

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/example/*</url-pattern>
    </servlet-mapping>
   
这样配置后,在你应用程序中所有请求中带/example的都会被DispatcherServlet拦截到。

对于3.0++的容器,还有另外一种配置方式,那就是用代码方式代替:

	public class MyWebApplicationInitialzer implements WebApplicationInitializer {

	    public void onStartup(ServletContext servletContext) throws ServletException {
		ServletRegistration.Dynamic regist = servletContext.addServlet("dispatcher", new DispatcherServlet());
		regist.setLoadOnStartup(1);
		regist.addMapping("/example/*");
	    }
	}
设置容器加载时就启动,设置映射的路径。

3.每一个DispatcherServlet都有自己的上下文环境(WebApplicationContext),它继承了些上下文环境中的bean,而且可以根据条件自己重写。

下面就是一个继承图解:
4.在web.xml中配置好DispatcherServlet后,容器启动时回去WEB-INF文件夹下去找(默认[servlet-name]-servlet.xml)dispatcherServlet-servlet.xml,解析文件初始化里面中的bean等。

5.在实际的应用中我们一般不使用这种默认的配置,你只需要在web.xml中配置下面的文件就可,下面给一个例子,把param-value换成你自定义就可:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/root-context.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
原文地址:http://www.cnblogs.com/haoke/p/4993273.html


白话Spring(中级篇)---前端控制器

[一知半解,就是给自己挖坑] 在前面helloworld工程中,我们已经展示了基本的MVC结构及使用方法。接下来,我们更加深入的学习一下SpringMVC中的前端控制器的内容。即 Dispatcher...
  • ABCD898989
  • ABCD898989
  • 2016-03-18 22:55:45
  • 946

SpringMVC前端控制器三种配置方式

配置springmvc的前端控制器需要在web.xml里面配置拦截的路径名称。 .action 与 / 与 /* 的区别...
  • my__Sun_
  • my__Sun_
  • 2017-04-18 10:53:43
  • 3896

SpringMVC学习(01)--前端控制器DispatcherServlet的初始化

一、DispatcherServlet的初始化过程 DispatcherServlet,也就是我们的前端控制器,它是SpringMVC的核心,那么,Spring容器在初始化DispatcherSer...
  • Mr_Errol
  • Mr_Errol
  • 2017-02-13 17:21:10
  • 320

【SpringMVC框架】前端控制器源代码分析

前端控制器源代码分析 虽然前面讲了一些springmvc的入门程序和配置文件中映射器和适配器的配置,但是我们作为编程人员,了解框架的部分源码还是有必要的,比如前端控制器,它是如何通过Servlet的...
  • u013517797
  • u013517797
  • 2015-07-21 08:47:09
  • 4100

springMVC的前端控制器的配置

步骤:配置web.xml-->配置springMVC-servlet.xml(springmvc的配置文件,需要在里面配置处理器适配器,处理器映射器,配置视图解析器) 前端控制器是一个servlet:...
  • mggwct
  • mggwct
  • 2015-07-25 19:20:58
  • 8219

SpringMVC-前端控制器源码分析

上篇文章中提到了关于springmvc的请求流程,大家 可以看到中心就是前端控制器DispatcherServlet的作用,今天小编来讲一下关于DispatcherServlet的源码分析过程。第一步...
  • u010158267
  • u010158267
  • 2016-06-13 09:31:11
  • 445

SpringMVC前端控制器-----DispatcherServlet

如果要使用SpringMVC,就必须在web.xml中配置DispatcherServlet,Dispatcher也是servlet,可以配置多个 ...
  • lsx991947534
  • lsx991947534
  • 2015-10-21 07:55:01
  • 995

springmvc学习笔记(4)-前端控制器

本文通过前端控制器源码分析springmvc执行过程
  • h3243212
  • h3243212
  • 2016-03-09 12:10:37
  • 3164

SpringMVC框架前端控制器、处理适配器和处理器映射器、视图解析器的配置

在web项目开发中使用SpringMVC框架 前面讲了SpringMVC的核心组件,下面介绍一下在实际的开发过程中这些核心组件的配置。  1、前端控制器的配置   我们使用SpringMVC框架,首先...
  • Jesse_Suo
  • Jesse_Suo
  • 2017-01-08 21:45:38
  • 2796
收藏助手
不良信息举报
您举报文章:Spring MVC-前端控制器
举报原因:
原因补充:

(最多只允许输入30个字)