1、常见类及其作用
HandlerExecutionChain:Handler执行链对象,包含了请求处理器对象(Handler)以及所有的拦截器对象
HandlerMapping:定义了所有的请求(url)与所有的请求处理器之间的映射
HandlerAdptor:请求处理器适配器对象,负责完成请求处理器对象(Hander)的调用、方法的执行等
2、执行流程
①、用户向服务器发出请求,请求被springmvc的前端控制器DispatcherServlet截获。
②、DispatcherServlet对请求的URL(统一资源定位符)进行解析,得到URI(请求资源标识符),然后根据URI,调用HandlerMapping获得该Handler配置的所有相关对象,包括Handler对象以及Handler对象对应的拦截器,这些对象都会被封装到一个HandlerExecutionChain对象当中返回。
③、DispatcherServlet根据获得的Handler、,选择一个合适的HandlerAdapter(处理器适配器),HandlerAdapter负责调用Hander实际处理请求的方法。
④、提取请求中的模型数据,开始执行Handler(Controller),在填充Handler的入参过程中,根据配置,Spring将会帮助做一些额外的事情
消息转换:将请求信息,如json、xml等数据转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求信息进行数据转换,如String转换成Integer、Double等
数据格式化:对请求信息进行数据格式化,如将字符串转换成格式化数字或格式化日期等
数据验证:验证数据的有效性 如长度、格式等。
⑤、Handler执行完成以后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中应该包含视图名或视图模型
⑥、根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet
⑦、ViewResolver根据Model和View来渲染视图
⑧、将视图渲染结果返回给客户端
