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 学习(六)之视图
目录 1 SpringMVC 视图介绍 2 JSP 视图 3 Thymeleaf 视图 4 FreeMarker 视图 5 XSLT 视图 6 请求转发与重定向 6.1 请求转发 (Forward) 6.2 重定向 (Redirect) 7 视图控制器 (view-controller) 1 SpringMVC 视图介绍 在 SpringMVC 框架中,视图可以是一个 J…...
ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记
在ROS中,计算图(ROS Compute Graph)是一个核心概念,它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络,它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实…...
一本通 1403:素数对
在判断素数对的两个数是否都为素数时可以只判断数的一半 #include<bits/stdc.h> using namespace std; bool su(int a,int b){ for(int i2;i<sqrt(a);i){ if(a%i0){ return 0; } } for(int i2;i<sqrt(b);i){ if(…...
华为---RSTP(四)---RSTP的保护功能简介和示例配置
目录 1. 技术背景 2. RSTP的保护功能 3. BPDU保护机制原理和配置命令 3.1 BPDU保护机制原理 3.2 BPDU保护机制配置命令 3.3 BPDU保护机制配置步骤 4. 根保护机制原理和配置命令 4.1 根保护机制原理 4.2 根保护机制配置命令 4.3 根保护机制配置步骤 5. 环路保护机…...
Android基础控件介绍
在Android应用程序开发中,使用基础控件是非常常见的。这些控件允许您在用户界面中显示文本、图像、按钮等元素,以及接收用户输入。本文将介绍几种常见的基础控件,并给出每个控件在示例XML中使用的属性的详细说明。 1. TextView TextView 是…...
【总结】Maxwell学习笔记
1.Maxwell简介 Maxwell 是一款用Java编写的MySQL变更数据抓取软件,它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台 官网地址:M…...
AFL fork server和fuzzer的交互
看了一些博客,都是在说fuzzer和fork server进行交互,由fork server fork出子进程来执行程序,但是不太明白这两者到底是如何在代码层面进行交互的。 run_target中有这么一段代码,大概意思是fuzzer给fork server传递prev_timed_out…...
Java SE:多线程(Thread)
1. 线程两个基本概念 并发:即线程交替运行多个指令并行:即多个线程同时运行指令 并发并行不矛盾,两者可同时发生,即多个线程交替运行指令 2. 多线程3种实现方式 2.1 直接创建线程对象 /*** 方式1:* 1. 创建thread类的…...
你敢信?软件测试万能面试脚本他来了?
写在前面: 过春节了,四舍五入接下来马上要年底了,新一波的跳槽旺季马上来临,不知道你是不是已经安于现状,还是蓄势待发呢?最近我和我的哈皮群友们一顿讨论,拟写了大家可能会遇到的面试情况&…...
C++/Python简单练手题
前言 最近需要开始使用python,但是对python了解的并不多,于是先从很早之前刚学C时写过的一些练手题开始,使用python来实现相同的功能,在温习python基础语法的同时,也一起来感受感受python的魅力 99乘法表 c…...
视频在线压缩
video2edit 一款免费的在线视频编辑软件,可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址:在线视频编辑器和转换器 - 编辑,转换和压缩视频文件 打开视频压缩页面,上传想要压缩视频,支持MP4&…...
Python列表的合并、重复、判断与切片操作你学会了吗
1.合并列表 通过 实现 list1 ["佛跳墙", "肠粉", "刀削面", "烤鸭"]list2 [32, 4, 5, 7.43, True]list3 list1 list2print(list3) # [佛跳墙, 肠粉, 刀削面, 烤鸭, 32, 4, 5, 7.43, True] 2.重复输出列表中的元素 通过 * 实…...
Vue(3.3.4)+three.js(0.161.0)实现3D可视化地图
一.前言 由于最近在学习three.js,所以观摩了一下掘金,csdn等网站上的有关这部分的内容,刚好看到一个带你入门three.js——从0到1实现一个3d可视化地图 - 掘金 (juejin.cn),再加上我的专业属性是地理相关,可以说是专业对口…...
瑞吉苍穹外卖如何拓展?已经经过不同公司多轮面试。项目中会问到哪些问题?以及问题如何解决?
别催了,别催了,先收藏吧。 作者大大正在加班加点完成。 文章会尽快发布,关注收藏,尽请期待。 想要加入并查阅作者的知识库可以联系作者 不要白嫖,通过后,附上关注和收藏截图。 已有众多小伙伴加入 目前…...
动态内存分配
目录 存在动态内存分配的原因动态内存函数mallocfreecallocrealloc 常见的动态内存错误C/C程序的内存开辟柔性数组柔性数组的特点柔性数组的使用柔性数组的优势 存在动态内存分配的原因 内存开辟方式,例如: int val 20;在栈空间上开辟四个字节 char arr[10] { 0 …...
【C语言】常见的动态内存管理错误
前言 上一篇介绍了C语言中 动态内存管理函数,本片讲解的是 在我们使用动态内存管理时 常见的错误,一起来看看吧~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 1.对NULL指针的解引⽤操作 错…...
数据结构之二叉树的精讲
𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…...
ETL是什么
一、ETL概念 ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库ÿ…...
华为配置WLAN高密业务示例
配置WLAN高密业务示例 组网图形 图1 配置高密WLAN环境网络部署组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 体育场由于需要接入用户数量很大,AP间部署距离较小,因此AP间的干扰较大,可能导致用户上网网…...
C++——类和对象(1)
1. 类 我们之前提及过C语言是面向过程的语言,其解决问题的方式是关注问题过程,然后逐步解决。而C是面向对象编程,聚焦于对象,依靠多个对象之间的交互关系解决问题。而类这个概念的引入则是面向对象的最深刻体现。 1.1 C中的结构体…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
