当前位置: 首页 > news >正文

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可以返回实体对象

http://www.lryc.cn/news/230618.html

相关文章:

  • 如何解决golang开发中遇到的报错:checksum mismatch downloaded
  • 4.以docker容器生成镜像推送到阿里云镜像仓库
  • CSS Form表单布局
  • c++ shared_mutex 读写锁使用详解
  • 淘宝商品详情接口,淘宝详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,淘宝API接口演示案例
  • python爬取网站数据,作为后端数据
  • 【机器学习】K近邻算法:原理、实例应用(红酒分类预测)
  • 基于安卓android微信小程序的快递取件及上门服务系统
  • leetCode 92.反转链表 II + 图解
  • 【MongoDB】索引 – 通配符索引
  • python安装pip install报错Could not fetch URL https://pypi.org/simple/pip/...更换镜像源
  • C++ 算数运算符 学习资料
  • 问题 H: 棋盘游戏(二分图变式)
  • SQL 主从数据库实时备份
  • C/C++:在#define中使用参数
  • Hive 查询优化
  • 【Java 进阶篇】JQuery 案例:优雅的隔行换色
  • Redis 常用的类型和 API
  • 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?
  • 力扣每日一道系列 --- LeetCode 138. 随机链表的复制
  • 无人零售:创新优势与广阔前景
  • 【华为OD题库-022】阿里巴巴找黄金宝箱(IV)-java
  • Linux 图形界面配置RAID
  • (脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别)、( 什么是qps,tps,并发量,pv,uv)、(什么是接口幂等性问题,如何解决?)
  • 安全通信网络(设备和技术注解)
  • 深度学习_12_softmax_图片识别优化版代码
  • element-ui设置下拉选择切换必填和非必填
  • Linux的命令——关于操作用户及用户组的命令
  • pycharm 设置多级跳转SSH
  • LeetCode 189.轮转数组(三种方法解决)