Swagger 报错 no mapping found for http request with uri [/***/swagger-ui.html] in dispatcherservlet with name '***'

swagger报错:

no mapping found for http request with uri [/***/swagger-ui.html] in dispatcherservlet with name '***'。

场景复现:

整合Swagger时候,按照网上的整合教程。整合完之后,进行测试,无法打开swagger-ui.html的界面。

后台爆出d for http request with uri [/***/swagger-ui.html] in dispatcherservlet with name '***'。这个是因为没有找到swagger-ui.html的资源,无法映射到具体的问题。

解决方式:

在配置文件中增加<mvc:default-servlet-handler />标签成功解决了问题。

<mvc:default-servlet-handler />标签的作用:

因为在RESTful的风格中我们一般映射请求的设置为'/',这个时候Spring MVC 将接收到的所有请求都看作是一个普通的请求,

包括对于静态资源的请求。这样以来,所有对于静态资源的请求都会被看作是一个普通的后台控制器请求,导致请求找不到而报 404 异常错误。

<mvc:default-servlet-handler />的出现就是为了解决这个问题,在 WEB 容器启动的时候会在上下文中定义一个DefaultServletHttpRequestHandler,

这个DefaultServletHttpRequestHandler 会对DispatcherServlet 的请求作出处理,当已经请求果该请求已经作了映射,那么会接着交给后台对应的处理程序,

如果没有作映射,就交给 WEB 应用服务器默认的 Servlet 处理,从而找到对应的静态资源,只有再找不到资源时才会报错。

参考资料:

https://blog.csdn.net/qq_27093465/article/details/78972010