Java 405在Spring MVC中客户端请求命中拦截器之前,不支持请求方法“GET”
我已经在我的web应用程序中设置了拦截器。它工作得很好,我看到除了一个只接受POST请求的方法外,所有请求都会调用它。Spring似乎对所有的控制器方法都有映射,并且像GET或POST这样的请求方法映射到每个控制器方法。在调用拦截器之前,它会看到哪个请求方法映射到哪个控制器方法,如果找不到,它会抛出“405请求方法”GET“不受支持”错误。所以我想知道,我该如何应对 为了清楚起见,假设我的控制器中有两种方法Java 405在Spring MVC中客户端请求命中拦截器之前,不支持请求方法“GET”,java,spring-mvc,interceptor,http-status-code-405,Java,Spring Mvc,Interceptor,Http Status Code 405,我已经在我的web应用程序中设置了拦截器。它工作得很好,我看到除了一个只接受POST请求的方法外,所有请求都会调用它。Spring似乎对所有的控制器方法都有映射,并且像GET或POST这样的请求方法映射到每个控制器方法。在调用拦截器之前,它会看到哪个请求方法映射到哪个控制器方法,如果找不到,它会抛出“405请求方法”GET“不受支持”错误。所以我想知道,我该如何应对 为了清楚起见,假设我的控制器中有两种方法 @Controller public class myController{
@Controller
public class myController{
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test1(){
return "abc";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String test1(){
return "xyz";
}
这是我的拦截器:
配置也没有问题:
public class RootContextConfiguration extends WebMvcConfigurerAdapter
{
@Bean
public URLInterceptors urlInterceptors(){
return new URLInterceptors();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.urlInterceptors());
}
....
}
然后,无论何时对/test发出请求,我的拦截器都会被很好地调用。但无论何时向/login发出请求,都不会调用我的拦截器。相反,我看到一个405请求方法“GET”不受支持的错误。错误:
405不支持请求方法“GET”
意味着您对servlet发出的任何客户端请求都是GET请求。问题不在于servlet。我不知道您是否正在使用REST客户端或浏览器等,但您需要检查并确保发送到servlet的请求是POST更改RequestMethod.POST以获取/登录?@ArsenDavtyan lol no。有更好的方法处理此问题。如果我的登录页面收到表单怎么办?那么我肯定需要POST。问题是,如果您得到的405请求方法'GET'不支持/login,这意味着您使用的是客户端GET,而不是POST
public class RootContextConfiguration extends WebMvcConfigurerAdapter
{
@Bean
public URLInterceptors urlInterceptors(){
return new URLInterceptors();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.urlInterceptors());
}
....
}