Springmvc映射器理解
springmvc内部请求的处理流程:也就是springmvc接收请求,到处理完成的过程
1.用户发起请求some . do
2.DispatcherServlet接收请求some. do ,把请求转交给处理器映射器
处理器映射器: springmvc框架中的一种对象,框架把实现了HandlerMapping接口的类都叫做映射器(多个)
处理器映射器作用:根据请求,从springnve容器对象中获取处理器对象(MyController controller = ctx.getBean (".some.do")
框架把找到的处理器对象放到一个叫做处理器执行链(HandlerExecutionChain)的类保存
HandlerBxecutionChain:类中保存着1.处理器对象(MyController);2.项目中的所有的拦截器List intercepteorList
方法调用:HandlerExecutionchain mappedHandler = getHandler(processedRequest) ;
3.Dispatcherservlet把2中的HandlerExecutionChain中的处理器对象交给了处理器适配器对象(多个)
没有注解之前,需要实现各种不同的接口才能做控制器使用
处理器适配器:springmvc框架中的对象,需要实现HandlerAdapter接口。
处理器适配器作用:执行处理器方法(调用MyController.doSome ()得到返回值ModelAndView )
4.DispatcherServlet把3中获取的ModelAndView交给了视图解析器对象。
视图解析器:springmvc中的对象,需要实现viewResoler接口(可以有多个)视图解析器作用:组成视图完整路径,使用前缀,后缀。并创建view对象。
view是一个按口,表示视图的,在框架中jsp,html不是string表示,而是使用view和他的实现类表示视图。
InternalResourceview:视图类,表示jsp文件,视图解析器会创建InternalResourcoeview类对象。这个对象的里面,有一个属性ur1-/WEB-INF/view/ show. jsp
重定向视图
控制器—映射器—适配器 一一对应
5.DispatcherServlet把4步骤中创建的view对象获取到,调用view类自己的方法,把Model数据放入到request作用域。
执行对象视图的forward请求结束。
简单版
(1)浏览器提交请求到中央调度器
(2)中央调度器直接将请求转给处理器映射器。
(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链斥返回给中央调度器。
(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。(5)处理器适配器调用执行处理器。
(6)处理器将处理结果及要跳转的视图封装到一个对象 ModelAndView中,并将其返回会处理器适配器。
(7)处理器适配器直接将结果返回给中央调度器。
(8)中央调度器调用视图解析器,将ModelAndView中的视图名称封装为视图对象。(9))视图解析器将封装了的视图对象返回给中央调度器
(10)中央调度器调用视图对象,让其自己进行渲染,即进行数据填充,形成响应对象。(11)中央调度器响应浏览器。