java spring工作原理_SpringMVC工作原理

SpringMVC的入口是DispatchServlet,它的工作大致可以分为两个部分,一个是初始化,另外一个是请求处理。下面我们对它的工作原理做简单分析。

1. 类继承关系

springmvc%E7%B1%BB%E7%BB%A7%E6%89%BF%E5%85%B3%E7%B3%BB.png

2. 初始化

HttpServletBean重写了GenericServlet的init()方法,它是整个初始化的入口。

首先,会读取配置在ServletContext中的bean属性参数,这些属性参数设置在web.xml的web容器初始化参数中,即web.xml中的context-param,然后设置这些bean属性;

接着会执行ioc容器的初始化,通过反射的方式去完成XmlWebApplicationContext的创建;

在调用refresh方法后,DispatchServlet的initStrategies()方法被调用。由它完成springmvc框架各部分的初始化,比如HandlerMapping、ViewResolver等。

springmvc%E5%88%9D%E5%A7%8B%E5%8C%96.png

3. 请求处理

FrameworkServlet重写了HttpServlet的一系列请求方法,请求首先会被FrameworkServlet的processRequest()接收,经过DispatcherServle的doService(),最终由doDispatch()完成请求处理。doDispatch()方法是springmvc框架中最核心的部分,主要包括:

1. 准备ModelAndView

2. 调用getHandler()来处理HTTP请求

首先会查询HandlerMappings,它包含了一系列从URL请求到Controller的映射。基于注解配置的springmvc使用的是DefaultAnnotationHandlerMapping。getHandler()最终会返回一个HandlerExecutionChain对象,其中包含了最终的Controller和定义的一个拦截器链。

3. 通过HandlerAdapter的handle()来触发Controller中方法的调用,最后返回ModelAndView对象

这个ModelAndView对象由相应的视图解析器解析出视图对象并由视图对象完成页面的渲染呈现。

springmvc%E8%AF%B7%E6%B1%82%E5%A4%84%E7%90%86.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值