SpringMVC 学习(六)之视图

目录

1 SpringMVC 视图介绍

2 JSP 视图

3 Thymeleaf 视图

4 FreeMarker 视图

5 XSLT 视图

6 请求转发与重定向

6.1 请求转发 (Forward)

6.2 重定向 (Redirect)

7 视图控制器 (view-controller)


1 SpringMVC 视图介绍

        在 SpringMVC 框架中,视图可以是一个 JSP 页面、HTML 文件、模板文件(如 Thymeleaf、FreeMarker 等)、JSON 响应、XML 响应或其他类型的内容。SpringMVC 中的视图负责渲染数据和将模型 Model 中的数据展示给用户。SpringMVC 提供了多种视图类型,包括 JSP 视图、Thymeleaf 视图、FreeMarker 视图、XSLT 视图等。

2 JSP 视图

        在 SpringMVC 中,我们可以使用 JSP 视图来展示数据。首先需要在 Spring 配置文件中配置InternalResourceViewResolver 来指定 JSP 页面的位置,然后在控制器中返回逻辑视图名,Spring 会自动将其解析为对应的 JSP 页面。

        当配置多个视图解析器时,它们的配置顺序决定了解析视图的优先级。通常情况下,我们应该把优先级高的视图解析器配置在前面,这样它们会先尝试解析视图。如果某个视图解析器能够解析视图,后面的视图解析器就不会再尝试。此外,我们也可以通过 order 来设置解析器的优先级,order 越小,优先级越高。

<!-- 配置 JSP 解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置前缀 --><property name="prefix" value="/WEB-INF/pages/"/><!-- 配置后缀 --><property name="suffix" value=".jsp"/><!-- 定义解析器顺序 --><property name="order" value="1"/>
</bean>

3 Thymeleaf 视图

        Thymeleaf 是一种现代化的服务器端 Java 模板引擎,它可以直接在浏览器中预览页面,并支持 HTML5 标准。在 SpringMVC 中,我们可以使用 Thymeleaf 视图来展示数据。首先需要在 Spring 配置文件中配置 ThymeleafViewResolver 来指定 Thymeleaf 模板的位置,然后在控制器中返回逻辑视图名,Spring 会自动将其解析为对应的 Thymeleaf 模板。

导入依赖

<!-- Spring5和Thymeleaf整合包 -->
<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version>
</dependency>
<!-- 配置 Thymeleaf 解析器 --><bean id="ThymeleafViewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><!-- 定义解析器顺序 --><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 视图前缀 --><property name="prefix" value="/WEB-INF/pages/"/><!-- 视图后缀 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8" /></bean></property></bean></property></bean>

4 FreeMarker 视图

        FreeMarker 是一种模板引擎,它可以生成任意类型的文本,包括 HTML、XML、CSS、JavaScript 等。在 SpringMVC 中,我们可以使用 FreeMarker 视图来展示数据。首先需要在 Spring 配置文件中配置 FreeMarkerViewResolver 来指定 FreeMarker 模板的位置,然后在控制器中返回逻辑视图名,Spring 会自动将其解析为对应的 FreeMarker 模板。

<!-- 配置 FreeMarker 解析器 -->
<bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".ftl"/><!-- 定义解析器顺序 --><property name="order" value="2"/>
</bean>

5 XSLT 视图

        XSLT (Extensible Stylesheet Language Transformations) 是一种 XML 转换语言,它可以将 XML 文档转换为其他格式,如 HTML、JSON、CSV 等。在 SpringMVC 中,我们可以使用 XSLT 视图来展示数据。首先需要在 Spring 配置文件中配置 XsltViewResolver 来指定 XSLT 模板的位置,然后在控制器中返回逻辑视图名,Spring 会自动将其解析为对应的 XSLT 模板。

<!-- 配置 Xslt 解析器 -->
<bean id="XsltViewResolver" class="org.springframework.web.servlet.view.xslt.XsltViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".xslt"/><!-- 定义解析器顺序 --><property name="order" value="3"/>
</bean>

6 请求转发与重定向

        在SpringMVC中,请求转发 (Forward) 和重定向 (Redirect) 是两种常用的页面跳转方式,它们用于将请求发送到不同的资源或页面。

6.1 请求转发 (Forward)

        请求转发是指将请求转发到另一个资源或页面,这个资源或页面通常位于同一个 Web 应用内部。在 SpringMVC 中,可以使用 forward 关键字进行请求转发。请求转发是服务器内部的跳转,客户端浏览器并不知道页面发生了转发,它的地址栏不会发生变化。

@Controller
public class MyController {@RequestMapping("/forwardExample")public String forwardExample() {return "forward:/newPage"; // 转发到 /newPage 页面}
}
6.2 重定向 (Redirect)

        重定向是指将请求重定向到另一个 URL,这个 URL 可以是同一个 Web 应用内部的资源,也可以是外部的 URL。在 SpringMVC 中,可以使用 redirect 关键字进行重定向。重定向是客户端的跳转,服务器会告诉浏览器要访问一个新的 URL,因此浏览器会发送新的请求。

@Controller
public class MyController {@RequestMapping("/redirectExample")public String redirectExample() {return "redirect:/newPage"; // 重定向到 /newPage 页面}
}

总结:请求转发是一次请求,重定向是多次请求。类似计算机网络中的 DNS 解析过程(递归查询和迭代查询)

7 视图控制器 (view-controller)

        在 SpringMVC 中,视图控制器 (view-controller) 是一种用于将 URL 路径映射到视图的简化方式。它允许开发人员将 URL 直接映射到视图,而无需创建额外的控制器方法来处理请求,这样可以简化配置。

@RequestMapping("/view")
public String view() {return "success";
}

通过在 SpringmMVC 的配置文件中添加 <mvc:view-controller> 标签,就可以代替上述控制器方法。

<mvc:view-controller path="/view" view-name="success"></mvc:view-controller>
当 SpringMVC 的配置文件设置了 view-controller 时,其他控制器中的请求映射将全部失效,此时需要在 SpringMVC 的配置文件中设置开启 mvc 注解驱动的标签:<mvc:annotation-driven />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/265649.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字节面试问题

实现三列布局的方法 第一种&#xff1a;可以使用浮动margin 第二种&#xff1a;浮动BFC <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

防御保护:防火墙内容安全

一、IAE&#xff08;Intelligent Awareness Engine&#xff09;引擎 二、深度检测技术(DFI和DPI&#xff09; 1.DPI – 深度包检测技术 DPI主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对数据包的内容进行识别。&#x…

10_Vue

文章目录 Vue快速入门Vue的指令Vue的插值表达式V指令v-bind&#xff08;单向绑定&#xff09;v-model&#xff08;双向绑定&#xff09;v-on&#xff08;事件监听&#xff09;v-for&#xff08;循环&#xff09;v-text、v-htmlv-show&#xff08;显示/隐藏&#xff09;v-if&…

JetBrains系列工具,配置PlantUML绘图

PlantUML是一个很强大的绘图工具&#xff0c;各种图都可以绘制&#xff0c;具体的可以去官网看看&#xff0c;或者百度。 PlantUML简述 https://plantuml.com/zh/ PlantUML语言参考指引 https://plantuml.com/zh/guide PlantUML语言是依赖Graphviz进行解析的。Graphviz是开源…

SAP PP学习笔记04 - BOM1 - BOM创建,用途,形式,默认值,群组BOM等

本章开始讲BOM的内容。 1&#xff0c;BOM的定义 &#xff08;Bill of Materials&#xff09; 物料清单&#xff08;Bill of Materials&#xff0c;简称BOM&#xff09;是描述企业产品组成的技术文件。在加工资本式行业&#xff0c;它表明了产品的总装件、分装件、组件、部件、…

python自动化学习--3.8python操作EXCEL文件python日志收集处理

1、Excel文件处理 安装 openpxl 第三方库 openpxl 模块三大组件: 1、工作簿 &#xff08;包含多个sheet工作表&#xff09; 2、工作表 &#xff08;某个数据包含在某个工作表&#xff09; 3、单元格 1、创建excel工作簿 import openpyxl"""Excel表格的创建…

练习 2 Web [ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 Web常规题目 首先尝试查找常见的前端页面index.php之类的&#xff0c;没找到 题目有个“BackupFile”——备份文件 尝试用工具遍历查找相关的文件 御剑没扫出来&#xff0c;搜索搭建好dirsearch后&#xff0c;扫出来的index.php.bak 扫描工…

SPA首屏加载速度慢的怎么解决?

什么时首屏加载 首屏时间&#xff0c;指的是浏览器从响应用户输入网址地址&#xff0c;到首屏内容渲染完成的时间&#xff0c;此时整个网页不一定要全部渲染完成&#xff0c;但需要展示当前视图需要的内容。首屏加载可以说是用户体验中最重要的环节 如何计算首屏时间 通过DOM…

可观测性在威胁检测和取证日志分析中的作用

在网络中&#xff0c;威胁是指可能影响其平稳运行的恶意元素&#xff0c;因此&#xff0c;对于任何希望避免任何财政损失或生产力下降机会的组织来说&#xff0c;威胁检测都是必要的。为了先发制人地抵御来自不同来源的任何此类攻击&#xff0c;需要有效的威胁检测情报。 威胁…

【Vue的单选按钮不选中已解决亲测】

伙计&#xff0c;你是否因为后台给vue前端已经传入了对应的单选按钮的数据&#xff0c;为啥还是不选中呢&#xff01;&#xff1f; 这个问题实话我百度乐很多都不能解决我的问题&#xff0c;最后机智如我的发现乐vue的自身的问题&#xff0c;后端返回的数据类型如果是数字int类…

浙江大学主办!2024年第7届信息通信与信号处理国际会议( ICICSP2024)征稿开启!

会议官网 IEEE | ICICSP 2024 学术会议查询-学术会议交流服务平台-爱科会易 (uconf.com)​www.uconf.com/

JavaEE:多线程(3):案例代码

目录 案例一&#xff1a;单例模式 饿汉模式 懒汉模式 思考&#xff1a;懒汉模式是否线程安全&#xff1f; 案例二&#xff1a;阻塞队列 可以实现生产者消费者模型 削峰填谷 接下来我们自己实现一个阻塞队列 1.先实现一个循环队列 2. 引入锁&#xff0c;实现线程安全 …

ETH开源PPO算法学习

前言 项目地址&#xff1a;https://github.com/leggedrobotics/rsl_rl 项目简介&#xff1a;快速简单的强化学习算法实现&#xff0c;设计为完全在 GPU 上运行。这段代码是 NVIDIA Isaac GYM 提供的 rl-pytorch 的进化版。 下载源码&#xff0c;查看目录&#xff0c;整个项目…

Redis 16种妙用

1、缓存 2、数据共享分布式 3、分布式锁 4、全局ID 5、计数器 6、限流 7、位统计 8、购物车 9、用户消息时间线timeline 10、消息队列 11、抽奖 12、点赞、签到、打卡 13、商品标签 14、商品筛选 15、用户关注、推荐模型 16、排行榜 1、缓存 String类型 例如&#xff1a;热点…

提示emp.dll丢失怎么办?emp.dll的多种解决方法

在计算机游戏运行过程中&#xff0c;如果系统提示“emp.dll文件丢失”&#xff0c;这可能会引发一系列影响游戏正常运行的问题。由于emp.dll是动态链接库文件中的一种&#xff0c;它通常承载着游戏核心功能的重要模块或组件&#xff0c;一旦缺失&#xff0c;意味着相关功能将无…

Flask——基于python完整实现客户端和服务器后端流式请求及响应

文章目录 本地客户端Flask服务器后端客户端/服务器端流式接收[打字机]效果 看了很多相关博客&#xff0c;但是都没有本地客户端和服务器后端的完整代码示例&#xff0c;有的也只说了如何流式获取后端结果&#xff0c;基本没有讲两端如何同时实现流式输入输出&#xff0c;特此整…

Linux:Ansible的常用模块

模块帮助 ansible-doc -l 列出ansible的模块 ansible-doc 模块名称 # 查看指定模块的教程 ansible-doc command 查看command模块的教程 退出教程时候建议不要使用ctrlc 停止&#xff0c;某些shell工具会出现错误 command ansible默认的模块,执行命令&#xff0c;注意&#x…

Docker数据卷-自定义镜像

一.数据卷 1.1数据卷的基本使用 数据卷是一个特殊的目录&#xff0c;用于在Docker容器中持久化和共享数据。 数据卷的主要特点包括&#xff1a; 数据持久性&#xff1a;数据卷允许您在容器的生命周期之外保持数据的持久性。即使容器被删除&#xff0c;数据卷中的数据依然存在&…

小程序框架(概念、工作原理、发展及应用)

引言 移动应用的普及使得用户对于轻量级、即时可用的应用程序需求越来越迫切。在这个背景下&#xff0c;小程序应运而生&#xff0c;成为一种无需下载安装、即点即用的应用形式&#xff0c;为用户提供了更便捷的体验。小程序的快速发展离不开强大的开发支持&#xff0c;而小程…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的活体人脸检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本篇博客详细讲述了如何利用深度学习构建一个活体人脸检测系统&#xff0c;并且提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并进行了与前代算法YOLOv7、YOLOv6、YOLOv5的细致对比&#xff0c;展示了其在图像、视频、实时视频流和批量文件处…