springMVC 涉及的人有:
1:浏览器
2:DispatherServlet
3:Handler
4:HandlerAdapter
5:viewResoler
有人就有关系:
第一感脚handler和handlerAdapter到底是什么?为什么会有这一对类双胞胎?这里应该涉及的是适配器模式。
好了解决了这个关系就清楚了:
一:顾客浏览器大喊,我要view!
二:这时候大堂经理DispatherServlet慌忙出来,说了一句“稍等,我看看谁在值班(HandlerMapping配置)”发现员工Handler值班,但是此时员工Handle正在吃瓜呢!“尼玛,怎么招了这一个员工?”心里默默的咒骂一句,没办法,只能叫员工Handler的组长HandlerAdapter,“HandlerAdapter快管管员工Handle”
三:在组长HandlerAdapter教育下,Handler终于做出了东西(ModelAndView)给了大堂经理DispatherServlet
四:大堂经理DispatherServlet,接过来一看,又在叫员工viewResoler,“快包装一下”
五:经过Handler HandlerAdapter viewResoler的努力下,完美的view终于完成了
六:大堂经理DispatherServlet,给了浏览器,说“这是你想要的view,久等了”
上面的是springMVC的工作原理图:
1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。