SpringMVC前端控制器和执行流程

本文详细介绍了SpringMVC的前端控制器DispatcherServlet的启动流程,从Tomcat的初始化到Spring容器的创建,再到Controller、Service、Mapper等对象的实例化。前端控制器作为请求的统一入口,负责日志记录、权限检查以及请求分发。接着分析了SpringMVC的执行流程,包括处理器映射器、处理器适配器、视图解析器的作用。同时,补充了在IDEA中使用断点调试的技巧,并对@ControllerAdvice注解进行了深入讲解,指出其在处理Controller层异常和参数绑定等方面的应用。

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

SpringMVC

tomcat启动流程

  1. 初始化默认的JspServlet和DefaultServlet
  2. 初始化我们配置的前端控制器DispatcherServlet
  3. 因为我们在DispatcherServlet中配置了mvc.xml,因此也会启动Spring容器。SPring容器会帮我们创建相应的bean并管理
  4. 创建的对象包括Controller层,Service层,Mapper层,Datasource对象,SqlSession对象等

什么是前端控制器

前端控制器本质是一个servlet,是SPringMVC提供的所有请求的的统一入口,因为不同请求可能有共同的操作,这时候就需要前端控制器做统一的处理,比如日志记录,权限检查等,然后再将请求分发给各个处理器去处理

SpringMVC流程分析

  1. DispatcherServlet是核心,负责调度其他组件
  2. 请求进来,前控首先调用处理器映射器(HandleMpper)查找该请求url对应的处理器,返回一个处理器链(包含多个拦截器和最后的那个处理器)
  3. 然后前控通过处理器适配器(HandleAdapter),执行对应处理器中的相应方法,返回ModelAndView对象
  4. 然后前端控制器通过视图解析器(ViewResolver)进行视图解析,就是把逻辑视图(字符串)转换为物理视图view,将view返回前控
  5. 前控通过相应的渲染模板,比如jsp和freemarker将数据渲染到模板,将渲染后的视图返回给浏览器

补充idea断点调试

  1. f5:进入方法内部
  2. f6:一步一步执行
  3. f7: 通过f5进入了某方法,这是不想看了,想跳出该方法使用此键
  4. f8:跳到下一个断点,中间过程直接略过

@ControllerAdvice详解

此注解也是Spring AOP中的一个增强,只不过这个增强的切面是面向于controller层的,那么可以得出一个推论,一次请求的所有流程都会被这种增强覆盖,因为controller层是最外层的。一般结合三种方法型注解:

  1. @ExceptionHandler:用于捕捉controller层中抛出的指定异常
  2. @InitBinder:对controller方法中的参数进行绑定注册,比如日期类型
  3. @ModelAttribute:表示其标注的方法将会在目标Controller方法执行之前执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值