spring mvc围绕DispatcherServlet,它负责截获请求并将其分派给相应的处理器。
spring mvc 包括注解驱动控制器,请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理以及表单标签绑定等。这里还是要重提下mvc好处,它利用处理器分离模型视图和控制,达到不同技术层松散耦合的效果,提高系统灵活性,复用性和可维护性,其实真正发明它的大师我觉得更多的是追求一种完美的逻辑体系。下面简要阐述下它处理请求的整体流程。
1用户发送http请求,web服务器接收这个请求如果匹配DispatcherServlet请求路径(在web.xml中指定),web容器将该请求转给DispatcherServlet处理。
2 DispatcherServlet接收到请求将根据请求信息(包括url,http方法、请求报文头、请求参数,cookie)及HandlderMapping的配置找到处理请求的处理器(Handler)。可将HandlerMapping看成路由控制器,将Handler看成目标主机。SpringMapping没有定义Handler接口,实际上任何一个Object都可以成为请求处理器。
3当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是SprijgMvc框架级的接口,它用统一的接口对各种Handler方法进行调用。
4处理器完成业务逻辑后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含的是“逻辑视图”名和模型数据信息。
5ModelAndView包含的是“逻辑视图”名而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实对象的解析。
6当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
7最终客户端得到的响应消息,可能是一个普通的Html界面,也可能是一个xml或json串,甚至是各种媒体等。