最贵网站建设报价,免费建站的平台,天元建设集团有限公司汇票信誉,设计师投稿网站SpringMVC中的视图实现了View接口#xff0c;作用是渲染数据#xff0c;将Model中的数据展示给用户。render是渲染方法#xff0c;可以看到渲染的视图是一个View类型的对象。 SpringMVC视图的种类有很多#xff0c;默认有转发视图和重定向视图。 如果配置了Thymeleaf视图解…SpringMVC中的视图实现了View接口作用是渲染数据将Model中的数据展示给用户。render是渲染方法可以看到渲染的视图是一个View类型的对象。 SpringMVC视图的种类有很多默认有转发视图和重定向视图。 如果配置了Thymeleaf视图解析器那么由此视图解析器解析得到的就是ThymeleafView。
1. ThymeleafView
当控制器方法中设置的视图名称没有任何前缀时并且配置了Thymeleaf视图解析器那么这个视图名称就会被Thymeleaf视图解析器解析得到的就是ThymeleafView。 首先在ModelAndView对象返回的地方打断点。所有控制器方法执行时都会执行doDispatch方法。 图中画横线的方法就是处理mv对象的方法进入该方法。 render方法就是渲染视图的方法在这个方法里面会得到渲染的视图。我们可以看到这个视图的类型是ThymeleafView。
2. 转发视图
SpringMVC中默认的转发视图是InternalResourceView。 当控制器方法中设置的视图名称以forward:为前缀时会创建InternalResoueceView视图此时视图名称不会被配置文件中的视图解析器解析而是去掉前缀后通过转发实现跳转。 RequestMapping(/testForward)public String testForward(){//转发给首页//这个过程会有两次视图解析过程//第一次是完成转发//第二次是解析首页return forward:/;}3. 重定向视图
SpringMVC中默认的重定向视图为RedirectView。 当控制器方法设置视图名称的前缀为redirect:时会创建RedirectView视图。此时视图名称不会被配置文件中的视图解析器解析而是去掉前缀后通过重定向实现跳转。 RequestMapping(/testRedirect)public String testRedirect(){return redirect:/;}注意重定向路径与前端或是Servlet原生API中不同在控制器方法中设置重定向路径会自动为绝对路径加上上下文路径。解析相对路径时仍旧是在当前URL的基础上进行跳转。
4. 视图控制器 !--如果控制器方法中除了完整页面跳转外没有其他任何逻辑代码那么就可以通过配置的方法来完成视图解析例如实现主页的跳转path相当于RequestMapping注解的value属性view-name相当于返回的视图名称这个属性可能会报红但是不影响运行不用管--mvc:view-controller path/ view-nameindex/mvc:view-controller!--配置了视图控制器后会使控制器中的所有请求映射都失效可以通过开启注解驱动来解决这个问题--mvc:annotation-driven /开启了注解驱动后
5. jsp视图解析
jsp视图需要使用InternalResourceViewResolver解析。 当配置InternalResourceViewResolver解析器后除了重定向外所有的视图渲染结果都为InternalResourceView。 bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/templates/ /property namesuffix value.jsp //bean%--Created by IntelliJ IDEA.User: 14498Date: 2024/1/4Time: 16:45To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
h1首页/h1
!--jsp获得上下文路径--
a href${pageContext.request.contextPath}/test跳转test/a
/body
/html