springmvc:
首先将springmvc,首先,请求先经过过滤器,(服务器层面的设计的)如果请求通过,(Shiro,Security),来到dispacherServlet,调用doDispatch()来处理,
1.首先,来确定同步异步请求,(WebAsyncManager)意思是主要用来管理异步请求的处理。什么时候要用到异步处理呢?就是业务逻辑复杂(或者其他原因),为了避免请求线程阻塞,需要委托给另一个线程的时候。
2.然后,进行检查checkMultipart,是否是文件上传,
3.通过HandlerExecutionChain分发请求到每个handler,(请求映射地址转换为具体的handler类,采用了适配器模式)
于此同时,在HandlerExecutionChain类中进行查找关于此handler的拦截器(链式设计,责任链模式)
HandlerMapping会把请求映射为HandlerExecutionChain类型的handler对象,将handler对象作为参数传递给HandlerAdapter的实例化对象
4. 由HandlerAdapter适配器处理,HandlerAdapter会根据Handler来调用真正的处理器开处理请求 ,handler来调用实际的业务层来处理相应的业务逻辑
5.处理器处理完业务后,设置view,
6. 进入后置拦截器
7. processDispatchResult,render进行渲染并且会返回一个ModelAndView对象,
8.Model是返回的数据对象,View是个逻辑上的View。ViewResolver会根据逻辑View查找实际的View。
9.DispaterServlet把返回的Model传给View。通过View返回给请求者(浏览器)
详细地址:http://note.youdao.com/noteshare?id=51cadd4753210b957448e9cc1ebe5b61