springmvc的整个流程
这里有三个概念:HandlerMapping、Handler和HandlerAdapter。
Handler:也就是处理器,它直接对应着MVC的C也就是Controller层,它的具体表现形式有很多,可以是类,也可以是方法。我们标注了@RequestMapping的所有方法都可以看成一个Handler。只要实际处理请求就可以是Handler。
HandlerMapping:是用来查找Handler的,在SpringMVC中会处理很多请求,每个请求都需要一个Handler来处理,具体接收到一个请求后使用哪个Handler来处理呢?这就是HandlerMapping要做的事。
HandlerAdapter:就是一个适配器。因为SpringMVC的Handler可以是任意的形式,只要能够处理请求就OK,但是Servlet需要的处理方法的结构确实固定的,都是以request和response为参数的方法。HandlerAdapter要做的事就是让固定的Servlet处理方法调用灵活的Handler来进行处理。
通俗的解释就是Handler是用来干活的工具,HandlerMapping用于根据需要干的活找到相应的工具,HandlerAdapter就是使用工具干活的人。SpringMVC中也一样,在九大组件中HandlerAdapter也是最复杂的。
另外View和ViewResolver的原理与Handler和HandlerMapping的原理类似。View是用来展示数据的,而ViewResolver用来查找View。通俗地讲就是干完活后需要写报告,写报告又需要模板,View就是所需要的模板,模板就像公文里边的格式,内容就是Model里边的数据,ViewResolver就是用来选择使用哪个模板的。
使用HandlerMapping找到干活的Handler,找到使用Handler的HandlerAdapter,让HandlerAdapter使用Handler干活。干完活将结果通过View展示给用户。