码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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;
    	}		
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    path是自身的url

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

    这个类哪里来的

    在这里插入图片描述

    在这里插入图片描述

    path来源

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

    Spring MVC的ModelAndView获得的是view。

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

    在这里插入图片描述

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

    @ReponseBody可以返回实体对象

  • 相关阅读:
    关于ABAP选择屏幕部分,定义框架与不定义框架两种写法
    面试算法43:在完全二叉树中添加节点
    使用Airflow实现简单的工作流调度-大数据培训
    2022祥云杯crypto部分
    adb如何做Android ui自动化(这一篇就够了)
    21天学习挑战赛-线性表(上)
    【亲测可用】SpringBoot使用Redis的Lettuce连接池报RedisCommandTimeoutException
    Windows OpenGL ES 图像饱和度调节
    疫情之下互联网行业就业情况如何?
    SpringMVC入门宝典(六)SpringMVC文件上传(上)
  • 原文地址:https://blog.csdn.net/Ellen_Tangxiang/article/details/134417941
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号