(8)SpringMVC中的视图类型及其特点,以及视图控制器view-controller的配置
SpringMVC的视图
转发和重定向的区别及其原理,参考文章
视图类型及特点
视图的作用就是将Model中的数据渲染到页面上并展示给用户,SpringMVC中视图对应的View接口有三种实现类对应三种视图解析器
- 默认有
转发视图InternalResourceView和重定向视图RedirectView以及ThymeleafView视图,当工程引入jstl的依赖转发视图会自动转换为JstlView
// 视图接口
View view;
// 获取视图名称
String viewName = mv.getViewName();
if (viewName != null) {// 解析视图名称,根据视图名称创建对应的视图解析器view = resolveViewName(viewName, mv.getModelInternal(),locale,request);
}
ThymeleafView视图
当控制器方法返回或在ModelView对象中设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置的ThymeleafView视图解析器解析
- ThymeleafView视图解析器会给视图名称拼接上视图前缀和视图后缀得到页面的物理地址,然后解析页面中的Thymeleaf语法渲染数据并
通过转发的方式实现跳转
<a th:href="@{/testThymeleafView}">测试ThymeleafView</a><br>
@RequestMapping("/testThymeleafView")
public String testThymeleafView(){return "success";
}
转发视图
当控制器方法返回或在ModelView对象中所设置的视图名称以"forward:"为前缀时,此时的视图名称会被InternalResourceView视图解析器解析
- InternalResourceView视图解析器会将前缀"forward:"去掉,剩余部分作为最终请求路径
转发到某个请求或页面(可以解析jsp页面中的语法)
<a th:href="@{/testForward}">测试InternalResourceView</a><br>
@RequestMapping("/testForward")
public String testForward(){// 这种方式转发到的页面中如果有ThymeleafView语法是不会被解析的return "forward:/testThymeleafView";
}
重定向视图
当控制器方法返回或在ModelView对象中所设置的视图名称以"redirect:"为前缀时,此时的视图名称会被RedirectView视图解析器解析
- RedirectView视图解析器会将前缀"redirect:"去掉,如果剩余部分以
/开始则会自动拼接上下文路径作为最终请求路径重定向到某个请求或页面
<a th:href="@{/testRedirect}">测试RedirectView</a><br>
@RequestMapping("/testRedirect")
public String testRedirect(){//redirect:/会自动加上下文路径return "redirect:/testThymeleafView";
}
配置视图控制器view-controller
在控制器方法中只需要实现页面跳转(只设置页面视图名称)功能而没有其他业务,此时可以在SpringMvc的配置文件中使用view-controller标签表示控制器方法
- 首先要引入
mvc的命名空间及其约束文件 - 只要在SpringMvc的配置文件中设置了view-controller标签,此时
只有视图控制器配置的请求才会生效,其他控制器方法中配置的请求映射将全部失效 - 开启MVC的注解驱动
mvc:annotation-driven,可以保证视图控制器设置的请求和控制器方法设置的请求全部都会被前端控制器处理
| 属性 | 功能 |
|---|---|
| path | 设置处理的请求地址即请求映射RequestMapping |
| view-name | 设置请求地址所对应的视图名称即控制器方法返回值,依然遵守视图解析器的流程 |
需求: WEB-INF目录下的资源是受保护的即不能通过路径在浏览器中直接访问
<!DOCTYPE html>
<!--引入thymeleaf的命名空间,使用thymeleaf标签-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body><h1>Hello SpringMvc</h1>
</body>
</html>
单独定义一个控制器方法跳转到首页
@Controller
public class HelloController {// 处理http://localhost:8080/SpringMvc/请求@RequestMapping("/")public String index() {// 返回逻辑视图名称,对应页面的物理地址为/WEB-INF/templates/index.htmlreturn "index";}
}
在SpringMvC的核心配置文件中使用视图控制器标签跳转到首页
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--自动扫描控制层组件--><context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan><!--配置Thymeleaf视图解析器--><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"></bean><!--视图控制器,设置请求对应的视图名称实现页面的跳转--><mvc:view-controller path="/" view-name="index"></mvc:view-controller><!--开启MVC的注解驱动,保证视图控制器设置的请求和控制器方法设置的请求全部都会被前端控制器处理--><mvc:annotation-driven />
</beans>
相关文章:
(8)SpringMVC中的视图类型及其特点,以及视图控制器view-controller的配置
SpringMVC的视图 转发和重定向的区别及其原理,参考文章 视图类型及特点 视图的作用就是将Model中的数据渲染到页面上并展示给用户,SpringMVC中视图对应的View接口有三种实现类对应三种视图解析器 默认有转发视图InternalResourceView和重定向视图RedirectView以及Thymeleaf…...
ansible学习笔记分享
yum install ansible -y #安装,注意yum源问题 yum源: yum install epel-release -y mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak >> /dev/null yum clean all rpm -Uvh http://mirrors.ustc.edu.cn/epel/epel-releas…...
以dzzoffice为例设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
在测试dzzoffice的过程中,需要配置邮件服务器,dzzoffice的邮件设置有三种选项: 1、通过 PHP 函数的 sendmail 发送(推荐此方式) 2、通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证) 3、通过 PHP 函数 SMTP 发送 Email(仅 Windows 主机下有…...
加拿大艾伯塔省执法部门利用OpenText Encase显着提高案件效率
艾伯塔省执法部门利用OpenText Encase显着提高案件效率 Internet Child Exploitation Unit (ICE) 使用OpenText EnCase Forensic 加快结案进度并起诉更多罪犯 挑战 从证据收集到报告和起诉的过程非常耗时; 需要工具帮助快速可靠地收集、分析和存储数字证据。 结果 显著提高案…...
【Codeforces】Educational Codeforces Round 156 [Rated for Div. 2]
hh第一次记录cf。 复盘 ab题目比较清晰,只开了这两题,后面看了下cd,即使开了翻译也看不懂题目是什么意思,最后放弃睡觉了。。 a是一道思维题,翻了下别人写的发现大家写的各不相同hh b是一道数学题,过程有点…...
结合swagger的前端架构小记
1.引言 开发中,我们是否经常遇到以下痛点: 项目越大,启动和热更新越来越慢,启动都要花个3-5分钟以上没有类型,接口返回的Object不拿到真实数据都不知道有哪些字段需要手动写很多request函数去调用api,手动…...
Python字典全解析:从基础到高级应用
更多资料获取 📚 个人网站:涛哥聊Python 字典是一种强大而多才多艺的数据类型,它以键-值对的形式储存信息,让我们能够以惊人的效率处理和管理数据。 字典能够将键和值关联在一起,使得数据的存储和检索变得非常高效。…...
Fourier变换中的能量积分及其详细证明过程
Fourier变换中的能量积分及其详细证明过程 在使用Fourier变换分析信号时候,有时需要用到能量积分。本文对Fourier变换的能量积分进行分析。 一、Fourier变换中的能量积分 若 F ( ω ) F [ f ( t ) ] F(\omega)\mathscr F[f(t)] F(ω)F[f(t)],则有 ∫…...
保护 Web 服务器安全性
面向公众的系统(如 Web 服务器)经常成为攻击者的目标,如果这些业务关键资源没有得到适当的保护,可能会导致安全攻击,从而导致巨大的财务后果,并在客户中失去良好的声誉。 什么是网络服务器审核 当有人想要…...
docker数据管理和网络通信
docker数据管理 管理 Docker 容器中数据主要有两种方式: 数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机…...
代理IP与Socks5代理:网络工程师的神奇魔法棒
网络工程师是数字世界的魔法师,而代理IP和Socks5代理则是他们的神奇魔法棒。这两项技术在跨界电商、爬虫、出海业务、网络安全和游戏等领域中,为网络工程师提供了强大的工具,让他们能够创造技术的奇迹。本文将深入研究这些神奇魔法棒在不同领…...
【K8S系列】深入解析k8s 网络插件—kube-router
序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 在现代容器化应用程序的世界中…...
Flutter的Platform介绍-跨平台开发,如何根据不同平台创建不同UI和行为
文章目录 Flutter跨平台概念介绍跨平台开发平台相关性Platform ChannelPlatform-specific UIPlatform Widgets 如何判断当前是什么平台实例 Platform 类介绍获取当前平台的名称检查当前平台其他属性 利用flutter设计跨Android和IOS平台应用的技巧1. 遵循平台的设计准则2. 使用平…...
gitlab docker部署,备份,恢复
本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源: 国外镜像源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…...
腾讯云/阿里云国际站代理:阿里云、华为云和腾讯云“大展拳脚”,与国际巨头未来竞争焦点是AI计算?
国内云计算市场重新掀起的价格战,腾讯云国际站代理让竞争本就内卷的市场陷入白热化,中国云厂商深耕东南亚的意愿变强。2020年之后,上下游企业与中国云厂商抱团出海趋势明显。东软集团、用友网络等A股上市公司也在走向东南亚。 东南亚市场蛋糕…...
基于Java+SpringBoot+Vue企业OA管理系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
Java架构师系统架构设计性能评估
目录 1 导论2 架构评估基础系统性能衡量的基本指标2.1 系统性能的指标2.2 数据库指标2.3 并发用户数2.4 网络延迟2.4 系统吞吐量2.5 资源性能指标3 架构评估基础服务端性能测试3.1基准测试3.2 负载测试3.3 压力测试3.4 疲劳强度测试3.5 容量测试1 导论 本章的主要内容是掌握架构…...
Android可滑动的分时图以及常用动画
先看一下效果: 自定义View 其中顶部是模仿的股票数据分时图,以前也写过详细的文章传送门,只不过不支持左右滑动,这款是在那个基础上的修改 在说一下分时图的思路吧: 可以看作是一条条相连的直线首尾相接,…...
软考系统架构师常考知识点整理(含案例分析、论文历年题目总结)
系统架构师常考知识点总结 计算机组成原理 1、同步/异步区分 CPU访问内存通常是同步方式 CPU与I/O接口交换信息通常是同步方式 CPU与PCI总线交换信息通常是同步方式 I/O接口与打印机交换信息则通常采用基于缓存池的异步方式, 2、双工通信方式 对端到端通信总线的信号传…...
Netty通信在中间件组件中的广泛使用-Dubbo3举例
Netty是一个高性能异步IO通信框架,封装了NIO,对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty,比如说:Dubbo3,rocketmq,ElasticSearch等。 比方说,我们使用dubbo作为rpc跨…...
RWKV7-1.5B-g1a参数调优教程:temperature=0.1稳输出 vs 0.8活生成,效果差异实测
RWKV7-1.5B-g1a参数调优教程:temperature0.1稳输出 vs 0.8活生成,效果差异实测 1. 模型简介 rwkv7-1.5B-g1a是基于RWKV-7架构的多语言文本生成模型,特别适合以下场景: 基础问答文案续写简短总结轻量中文对话 这个1.5B参数的版…...
3步解锁魔兽争霸III最佳体验:WarcraftHelper全方位优化工具指南
3步解锁魔兽争霸III最佳体验:WarcraftHelper全方位优化工具指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为…...
3步实现视频硬字幕精准提取:本地化多语言解决方案如何解决你的字幕难题
3步实现视频硬字幕精准提取:本地化多语言解决方案如何解决你的字幕难题 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区…...
基于Phi-4-mini-reasoning的智能运维异常检测系统
基于Phi-4-mini-reasoning的智能运维异常检测系统 1. 运维监控的痛点与智能化需求 运维团队每天都要面对海量的日志数据、监控指标和系统告警。传统监控系统往往只能做到简单的阈值告警,当系统出现异常时,运维人员需要手动翻阅成千上万条日志ÿ…...
使用MATLAB进行DeOldify结果的后处理与定量分析
使用MATLAB进行DeOldify结果的后处理与定量分析 如果你是一位习惯在MATLAB环境中工作的研究人员或工程师,当你想对DeOldify这类AI图像上色工具的输出结果进行更深入的评估时,可能会觉得缺少趁手的分析工具。直接看效果图固然直观,但如何量化…...
HumanoidVerse深度解析:如何通过多模拟器框架实现人形机器人sim2real高效训练
1. HumanoidVerse框架概览:多模拟器支持与模块化设计 HumanoidVerse是卡耐基梅隆大学(CMU)推出的开源框架,专门针对人形机器人的sim2real训练需求。这个框架最大的特点在于其多模拟器支持架构,能够无缝对接IsaacGym、IsaacSim和Genesis三种主…...
CCC数字钥匙Release 3实战:如何用BLE/UWB实现无钥匙进入(附避坑指南)
CCC数字钥匙Release 3实战:BLE/UWB无钥匙进入系统开发全解析 当你的手机靠近车辆时,车门自动解锁——这种科幻般的体验正通过CCC数字钥匙Release 3标准变为现实。作为汽车电子工程师,我曾用nRF5340开发板搭配UWB模块完整实现了这套系统&#…...
GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试
GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中,我们经常遇到一个典型问题:本地机器性能不足,无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...
从智能门铃到工业质检:拆解5个嵌入式AI落地案例,看模型压缩和硬件选型怎么选
从智能门铃到工业质检:5个嵌入式AI实战案例与选型策略 智能门铃的摄像头突然捕捉到一张陌生面孔,300毫秒内完成本地人脸比对并推送到主人手机——这背后是嵌入式AI在消费电子领域的典型应用。当算法工程师面对瑞芯微RK3588和地平线旭日X3两颗芯片的选型表…...
解决Gradio share=True报错:手动下载并配置frpc_linux_amd64_v0.3文件的保姆级教程
解决Gradio shareTrue报错的完整实战指南:从手动配置frpc到深度优化 当你兴奋地准备向客户展示刚完成的Gradio应用时,却在终端看到红色的报错信息——shareTrue参数失效了。这种场景对开发者来说再熟悉不过:本地调试一切正常,但需…...
