Spring MVC框架体系结构详解

概述

无论是基于Spring Boot还是基于SSM框架的Web开发,都涉及到了Spring MVC框架的使用。Spring MVC是Spring Framework的其中一个产品,是一个强大灵活的基于MVC的Web框架,它包含以下优点:

  • 请求统一通过内置的DispatcherServlet处理,开发者无需编写难以管理、维护的FilterServlet类。
  • 分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器等等,每一个功能实现由一个专门的对象负责完成
  • 自带Spring框架的IoC和AOP功能,有效降低了代码的耦合度
  • 配置相对于传统的web.xml更加简单方便,维护起来更加容易
  • 支持国际化
  • 支持多种视图技术

本文假定读者有一定的Spring MVC开发经验。

DispatcherServlet

DispatcherServlet是整个Spring MVC的核心,它的继承体系如下:
在这里插入图片描述
可以看出它实现了javax.servlet.Servlet接口,所以它本质上是一个Servlet,并可通过web.xml文件注册到Servlet容器上。
并且,它也实现了ApplicationContextAwareEnvironmentAware接口,所以在Spring容器在创建DispatcherServlet实例的时候,也会将IoC容器ApplicationContext和环境参数容器Environment注入到DispatcherServlet,使其可以利用到Spring的IoC容器。

一般在开发基于Spring MVC的Web应用的时候,我们一般会在web.xml文件中这么定义这个DispatcherServlet

<servlet>
	<servlet-name>DispatcherServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
	<init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

可以看出和一般的Servlet配置没什么区别,我们只需要将所有的URL请求产生的HttpServletRequest都由这个DispatcherServlet进行处理就可以了。同样和其它Servlet类似,DispatcherServlet是单例的,多个请求由同一个DispatcherServlet处理。

DispatcherServlet处理请求的流程可以用以下图片概括:
在这里插入图片描述
其处理流程可以概括为:

  1. 客户端发起请求后,由Servlet容器将请求包装为HttpServletRequest对象,然后Servlet容器通过反射创建DispatcherServlet对象,调用其init方法并传入ServletConfig对象(存储了web.xml文件定义的init-param参数)初始化DispatcherServlet,然后调用其service方法并传入HttpServletRequestHttpServletResponse进行服务。
  2. Disp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值