Ответ 1
Измените
@RequestMapping(value = "/test", method = RequestMethod.POST)
Для
@RequestMapping(value = "/test", method = RequestMethod.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" не поддерживается).
Измените
@RequestMapping(value = "/test", method = RequestMethod.POST)
Для
@RequestMapping(value = "/test", method = RequestMethod.GET)
method = POST
будет работать, если вы отправите форму в URL-адрес/тест.
если вы набираете url в адресной строке браузера и нажимаете enter, это всегда запрос GET
, поэтому вам нужно было указать запрос POST.
Google для HTTP GET
и HTTP POST
(есть несколько других, таких как PUT DELETE). Все они имеют свой смысл.
Я решил эту ошибку, включив в мой контроллер запрос на получение и отправку: method = {RequestMethod.POST, RequestMethod.GET}
У меня тоже была такая же проблема. Я изменил это на следующее, и это сработало.
Джава:
@RequestMapping(value = "/test", method = RequestMethod.GET)
HTML код:
<form action="<%=request.getContextPath() %>/test" method="GET">
<input type="submit" value="submit">
</form>
По умолчанию, если вы не укажете метод http в форме, он использует GET. Чтобы использовать метод POST, вам необходимо указать это.
Надеюсь это поможет.
Видимо, некоторые запросы POST выглядят как "GET" к серверу (например, Heroku...)
Поэтому я использую эту стратегию, и она работает для меня:
@RequestMapping(value = "/salvar", method = { RequestMethod.GET, RequestMethod.POST })