2010-07-26 5 views
14

Я пытаюсь @RequestMapping(value = "/test", method = RequestMethod.POST) но ошибкаПочему метод запроса SpringMVC «GET» не поддерживается?

Код

@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> 

вход Я представляю Боттон Брауэр ошибка

HTTP Status 405 - Request метод 'GET' не поддерживается отчет типа состояния

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

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

+1

Вы видите сообщение войти метод приветствия()? – naikus

+0

no Я могу видеть журнал – EdwardLau

+0

Я все еще не понимаю, как это решить, здесь нет хорошего ответа. Никто не объяснил, почему мы не можем выполнить RequestMethod.POST. Может ли кто-нибудь следить? Я не понимаю ни одного комментария. –

ответ

10

Изменить

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

Для

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

Почему 'method = RequestMethod.POST' не работает? Метод формы POST и URL-адрес действия/test, поэтому я бы подумал, что он будет работать. –

+1

@WebUser - это миф, некоторые говорят, что tomcat отключает его по умолчанию, поэтому они должны применять фильтр в web.xml, но что, если разработчик создает API с базой загрузки SPRING, даже сегодня в 2016 году/марте он дает то же самое ошибка, но использование GET работает чистым и совершенным в адресной строке.! Ответ будет заключаться в том, что нужно создать целую панель, а затем написать Ajax-вызовы для удаления/посылки/публикации для работы.! –

15

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

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

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

+0

Спасибо Napster +1! – Shraddha

+0

это, безусловно, самое чистое объяснение того, почему мой API Spring дает «GET» не поддерживается, когда я использую RequestMethod.DELETE в моем контроллере.! –

0

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

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