url找不到404的问题,url被拼接

今天遇到一个测试feign调用的功能,如图所示

先说结论 @Controller换成@RestController

在这里插入图片描述

将日志设置为debug模式

在这里插入图片描述

被DispatcherServlet FORWARD了

在这里插入图片描述

找到路径

在这里插入图片描述

对属性设置断点,看下是哪注进来的

在这里插入图片描述

我们再去找encodedPath

在这里插入图片描述
此处是undertow的源码,但是undertow只是一个服务器,因此,来源肯定不是这里,所以我们找spring的源码。

在这里插入图片描述

再来看getRequestDispatcher方法

在这里插入图片描述

url在此处做了个拼接,所以会出现404。原因是path没有带/,我们继续看这个path

String dispatcherPath = prepareForRendering(request, response);

protected String prepareForRendering(HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		String path = getUrl();
		Assert.state(path != null, "'url' not set");

		if (this.preventDispatchLoop) {
			String uri = request.getRequestURI();
		if (path.startsWith("/") ? uri.equals(path) : uri.equals(StringUtils.applyRelativePath(uri, path))) {
				throw new ServletException("Circular view path [" + path + "]: would dispatch back " +
						"to the current handler URL [" + uri + "] again. Check your ViewResolver setup! " +
						"(Hint: This may be the result of an unspecified view, due to default view name generation.)");
				}
		}
		return path;
	}		

path是自身的url

在此处debug看属性看不到哪注入的,我们换个思路

这个类哪里来的

在这里插入图片描述

在这里插入图片描述

path来源

view = resolveViewName(viewName, mv.getModelInternal(), locale, request);

Spring MVC的ModelAndView获得的是view。

分析到此处,就可以知道,我们做前后端分离的时候,返回的并不是view。导致返回是view的原因@Controller。

在这里插入图片描述

@RestController是@Controller和@ReponseBody的结合体

@ReponseBody可以返回实体对象

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

systemverilog:interface中的modport用法

使用modport可以将interface中的信号分组并指定方向,方向是从modport连接的模块看过来的。简单示例如下: interface cnt_if (input bit clk);logic rstn;logic load_en;logic [3:0] load;logic [7:0] count;modport TEST (input clk, count,output rst…

Node.js 安装配置

文章目录 安装检测Node是否可用 安装 首先我们需要从官网下载Node安装包:Node.Js中文网,下载后双击安装没有什么特殊的地方,安装路径默认是C盘,不想安装C盘的话可以选择一下其他的盘符。安装完成以后可以不用配置环境变量,Node安装已经自动给…

正点原子阿尔法Linux开发板——MfgTool烧写工具烧写系统

WINDOWS系统下 前提准备 OTG、TTL的USB接口分别连接电脑 USB_OTG 用于烧写,USB_TTL 用于串口查看烧录进度 拨码拨至USB烧录——0100 0000 烧写 SECURE 软件连接串口CH340的COM(软件安装激活) 我的开发板是I.MX6ULL(EMMC)——双击"Li…

面向对象和原型/原型链学习

##构造函数执行的机制 函数的其中一个作用,就是构造函数. ###new关键字 1.创建一个对象; 2.这个对象的原型,可以看到这个Function 3.该对象,实现了这个构造函数的方法. 4.根据一些特定情况,返回: (1)如果没有返回值,就返回一个对象; (2)如果返回一个基本类型,则还是返回…

指针传2

几天没有写博客了,怎么说呢?这让我总感觉缺点什么,心里空落落的,你懂吧! 好了,接下来开始我们今天的正题! 1. ⼆级指针 我们先来看看代码: 首先创建了一个整型变量a,将…

计算机基础知识53

模板之过滤器 # HTML被直接硬编码在 Python代码之中,Django的 模板系统(Template System) # 过滤器给我们提供的有六十多个,但是我们只需要掌握10个以内即可 过滤器名称就是函数名 # 语法:{{ obj|filter__name:param }} 变量名字…

Android 启动优化案例-WebView非预期初始化排查

作者:邹阿涛涛涛涛涛涛 去年年底做启动优化时,有个比较好玩的 case 给大家分享下,希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时&#…

亚里士多德的思想统治西方世界,实体论证明人不是猪

苏格拉底、柏拉图、亚里士多德,并称古希腊三贤。 公元前384年,亚里士多德出生在马其顿的奴隶主家庭,父亲是马其顿国王腓力二世的宫廷御医。 公元前367年,亚里士多德迁居到雅典,进入柏拉图学园,跟随柏拉图…

什么是自动化测试框架?

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

Python 获取北上广深历史天气数据并做数据可视化

嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 结构化非结构化数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版 requests 发送请求 pip install requests parsel 解析数据 pip install parsel …

golang学习笔记——类型转换

Go 语言类型转换 将整型转换为浮点型: var a int 10 var b float64 float64(a)将字符串变量 str 转换为整型变量 num var str string "10" var num int num, _ strconv.Atoi(str)注意,strconv.Atoi 函数返回两个值,第一个是转…

JavaWeb Day10 案例-部门管理

目录 一、查询部门 (一)需求 (二)思路 (三)查询部门 (四)、前后端联调 二、删除 (一)需求 (二)思路 (三&#xf…

zabbix之邮箱告警,钉钉告警,电话告警

安装zabbix的服务器 zabbix-server 192.168.231.219 zabbix-agent 192.168.231.217 ,已安装nginx 前提 Zabbix告警是指当监控项的值超过了预设的阈值时,Zabbix会向管理员发送告警信息,以便管理员及时处理问题。 浏览器访问 192.168.231.219…

肝了一周,整理了Python 从0到1学习路线(附思维导图和PDF下载)

前段时间,我们陆续分享了一些关于Python基础知识,以及现在比较流行的Python各领域的学习知识,后台有很多小伙伴反馈,想要系统的自学Python,希望我们可以提供一个框架,方便作为参考,学习Python。…

Using Definition View 使用定义视图

You use Definition view to create definitions within a defined hierarchical structure, in which nodes represent the definitions. A node is the visual representation of a section, step, or action that you can select, collapse,modify, and so on. 您可以使用“…

找风景视频素材,就上这5个网站。

找风景视频素材那一定要上这6个网站,免费下载,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材也很多,像风景…

网站分类seo怎么优化(如何调整有利于SEO排名)

网站分类seo怎么优化(如何调整有利于SEO排名) 这期分享一篇关于网站seo优化中关于网页分类排名优化的文章,看看原文来自 蝙蝠侠IT ,原文标题网站分类,没有SEO标题,怎么办的文章介绍。 理想与现实总是充满矛…

学c语言可以过CCT里的c++吗?

学习 C 语言可以为学习 C 奠定一些基础,但它们是不同的语言,有各自独特的特点和用途。最近很多小伙伴找我,说想要一些c语言的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言资料…

Linux控制---进程程序替换

前言:前面我们学洗了Linux进程退出的相关知识,了解了什么是进程退出,已经进程等待的相关话题,今天,我们来学习Linux中的进程程序替换,进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…

利用Vue+Echarts完成可视化任务

文章目录 任务一:用柱状图展示消费额最高的省份(一)提出任务(二)准备工作1、利用postman访问接口数据2、安装node.js3、输入更换镜像源为淘宝源4、清除npm缓存5、安装vue脚手架6、创建vue项目7、启动vue项目 任务一&am…