一、springmvc原理及流程
第一步:用户发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找
第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)
第五步:处理器适配器去执行Handler
第六步:Handler执行完给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回View
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果
二、spring mvc流程详解
1、首先创建父容器(AnnotationConfigWebApplicationContext),通过自定义的getRootConfigClasses()拿到配置类,并注册到父容器中。
2、通过父容器作为参数创建ContextLoaderListener监听器。并添加到servletContext(Tomcatservlet容器)。
3、通过自定的getServletConfigClasses()方法拿到MVC的配置类创建子容器,并把配置类注册到子容器中。
4、创建DispatcherServlet,并将DispatcherServlet添加到servletContext的Servlet容器中去。
5、设置dispatcherServlet相关属性(启动时加载,设置映射路径)。
三、servlet响应顾客请求的方法
?servlet响应请求的方法有以下几种:
1、直接处理:
req.setAttribute("key","value");
2、请求转发:
req.getRequestDispatcher(uri/servlet别名).forword(req,resp);
特点:发一次请求,浏览器的地址不变;可以将一次请求的数据传递个下个servlet,通过req.setAttribute();
刷新页面的时候,请求重复发送,会导致表单数据重复提交;
3、请求重定向:
response.sendRedirect(uri);
特点:发2次请求,浏览器的地址改变成第二个servlet的;
解决了页面刷新导致表单数据重复提交的问题;
无法将第一个的请求数据给第二个请求使用,需要配合cookie、session技术实现数据共享
四、如何得到RequestDispatcher对象
参数的由来:在转发时,需要向下一个页面传递信息,所有信息在request和response中,所以需要这两个参数。请求转发的用法:
1、request.getRequestDispatcher()方法只是获取到了RequestDispatcher()对象,并未执行真正的转发,执行转发动作还需调用RequestDispatcher()的forward()。
2、forward()方法的声明与doGet()方法和doPost()方法非常类似,在转发时,其将request与response作为参数传递到了下一个Servlet。
dispatcherservlet和dispatcherServlet报错的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!