SpringBoot2学习笔记
四、Web开发
4.6)视图解析与模板引擎
视图解析:SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染
4.6.1)视图解析
视图处理方式如下图:
4.6.1.1)视图解析原理流程
-
目标方法处理的过程中,所有数据都会被放在 ModelAndViewContainer 里面,包括数据和视图地址;
-
方法的参数是一个自定义类型对象(从请求参数中确定的),把它重新放在 ModelAndViewContainer ;
-
任何目标方法执行完成以后都会返回 ModelAndView(数据和视图地址);
-
processDispatchResult 处理派发结果(页面改如何响应),流程如下:
-
render(mv, request, response); 进行页面渲染逻辑,根据方法的String返回值得到 View 对象【定义了页面的渲染逻辑】
-
所有的视图解析器【viewResolvers】尝试是否能根据当前返回值得到View对象
-
得到了 redirect:/main.html --> Thymeleaf new RedirectView()
-
ContentNegotiationViewResolver 里面包含了下面所有的视图解析器,内部还是利用下面所有视图解析器得到视图对象
-
view.render(mv.getModelInternal(), request, response); 视图对象调用自定义的render进行页面渲染工作
RedirectView 如何渲染【重定向到一个页面】
-
获取目标url地址
-
response.sendRedirect(encodedURL);
视图解析:
-
返回值以 forward: 开始: new InternalResourceView(forwardUrl); --> 转发request.getRequestDispatcher(path).forward(request, response);
-
返回值以 redirect: 开始: new RedirectView() --》 render就是重定向 ;
-
返回值是普通字符串: new ThymeleafView();
</
-