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