SpringBoot---SpringMVC关于拦截器的一些问题总结
环境:
IDEA :2020.1
Maven:3.5.6
SpringBoot: 2.3.2
1、直接在地址栏输入 http://localhost:8080/user/login
直接在地址栏输入 http://localhost:8080/user/login (地址栏直接输入的请求方法为 GET)
控制台输出:
2020-08-12 21:59:50.132 WARN 14956 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver :
Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
会提示不支持 GET请求, 因为我们设置了,/user/login 方法提交方法为 POST。
这时候会被配置的自定义拦截器拦截。不会由控制器进行处理,可以通过 debug ,在Controller 里的方法打上断点测试。
注意:虽然无法进行登录操作,但不可以在拦截器设置中去掉 "/user/login" 不拦截的设置,去掉会导致无法进行登录,url 被拦截显然是无法访问进行登录操作的。
如果将提交方法改为 GET,输入 http://localhost:8080/user/login?username=3333&password=1234
那么将会直接通过 /user/login 请求处理方法,处理后进行登录。
2、SpringBoot 2.3.2 并未发现会拦截会静态资源
如果拦截了,或者想要自定义静态资源映射目录,需要在配置类的组件中,加入对资源映射目录处理方法 addResourceHandlers ,以对外暴露资源被访问。
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
我的SpringBoot 版本为2.3.2 ,实现addResourceHandlers方法,也已通过 http://localhost:8080/asserts/img/bootstrap-solid.svg 访问到静态资源。