Spring MVC 视图解析器

在Spring MVC中,配置视图解析器可以帮助将Controller返回的字符串转换为实际的页面地址。以下是配置视图解析器的步骤:

  1. 选择视图解析器:根据使用的模板技术,选择合适的视图解析器。常见的视图解析器有InternalResourceViewResolverThymeleafViewResolver等。
  2. 配置前缀和后缀:在视图解析器的配置中,通常需要设置前缀(prefix)和后缀(suffix)。前缀指的是存放页面文件的目录,后缀则是页面文件的扩展名。例如,如果设置前缀为“/WEB-INF/views/”,后缀为“.jsp”,那么当Controller返回逻辑视图名“home”时,视图解析器会将其解析为“/WEB-INF/views/home.jsp”。
  3. 配置视图解析器:可以在XML配置文件中使用<bean>标签来定义视图解析器,或者通过Java Config的方式进行配置。
  4. 理解工作原理:当DispatcherServlet接收到一个HTTP请求时,它会调用HandlerMapping来查找处理该请求的Controller。Controller处理完请求后,会返回一个逻辑视图名。然后DispatcherServlet会使用配置的视图解析器将逻辑视图名解析成实际的页面地址,并将该地址的内容返回给客户端。
#yml配置
spring:mvc:
#  视图解析器view:prefix: /imf/suffix: .html
#  静态资源访问前缀(区分动态资源和静态资源)static-path-pattern: /imf/**
#  静态资源的加载路径resources:static-locations: classpath:/templates/

将Controller返回的字符串填写到地址栏中,通常涉及到前端页面的跳转和后端Controller的返回值处理。以下是一些可能的方法:

  1. 使用重定向:在Controller中,可以通过返回"redirect:目标URL"的方式来实现页面的重定向。这样,浏览器会自动将"目标URL"加载到地址栏中。
  2. 视图解析器:如果Controller返回的是一个字符串,这个字符串可以被视作逻辑视图名。通过配置视图解析器(ViewResolver),可以将逻辑视图名解析成实际的页面地址,并显示在地址栏中。
  3. 直接返回地址:在某些情况下,Controller可以直接返回一个代表URL的字符串,前端页面可以通过JavaScript等技术将这个URL设置到地址栏中。
  4. 前端页面操作:在前端页面中,可以使用JavaScript的window.location.href或者history.pushState()等方法来改变地址栏中的URL。
  5. 表单提交:如果是通过表单提交的方式,可以在表单的action属性中填写Controller返回的字符串作为处理的URL,提交后浏览器会自动更新地址栏。
  6. Ajax请求:在使用Ajax进行页面局部刷新时,虽然可以获取到Controller返回的数据,但不会改变地址栏中的URL。如果需要改变地址栏,可以在Ajax请求成功后,使用JavaScript进行操作。

当使用Springboot配置视图解析器时,

一定不能使用@RestController注解,需要替换成@Controller

@RestController 是一个组合注解 ,@Controller和@ResponseBody的结合。当使用@RestController注解的类时,其中的方法默认返回的数据会直接以JSON或XMl格式写入HTTP响应体,而不是作为视图解析。这意味着@RestController 适用于构建Restful风格的API,主要用于前后端分离的机构中。

@Controller 这是一个传统的控制器注解,用于处理客户端发起的请求。当使用@Controller注解的类时,其中的方法通常返回视图名称(如JSP界面),由视图解析器处理。这适用于传统的MVC架构,其中控制器负责返回视图,而不是直接数据。

小结:@RestController 适合用于构建返回数据(如Json或XMl) 的Restful API,而@Controller 更适合于需要渲染视图(如Html界面)的传统MVC应用。

 

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

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

相关文章

怎么重构一个程序

文章目录 什么是重构为什么重构重构场景怎么重构代码命名复杂度与依赖传递过度设计没有时间重构 什么是重构 摘自《重构&#xff1a;改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整&#xff0c;目的是在不改变软件可观察行为的前提下&#xff0c;提高其可理解…

springboot 防抖操作

大佬的代码&#xff1a;看这里 原理&#xff1a; 通过aop切面编程&#xff0c;在调用接口前缓存接口信息&#xff0c;将信息缓存到redis中&#xff0c;在规定时间内重复调用接口&#xff0c;会被拦截请求 有个地方感觉不太合理&#xff0c;在使用中我将其修改了 //前略 publi…

无法用raven-js,如何直接使用TraceKit标准化错误字符串(一次有趣的探索)

引子&#xff1a;网上三年前&#xff08;2020&#xff09;的文章介绍了一个raven-js 简单说就是把堆栈信息格式化兼容各浏览器&#xff0c;便于查看错误来源。 **but&#xff1a;**到处找了一下raven-js&#xff0c;已经没有官方出处了&#xff0c;只在Sentry的源码仓库里发现…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表&#xff08;一&#xff09;-CSDN博客 来继续实现单链表 1.查找数据 在…

2. 如何让mybatis-plus的逻辑删除注解@TableLogic临时失效

文章目录 如何让mybatis-plus的逻辑删除注解TableLogic临时失效1. 场景复现1.1 controller代码1.2 service层代码1.3 entity代码 2. 问题分析3. 解决方案3.1 说明3.2 核心代码3.3 service方法对应修改为3.4 运行结果 如何让mybatis-plus的逻辑删除注解TableLogic临时失效 1. 场…

【QT教程】QT6 QML界面布局艺术

QT6 QML界面布局艺术 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看…

7、configMap

1、configMap是什么 类似与pod的配置中心&#xff0c;不会因为pod的创建销毁&#xff0c;相关配置发生改变 pod定义硬编码意味着需要有效区分⽣产环境与开发过程中的pod 定义。为了能在多个环境下复⽤pod的定义&#xff0c;需要将配置从pod定义描 述中解耦出来。 2、向容器中…

C# WinForm简介

Winform是什么? .Net开发平台中对Windows Form的简称&#xff0c;基于.Net Framework平台 的客户端开发技术&#xff0c;一般使用C#编程。Windows 风格的控件&#xff0c;以及事件&#xff0c;直接使用&#xff0c;开发快速。Windows Form&#xff1a;Windows窗体Windows应用程…

Mongodb入门--头歌实验MongoDB 文档的高级查询操作

数据库存储了大量的数据&#xff0c;当我们需要特定的数据时就要使用查询方法&#xff0c;根据一定的条件&#xff0c;筛选出我们想要的数据&#xff0c;前一章我们简单介绍了条件操作符&#xff08;<、<、>、>、!等&#xff09;&#xff0c;在这一章中我们将更全面…

重生奇迹MU弓箭手装备介绍

重生奇迹MU弓箭手装备搭配什么好呢&#xff1f;装备的搭配对于角色来说帮助很大&#xff0c;所以我们更加要选择合适的装备来搭配。 装备打造 ①装备强化&#xff1a;装备强化需要强化材料 灵魂宝石、祝福宝石、玛雅宝石&#xff0c;强化有几率失败&#xff0c;失败不会导致…

贪心算法|968.监控二叉树

力扣题目链接 class Solution { private:int result;int traversal(TreeNode* cur) {// 空节点&#xff0c;该节点有覆盖if (cur NULL) return 2;int left traversal(cur->left); // 左int right traversal(cur->right); // 右// 情况1// 左右节点都有覆盖if (le…

tcpdump简介

tcpdump tcpdump 简介参数options举例参考文章 简介 不通平台的 tcpdump 支持的参数是不一样的 比如 windows 下的 tcpdump 就不支持 -i 参数 有些嵌入式设备&#xff0c;只支持 -i -w 参数等 一般只用tcpdump进行过滤抓包&#xff0c;然后使用 wireshark 进行解析 表达…

MM-Grounding-DINO的训练推理(待更新)

1、简单介绍 继前面发布的 GroundingDino 和 Open-GroundingDino的推理 和 Open-GroundingDino的训练实现&#xff0c;作为 GroundingDino延续性的文本检测网络 MM-Grounding-DINO 也发布了较详细的 训练和推理实现教程&#xff0c;而且操作性很强。作为学习内容&#xff0c;也…

IO流【内存流、打印流、随机访问流】;初识网络编程

day37 IO流 继day36 各种流 对象流 day36 内存流 class ByteArrayInputStream – 内存输入流 class ByteArrayOutputStream – 内存输出流 注意&#xff1a; 内存流是程序和内存交互&#xff0c;跟文件无关内存流是程序到内存的通道&#xff0c;是关闭不掉的 应用场景&#x…

深度学习pytorch好用网站分享

深度学习在线实验室Featurizehttps://featurize.cn/而且这个网站里面还有一些学习教程 免费好用 如何使用 PyTorch 进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f 华为modelArtshttps://bbs.huaweicloud.com/forum/thread-76328-1-1.html…

阿里云飞燕平台搭建与linux程序通信(全图文教程)

阿里云飞燕平台搭建与linux程序通信&#xff08;全图文教程&#xff09; 一、MQTT理论1.1 概念1.2 理解发布和订阅1.3 MQTT传输的消息组成 二、阿里云飞燕平台搭建2.1 产品创建2.2 自定义自己的功能2.3 人机交互 三、测试3.1代码分析3.2 效果验证 一、MQTT理论 1.1 概念 MQTT…

vue3从精通到入门17:内置组件之Transition和TransitionGroup

Transition <Transition> 是一个内置组件&#xff0c;它用于在元素或组件的插入、更新和移除时应用过渡效果。Vue 3 的 <Transition> 组件提供了一个声明式的方式来处理这些过渡效果&#xff0c;使开发者能够更容易地添加动画到他们的 Vue 应用中。 基本概念 包裹…

蓝桥杯每日一题:鱼塘钓鱼(多路归并)

题目描述&#xff1a; 有 N 个鱼塘排成一排&#xff0c;每个鱼塘中有一定数量的鱼&#xff0c;例如&#xff1a;N5 时&#xff0c;如下表&#xff1a; 鱼塘编号12345第1分钟能钓到的鱼的数量&#xff08;1..1000&#xff09;101420169每钓鱼1分钟钓鱼数的减少量&#xff08;1…

指针的总结

公司面试题 定义&#xff1a; 1.一个整型数&#xff1a;int a; 2.一个指向整型数的指针&#xff1a;int *a 3.一个指向指针的 (指针)&#xff0c;它 (指向的指针) 指向一个整型数:int **a 4.一个有10个整型数的数组 : int a[10]; 5.一个有10个指针的数组&#xff0c;每个…

flutter组件_AlertDialog

官方说明&#xff1a;A Material Design alert dialog. 翻译&#xff1a;一个材料设计警告对话框。 作者释义&#xff1a;显示弹窗&#xff0c;类似于element ui中的Dialog组件。 AlertDialog的定义 const AlertDialog({super.key,this.icon,this.iconPadding,this.iconColor,t…