6、SpringMVC之视图

打印 上一主题 下一主题

主题 932|帖子 932|积分 2796

注意:本文环境搭建请参考5.2节
6.1、视图概述


  • 视图的作用是渲染数据,将模型Model中的数据展示给用户;
  • SpringMVC视图的种类很多,默认有转发视图和重定向视图;
  • SpringMVC中的视图是View接口;
  • 当工程引入jstl的依赖,转发视图会自动转换为JstlView;
  • 若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,
    由此视图解析器解析之后所得到的是ThymeleafView。
6.2、ThymeleafView(常用)


  • 当控制器方法中所设置的视图名称没有任何前缀时,视图名称会被SpringMVC配置文件中所配置的视图解析器解析;
  • 视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转。
6.2.1、控制器方法示例


注意:此时SpringMVC配置文件中所配置的视图解析器为ThymeleafViewResolver
  1.     @RequestMapping("/test/view/thymeleaf")
  2.     public String testThymeleafView(){
  3.         return "success";
  4.     }
复制代码
6.2.2、页面请求示例

  1. <a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/thymeleaf}">测试SpringMVC的视图ThymeleafView</a>
复制代码
6.2.3、测试效果



由浏览器地址栏可知,ThymeleafView本质上是转发视图
6.3、InternalResourceView(少用)


  • SpringMVC中默认的转发视图是InternalResourceView;
  • 当控制器方法中所设置的视图名称以"forward:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,
    而是会将前缀"forward:"去掉,剩余部分作为最终路径,通过转发的方式实现跳转
6.3.1、控制器方法示例


注意:因为DispatcherServlet接管了所有请求,所以此时请求转发不能直接返回物理视图,但可以调用其他请求
  1.     @RequestMapping("/test/view/forward")
  2.     public String testInternalResourceView(){
  3.         return "forward:/test/view/thymeleaf";
  4.     }
复制代码
6.3.2、页面请求示例

  1. <a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/forward}">测试SpringMVC的视图InternalResourceView</a>
复制代码
6.3.3、测试效果



6.4、重定向视图


  • SpringMVC中默认的重定向视图是RedirectView;
  • 当控制器方法中所设置的视图名称以"redirect:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,
    而是会将前缀"redirect:"去掉,剩余部分作为最终路径,通过重定向的方式实现跳转
6.4.1、控制器方法示例


注意:因为DispatcherServlet接管了所有请求,所以此时重定向不能直接返回物理视图,但可以调用其他请求
  1.     @RequestMapping("/test/view/redirect")
  2.     public String testRedirectView(){
  3.         return "redirect:/test/view/thymeleaf";
  4.     }
复制代码
6.4.2、页面请求示例

  1. <a th:target="_blank" href="https://www.cnblogs.com/@{/test/view/redirect}">测试SpringMVC的视图RedirectView</a>
复制代码
6.4.3、测试效果



注意:浏览器地址栏显示为重定向的地址
6.5、请求转发和重定向的使用情景


  • 请求转发:失败时使用,例如登录失败用请求转发
  • 重定向:成功时使用,例如登录成功用重定向
6.6、视图控制器

当控制器方法仅仅用来实现页面跳转(即只需要设置视图名称时),可以使用视图控制器来替代其功能
6.6.1、要被替代的控制器方法示例


6.6.2、视图控制器示例


注意:如果设置了视图控制器,则只有视图控制器所指定的请求路径会被处理,其他请求将全部404;
为了让其他请求也能得到(控制器方法)处理,需要开启mvc的注解驱动
  1.    
  2.     <mvc:annotation-driven></mvc:annotation-driven>
  3.    
  4.     <mvc:view-controller path="/" view-name="index"></mvc:view-controller>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表