视图解析原理流程
- 目标方法处理的过程中,所有数据都会被放在 ModelAndViewContainer 里面。包括数据和视图地址
- 方法的参数是一个自定义类型对象(从请求参数中确定的),把他重新放在 ModelAndViewContainer
- 任何目标方法执行完成以后都会返回 ModelAndView(数据和视图地址)。
- processDispatchResult 处理派发结果(页面改如何响应)
- render(mv, request, response); 进行页面渲染逻辑
-
根据方法的String返回值得到 View 对象【定义了页面的渲染逻辑】
-
所有的视图解析器尝试是否能根据当前返回值得到
View对象
- 得到了 redirect:/main.html –> Thymeleaf new RedirectView()
- ContentNegotiationViewResolver 里面包含了下面所有的视图解析器,内部还是利用下面所有视图解析器得到视图对象。
-
view.render(mv.getModelInternal(), request, response); **视图对象(View对象)**调用自定义的render进行页面渲染工作
-
RedirectView 如何渲染【重定向到一个页面】
- 获取目标url地址
- response.sendRedirect(encodedURL);
-
RedirectView 如何渲染【重定向到一个页面】
-
所有的视图解析器尝试是否能根据当前返回值得到
视图解析:
• 返回值以 forward: 开始: new InternalResourceView(forwardUrl); –> 转发request.getRequestDispatcher(path).forward(request, response);
• 返回值以 redirect: 开始: new RedirectView() –> render就是重定向
• 返回值是普通字符串: new ThymeleafView()—> 创建一个新视图对象
版权声明:本文为qq_42451178原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。