2017-01-13 8 views
0

У меня есть установка 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.

+0

Измените 'RequestMethod.POST' на' GET 'для'/login'? –

+0

@ArsenDavtyan lol no. Существует лучший способ справиться с этим. Что делать, если моя страница входа в систему получает форму? Тогда, конечно, мне понадобится ПОСТ. –

+0

Вопрос в том, что вы получаете '405 Request method 'GET' не поддерживается' для '/ login', это означает, что вы используете' GET' с клиентской стороны, а не 'POST' –

ответ

1

Ошибка:

405 Request method 'GET' not supported

Средство любой сторона клиента запрос вы делаете против сервлета запрос GET. Проблема не в сервлете. Я не знаю, используете ли вы REST-клиент или браузер и т. Д., Но вам нужно проверить и убедиться, что запрос, отправляемый на ваш сервлет, равен POST

 Смежные вопросы

  • Нет связанных вопросов^_^