SpringMVC对请求的处理流程
SpringMVC内部请求的处理流程:也就是SpringMVC接收请求到处理完成的过程
1.用户发起some.do请求
2.DispatcherServlet中央调度器接收请求some.do,把请求转交给处理器映射器 处理器映射器:SpringMVC框架中的一种对象,框架实现了HandlerMapping接口的类都叫映射器(多个)
处理器映射器的作用:根据请求,从SpringMVC容器对象中获取处理器对象(相当于
ApplicationContext ac=new ClassPathXmlApplicationContext(“springmvc.xml”) MyController controller=ac.getBean("some.do")
) 框架把找到的处理器对象反倒一个叫做处理器执行链(HandlerExecutionChain)的类里保存 HandlerExecutionChain:类中保存着:1.处理器对象(MyController) 2.项目中所有的拦截器List<HandlerInterceptor>
3.DispatcherServlet把2中的HandlerExecutionChain中的处理器对象交给了HandlerAdapter处理器适配器对象(多个) 处理器适配器:SpringMVC框架中的对象,需要实现HandlerAdapter接口。 处理器适配器作用:执行处理器方法(调用MyController.dosome()得到返回值ModelAndeView)
4.DispatcherServlet把3中获取的ModelAndView交给了ViewResolve视图解析器对象。 视图解析器:SpringMVC中的对象,需要实现ViewResolve接口(可以有多个) 视图解析器作用:组成视图完成路径,使用前缀、后缀。并创建View对象。 View是一个接口,表示视图的,在框架中jsp,html不是String表示。而是使用View和他的实现类表示视图的。 InternalResourceView:视图类,表示jsp文件,视图解析器会创建InternalResourceView类对象。这个对象的里面,有一个属性url,当我们设置好视图解析器后,url=前缀+逻辑名称+后缀 比如url=/WEB-INF/jsp+show+.jsp
5.DispatcherServlet把4步骤中创建的View对象获取到,调用View类自己的方法,把Model数据放入到request作用域。执行对象视图的forward,请求结束。