V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyConstantine
V2EX  ›  Java

请教 DispatherServlet 关于资源映射 URI 路径消失的问题。。

  •  
  •   yyConstantine ·
    yyconstantine · 2019-08-09 11:36:38 +08:00 · 2720 次点击
    这是一个创建于 1941 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 目前在给公司的一个老后台项目做 swagger 集成,由于是 spring3.x 的版本所以选择了 swagger-springmvc1.0.2 的版本。(其实自己也没正儿八经的用过 swagger。。) 完成了相关配置后,进入了 Swagger-UI.html 的界面,但是没有显示 api,看了下控制台是请求 api 的资源全部 404 了,于是拎出来了其中一条在 MVC 里进行 debug,发现经过 DispatherServlet 拦截后传入的 uri 由 /api-docs/MyProjectApi/xxx-controller 变成了 /xxx-controller,所以 404 了,但直接访问 /api-docs 是不会报错的。。这是为什么。。

    PS:为什么在发现经过 DispatherServlet 加这两个资源的拦截?因为是老项目,之前的接口都是以.do 的后缀结尾的,不拦截的话会收不到请求。。。

    代码如下:

    <servlet-mapping>
    	<servlet-name>mvc</servlet-name>
    	<url-pattern>/api-docs</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    	<servlet-name>mvc</servlet-name>
    	<url-pattern>/api-docs/MyProjectApi/*</url-pattern>
    </servlet-mapping>
    

    debug 图: 请求路径: http://localhost:8080/projectName/api-docs TIM 图片 20190809113131.png 请求路径: http://localhost:8080/projectName/api-docs/MyProjectApi/vc-card-terminal-controller TIM 图片 20190809113233.png

    1 条回复    2019-08-09 17:43:51 +08:00
    Luckydan
        1
    Luckydan  
       2019-08-09 17:43:51 +08:00
    需要确认一下上下文路径是不是本身就包含 /api-docs/MyProjectApi/,才导致 DispatherServlet 拦截的路径为 /xxx-controller
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2578 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:08 · PVG 14:08 · LAX 22:08 · JFK 01:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.