SpringMVC视图

文章目录

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

1、ThymeleafView

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

java 复制代码
@RequestMapping("/testHello")
public String testHello(){
    return "hello";
}

2、转发视图

SpringMVC中默认的转发视图是InternalResourceView

SpringMVC中创建转发视图的情况:

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

例如"forward:/","forward:/employee"

java 复制代码
@RequestMapping("/testForward")
public String testForward(){
    return "forward:/testHello";
}

3、重定向视图

SpringMVC中默认的重定向视图是RedirectView

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

例如"redirect:/","redirect:/employee"

java 复制代码
@RequestMapping("/testRedirect")
public String testRedirect(){
    return "redirect:/testHello";
}

注:

重定向视图在解析时,会先将redirect:前缀去掉,然后会判断剩余部分是否以/开头,若是则会自动拼接上下文路径

4、视图控制器view-controller

当控制器方法中,仅仅用来实现页面跳转,即只需要设置视图名称时,可以将处理器方法使用view-controller标签进行表示

xml 复制代码
<!--
	path:设置处理的请求地址
	view-name:设置请求地址所对应的视图名称
-->
<mvc:view-controller path="/testView" view-name="success"></mvc:view-controller>

注:

当SpringMVC中设置任何一个view-controller时,其他控制器中的请求映射将全部失效,此时需要在SpringMVC的核心配置文件中设置开启mvc注解驱动的标签:

<mvc:annotation-driven />

5、总结

Spring MVC 是一个基于 Java 的 Web 应用程序开发框架,它的视图层主要由视图解析器(View Resolver)和视图(View)组成。

视图解析器(View Resolver):Spring MVC 中的视图解析器负责将逻辑视图名称解析为实际视图对象。通常情况下,视图解析器会根据配置的规则将逻辑视图名称映射到具体的视图实现,如 JSP、Thymeleaf、Freemarker 等。配置视图解析器可以在 Spring MVC 的配置文件中进行,例如在 dispatcher-servlet.xml 中配置 InternalResourceViewResolver 来解析 JSP 视图。

视图(View):视图是 Spring MVC 中的一部分,它负责展示应用程序的用户界面。在 Spring MVC 中,视图可以是任何东西,例如 JSP、Thymeleaf 模板、Freemarker 模板、Velocity 模板等。视图通常会根据控制器返回的模型数据来动态生成最终的用户界面。

Spring MVC 的视图层主要通过视图解析器来解析视图,将逻辑视图名称映射到实际的视图对象,然后通过视图来展示最终的用户界面。

相关推荐
苦学编程的谢20 小时前
Redis_6_String
数据库·redis·缓存
秋已杰爱21 小时前
技术准备十:etcd
数据库·etcd
研究司马懿21 小时前
【ETCD】ETCD集群部署(TLS)
数据库·chrome·云原生·自动化·运维开发·etcd
行者游学21 小时前
ETCD 备份脚本
数据库·etcd
百锦再21 小时前
第8章 模块系统
android·java·开发语言·python·ai·rust·go
没有bug.的程序员21 小时前
Eureka 注册中心原理与服务注册发现机制
java·spring·云原生·eureka·架构·注册中心·服务注册发现
研究司马懿21 小时前
【ETCD】ETCD单节点二进制部署(TLS)
数据库·chrome·云原生·运维开发·etcd·argocd·gitops
行者游学21 小时前
ETCD 压力测试脚本
数据库·压力测试·etcd
m0_5913389121 小时前
day8鹏哥C语言--函数
c语言·开发语言·算法
oplp21 小时前
回过头来重新对C语言进行深度学习(一)
c语言·开发语言