springMVC的执行流程
-
用户向服务器发送请求,请求被Spring的前端控制器DispatcherServlet截获。
-
DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URL,然后根据该URL,调用HandlerMapping获得该Handler配置的所有相关的对象,包括Handler对象以及Handler对应的拦截器,这些对象会被封装到一个HandlerExecutionChain对象当中返回。
-
DispatcherServlet根据获得的Handler,选择一个适合的HandlerAdapter。HandlerAdpter会被用于处理多种Handler,调用Handler实际处理请求的方法。
-
提取请求的模型数据,开始执行Handler(Controller)。在Handler的入参过程中,根据配置。spring做一些额外的工作。
-
消息转换。将请求消息(如JSON、xml等数据)转换为一个对象,将对象转换为指定的响应信息。
-
数据转换。对请求消息进行数据转换,如string转换为Integer、Double等。
-
数据格式化。对请求消息进行数据格式化,如将字符串转换成格式化数字或格式化日期等
-
数据验证。验证数据的有效性(长度、格式),验证结果存储到BindingResult或Error中。
-
-
Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中应该包含视图名和模型。
-
根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet
-
ViewResolver结合Model和View来渲染视图
-
将视图渲染结果返回给客户端