SpringMVC学习(1)

Spring MVC

SpringMVC是Spring框架中自带的MVC实现,它的实现是围绕DispatcherServlet来展开的(后续会对DispatcherServlet的源码进行解读)。DispatcherServlet是一种前端控制器的实现,所有的请求进行一些预处理后,通过它分发给相应的处理器,处理器处理后的结果再返回给前端控制器,由它派发给相应的视图解析器,最后完成响应. SpringMVC中默认的处理器是由@Controller和@RequestMapping标签来实现的. Spring3.0之后,还增加了对RESTful风格的请求的支持.

DispatcherServlet

正如前方所说的那样,DispatcherServlet是一种前端控制器的实现,它的结构如图所示, 同时它也是标准的JavaEE的servlet实现.
DispatcherServlet

在SpringMVC中,ApplicationContext是有作用域范围的, 每一个DispatcherServlet都有它的webApplicationContext,这些webApplicationContext都继承了root webApplicationContext中定义的所有bean. 通常情况下, rootApplicationContext中包含了基础的bean定义,这些bean在所有的servlet以及context中共享, rootApplicationContext通常由web.xml中的contextConfigLocation定义.

DispatcherServlet中特殊的Bean对象

在DispatcherServlet中定义了很多特殊类型的对象用来完成处理请求、渲染视图等操作,并且SpringMVC中还定义一系列默认实现,这些默认实现都配置在org.springframework.web.servlet包下的DispatcherServlet.properties文件中. 一旦程序中配置了其中某种类型的实现,这些默认的实现都将会被替代.

下表给出了DispatcherServlet依赖的一些bean类型,这些bean类型也构成了SpringMVC的处理框架, 如下图所示.

类型 描述
HandlerMapping HandlerMapping将请求映射成相应的处理器和一系列的前置、后置处理器
HandlerAdapter HandlerAdapter将各种各样的Handler适配成统一的接口供DispatcherServlet调用,它是一种适配器模式的应用
HandlerExceptionResolver 它将处理过程中的异常映射成视图,以允许一些更精确的异常处理
ViewResolver 它将逻辑视图转化成实际的视图类型

DispatcherServlet的处理流程

您的支持将鼓励我继续创作!