Spring MVC流程与组件使用

本文详细解析了Spring MVC的工作流程,包括DispatcherServlet的角色、HandlerMapping的URL映射、HandlerAdapter的处理器执行、ViewResolver的视图解析等关键环节,帮助读者深入理解Spring MVC的运行机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

具体流程

在这里插入图片描述
图片解析:

  1. 首先用户发送request给Dispatcher Servlet(调度servlet),Dispatcher Servlet收到请求以后自己不去处理,而是分派给别的解析器去进行处理。Dispatcher Servlet只是作为一个总的访问点,进行全局的流程控制。
  2. Dispatcher Servlet----->HandlerMapping。HandlerMapping会将请求映射为HandlerExecutionChain对象(包含一个Handler处理器,多个HandlerInterceptor拦截器)
  3. Dispatcher Servlet----->HandlerAdapter。HandlerAdapter会把处理器包装为适配器,从而很容易支持很多类型的处理器。
  4. HandlerAdapter----->Handle。调用真正的处理器去处理方法。
  5. Dispatcher Servlet----->ViewResolver。ViewResolver把逻辑视图名解析为具体的View
  6. Dispatcher Servlet----->View。View会根据传进来的Model模型数据进行渲染。

各组件详解

1. 前端控制器Dispatcher Servlet

用于接受请求,响应结果,相当于一个发牌的,属于管理整体调度的。
需要在web.xml文件中配置Dispatcher Servlet:
在这里插入图片描述

2. 处理器映射器HandlerMapping

根据请求的URL查找Handler。HandlerMapping负责根据request请求找到对应的Handler处理器以及Interceptor拦截器,将他们封装在HandlerExecutionChain对象中给前端控制器返回
在classpath下的springmvc.xml文件中配置处理器映射器:
在这里插入图片描述
多个映射器可以并存,前端控制器判断URL能让哪些映射器映射,就让正确的映射器处理。

RequestMappinghandlerMapping
注解式处理器映射器,对类中标记@Resquestmapping的方法进行映射,根据 Resquestmapping定义的urI匹配Resquestmapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器, HandlerMethod对象中封装ur对应的方法 Method。

3. 处理器适配器HandlerAdapter

按照特定规则去执行Handler,HandlerAdapter会根据适配器接口对后端控制器进行包装(适配),包装后即可对处理器进行执行,通过扩展处理器适配器可以执行多种类型的处理器,这里使用了适配器设计模式。
在classpath下的springmvc.xml文件中配置处理器适配器:
在这里插入图片描述
多个适配器可以并存,前端控制器判断URL能让哪些适配器适配,就让正确的适配器处理。

Requestmapp inghandlerAdapter
注解式处理器适配器,对标记@ Resquestmapping的方法进行适配。

4. 处理器Handle

需要程序员开发的具体处理方法,需要实现controller接口,才能由HandlerAdapter适配器执行。
在这里插入图片描述
在classpath下的springmvc.xml文件中配置处理器:
在这里插入图片描述

5. 视图解析器ViewResolver

进行视图解析,根据逻辑视图名解析成真正的视图。
在classpath下的springmvc.xml文件中配置视图解析器:
在这里插入图片描述

6. 视图View

View是一个接口,可以实现不同的类型(JSP,PDF…)
编写视图页面:
在这里插入图片描述


注解开发:

步骤:

  1. 创建web工程
  2. 导入jar包
  3. 在web.xml中配置 Dispatcher Servlet
  4. 配置注解映射器和适配器
  5. 编写注解处理器
  6. 在 spring容器中加载处理器
  7. 编写视图
  8. 配置视图解析器
  9. 部署调试

配置注解映射器和适配器:

方法一:
在这里插入图片描述
方法二:
在这里插入图片描述

  • 使用mvc:annotation-driven可以代替上边注解映射器和注解适配器配置。
  • mvc:annotation-driven默认加载很多的参数绑定方法
  • 实际中开发使用mvc:annotation-driven

开发注解Handler

在这里插入图片描述
在Spring容器中加载Handler:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值