У меня есть установка Interceptor
в моем веб-приложении. Он работает нормально, и я вижу, что он вызывается для всех запросов, кроме одного метода, который принимает только запросы POST
. Кажется, что Spring имеет отображение для всех методов контроллера и какой метод запроса (например, GET
или POST
) сопоставляется с каждым методом контроллера. Перед вызовом Interceptor
он видит, какой метод запроса сопоставляется с каким методом контроллера, и если он не находит его, он выдает запрос «405 Request method» GET «not supported». Поэтому я хочу знать, как мне это решить?405 Метод запроса «GET» не поддерживается до того, как запрос клиента попадает в Interceptor весной MVC
Чтобы быть ясным, скажем, у меня есть два метода в контроллере.
@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";
}
и это мой Interceptor
:
public class URLInterceptors extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("REQUESTED SERVLET PATH IS: " + request.getServletPath());
return true;
}
}
И нет никаких проблем в конфигурации либо:
public class RootContextConfiguration extends WebMvcConfigurerAdapter
{
@Bean
public URLInterceptors urlInterceptors(){
return new URLInterceptors();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.urlInterceptors());
}
....
}
Затем, когда запрос сделан для "/test"
, мой Interceptor
является вызывается совершенно нормально. Но всякий раз, когда делается запрос на "/login"
, мой Interceptor
никогда не вызывается. Вместо этого я вижу ошибку 405 Request method 'GET' not supported
.
Измените 'RequestMethod.POST' на' GET 'для'/login'? –
@ArsenDavtyan lol no. Существует лучший способ справиться с этим. Что делать, если моя страница входа в систему получает форму? Тогда, конечно, мне понадобится ПОСТ. –
Вопрос в том, что вы получаете '405 Request method 'GET' не поддерживается' для '/ login', это означает, что вы используете' GET' с клиентской стороны, а не 'POST' –