默认url的话其实springmvc会有很多MappingHandler进行适配(HandlerAdapter),

像我们通常的RequestHandlerMappingHandler(通过Controller和 RequestMapping注解定义的路径),

这时候如果我们没有一个requestMapping的url是访问的url,mvc就会匹配到一个ResourceHttpRequestHandler(查找静态文件的处理器),

所以mvc这时候不会报错,但是又其实又没有对应的静态文件。

经过所有filter之后,会来到tomcat的StandardWrapperValue来处理后面的逻辑(实际上就是dispatchServlet处理,之后交由tomcat来处理),

tomcat也没有找到,这时候tomcat就会设置一些错误参数javax.servlet.error.status_code等,就会用到tomcat的errorPage,属性,这里springmvc会自己加上/error路径(对应着springmvc的BasicController),

然后tomcat会重定向到/error,就会到BasicController处理

对于controller层的异常可以使用@ControllerAdvice来实现,但是对于404这种资源没找到的异常则处理不了,可以自定义继承实现ErrorController来实现

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=true


我不是码农
3 声望1 粉丝

java开发码农