三门峡住房和建设局网站,线上线下购物商城系统,南宁做网站哪家好,店面设计视频今天遇到一个测试feign调用的功能#xff0c;如图所示
先说结论 Controller换成RestController 将日志设置为debug模式 被DispatcherServlet FORWARD了 找到路径 对属性设置断点#xff0c;看下是哪注进来的 我们再去找encodedPath 此处是undertow的源码#xff0c;但是und…今天遇到一个测试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可以返回实体对象