yyConstantine
V2EX  ›  Java

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

  •  
  •   yyConstantine ·
    yyconstantine · Aug 9, 2019 · 3489 views
    This topic created in 2492 days ago, the information mentioned may be changed or developed.

    背景: 目前在给公司的一个老后台项目做 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 replies    2019-08-09 17:43:51 +08:00
    Luckydan
        1
    Luckydan  
       Aug 9, 2019
    需要确认一下上下文路径是不是本身就包含 /api-docs/MyProjectApi/,才导致 DispatherServlet 拦截的路径为 /xxx-controller
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2427 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    ♥ Do have faith in what you're doing.