SpringBoot---SpringMVC关于拦截器的一些问题总结

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 访问到静态资源。

posted @ 2020-08-12 23:18  L1ng14  阅读(322)  评论(0编辑  收藏  举报