Почему метод запроса SpringMVC "GET" не поддерживается?

Я пытаюсь @RequestMapping(value = "/test", method = RequestMethod.POST), но это ошибка

Код

 @Controller
 public class HelloWordController {
 private Logger logger = LoggerFactory.getLogger(HelloWordController.class);

 @RequestMapping(value = "/test", method = RequestMethod.POST)
 public String welcome() {
  logger.info("Spring params is welcome");
  return "/WEB-INF/jsp/welcome";
 }

}

web.xml

<servlet>
<description>This is Spring MVC DispatcherServlet</description>
<servlet-name>SpringMVC DispatchServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
  <description>SpringContext</description>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

  <servlet-mapping>
<servlet-name>SpringMVC DispatchServlet</servlet-name>
<url-pattern>/</url-pattern>

и springmvc.xml

 

index.jsp

<form action="<%=request.getContextPath() %>/test" method="post">
<input type="submit" value="submit"> 
</form>

Я ввожу submit botton brower is error

Состояние HTTP 405 - Метод запроса 'GET' не поддерживается Тип отчета о состоянии

сообщение Метод запроса "GET" не поддерживается

description Указанный метод HTTP не разрешено для запрашиваемого ресурс (метод запроса "GET" не поддерживается).

Ответы

Ответ 1

Измените

@RequestMapping(value = "/test", method = RequestMethod.POST)

Для

@RequestMapping(value = "/test", method = RequestMethod.GET)

Ответ 2

method = POST будет работать, если вы отправите форму в URL-адрес/тест.

если вы набираете url в адресной строке браузера и нажимаете enter, это всегда запрос GET, поэтому вам нужно было указать запрос POST.

Google для HTTP GET и HTTP POST (есть несколько других, таких как PUT DELETE). Все они имеют свой смысл.

Ответ 3

Я решил эту ошибку, включив в мой контроллер запрос на получение и отправку: method = {RequestMethod.POST, RequestMethod.GET}

Ответ 4

У меня тоже была такая же проблема. Я изменил это на следующее, и это сработало.

Джава:

@RequestMapping(value = "/test", method = RequestMethod.GET)

HTML код:

  <form action="<%=request.getContextPath() %>/test" method="GET">
    <input type="submit" value="submit"> 
    </form>

По умолчанию, если вы не укажете метод http в форме, он использует GET. Чтобы использовать метод POST, вам необходимо указать это.

Надеюсь это поможет.

Ответ 5

Видимо, некоторые запросы POST выглядят как "GET" к серверу (например, Heroku...)

Поэтому я использую эту стратегию, и она работает для меня:

@RequestMapping(value = "/salvar", method = { RequestMethod.GET, RequestMethod.POST })