6、SpringMVC之视图
注意:本文环境搭建请参考5.2节6.1、视图概述
[*]视图的作用是渲染数据,将模型Model中的数据展示给用户;
[*]SpringMVC视图的种类很多,默认有转发视图和重定向视图;
[*]SpringMVC中的视图是View接口;
[*]当工程引入jstl的依赖,转发视图会自动转换为JstlView;
[*]若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,
由此视图解析器解析之后所得到的是ThymeleafView。
6.2、ThymeleafView(常用)
[*]当控制器方法中所设置的视图名称没有任何前缀时,视图名称会被SpringMVC配置文件中所配置的视图解析器解析;
[*]视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转。
6.2.1、控制器方法示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015180401502-772699848.png
注意:此时SpringMVC配置文件中所配置的视图解析器为ThymeleafViewResolver
@RequestMapping("/test/view/thymeleaf")
public String testThymeleafView(){
return "success";
}6.2.2、页面请求示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015175043296-998898038.png
<a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/thymeleaf}">测试SpringMVC的视图ThymeleafView</a>6.2.3、测试效果
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015180219323-1137232857.png
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015180450165-74048065.png
由浏览器地址栏可知,ThymeleafView本质上是转发视图
6.3、InternalResourceView(少用)
[*]SpringMVC中默认的转发视图是InternalResourceView;
[*]当控制器方法中所设置的视图名称以"forward:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,
而是会将前缀"forward:"去掉,剩余部分作为最终路径,通过转发的方式实现跳转
6.3.1、控制器方法示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015184730152-1654623715.png
注意:因为DispatcherServlet接管了所有请求,所以此时请求转发不能直接返回物理视图,但可以调用其他请求
@RequestMapping("/test/view/forward")
public String testInternalResourceView(){
return "forward:/test/view/thymeleaf";
}6.3.2、页面请求示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015181206759-1973775579.png
<a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/forward}">测试SpringMVC的视图InternalResourceView</a>6.3.3、测试效果
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015181319315-1039446631.png
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015230309989-1475645884.png
6.4、重定向视图
[*]SpringMVC中默认的重定向视图是RedirectView;
[*]当控制器方法中所设置的视图名称以"redirect:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,
而是会将前缀"redirect:"去掉,剩余部分作为最终路径,通过重定向的方式实现跳转
6.4.1、控制器方法示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015224955554-1712335804.png
注意:因为DispatcherServlet接管了所有请求,所以此时重定向不能直接返回物理视图,但可以调用其他请求
@RequestMapping("/test/view/redirect")
public String testRedirectView(){
return "redirect:/test/view/thymeleaf";
}6.4.2、页面请求示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015225618511-1242873524.png
<a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/redirect}">测试SpringMVC的视图RedirectView</a>6.4.3、测试效果
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015225808293-1585392300.png
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015225827843-2057922807.png
注意:浏览器地址栏显示为重定向的地址
6.5、请求转发和重定向的使用情景
[*]请求转发:失败时使用,例如登录失败用请求转发
[*]重定向:成功时使用,例如登录成功用重定向
6.6、视图控制器
当控制器方法仅仅用来实现页面跳转(即只需要设置视图名称时),可以使用视图控制器来替代其功能
6.6.1、要被替代的控制器方法示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015234320909-502216759.png
6.6.2、视图控制器示例
https://img2023.cnblogs.com/blog/2052479/202310/2052479-20231015234452565-1516119554.png
注意:如果设置了视图控制器,则只有视图控制器所指定的请求路径会被处理,其他请求将全部404;
为了让其他请求也能得到(控制器方法)处理,需要开启mvc的注解驱动
<mvc:annotation-driven></mvc:annotation-driven>
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]