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 的视图层主要通过视图解析器来解析视图,将逻辑视图名称映射到实际的视图对象,然后通过视图来展示最终的用户界面。

相关推荐
Owen_Q11 分钟前
Denso Create Programming Contest 2025(AtCoder Beginner Contest 413)
开发语言·算法·职场和发展
hqxstudying20 分钟前
java依赖注入方法
java·spring·log4j·ioc·依赖
·云扬·28 分钟前
【Java源码阅读系列37】深度解读Java BufferedReader 源码
java·开发语言
KellenKellenHao37 分钟前
MySQL数据库主从复制
数据库·mysql
春生野草1 小时前
关于SpringMVC的整理
spring
liulilittle1 小时前
C++ i386/AMD64平台汇编指令对齐长度获取实现
c语言·开发语言·汇编·c++
@ chen1 小时前
Redis事务机制
数据库·redis
巴里巴气1 小时前
selenium基础知识 和 模拟登录selenium版本
爬虫·python·selenium·爬虫模拟登录
KaiwuDB1 小时前
使用Docker实现KWDB数据库的快速部署与配置
数据库·docker
19891 小时前
【零基础学AI】第26讲:循环神经网络(RNN)与LSTM - 文本生成
人工智能·python·rnn·神经网络·机器学习·tensorflow·lstm