Как обработать запрос клиента методом GET, который изначально размещен в контроллере при весенней загрузке?

#spring-boot #spring-mvc

Вопрос:

 @RequestMapping(value = "/abc", method = RequestMethod.POST)  public class TestController {  .....  }  

что делать, если пользователь запросит /abc в качестве GET метода, как я могу обработать запрос?

Ответ №1:

Вы получите исключение:

 Request method 'GET' not supported  

Вы можете поддерживать несколько методов (GET,POST…), удалив метод в аннотации.

 @RequestMapping(value = "/abc")  

Ответ №2:

Да, это возможно. Post /abc может добавлять данные List и redirect:/abc перенаправлять их для получения отображения value = "/abc", method = RequestMethod.GET и передачи данных через модель для просмотра.

Запрос URL GET -адреса и POST совпадают, но сначала перенаправление на URL-адрес, а затем отправка данных для просмотра

Контроллер

 private Listlt;Stringgt; someData = new ArrayListlt;gt;();  @RequestMapping(value = "/abc", method = RequestMethod.POST) public String TestControllerPost(String something) {  someData.add(something);  return "redirect:/abc"; // going to /abc get url }  @RequestMapping(value = "/abc", method = RequestMethod.GET) public String TestControllerGet(Model model) {  model.addAttribute("someData", someData);  return "index"; }  

Вид как Thymeleaf(index.html)

 lt;!DOCTYPE htmlgt; lt;html xmlns="http://www.w3.org/1999/xhtml"  xmlns:th="http://www.thymeleaf.org"gt;  lt;bodygt; lt;form action="/abc" method="post"gt;  lt;spangt;User Name:lt;/spangt;  lt;input type="text" name="name"/gt; lt;br/gt;  lt;input type="submit" value="Submit"gt; lt;/formgt; lt;brgt; lt;h3gt;Get Datalt;/h3gt;  lt;p th:each="data: ${someData}"gt;  lt;span th:text="${data}"gt;lt;/spangt;  lt;/pgt; lt;/bodygt; lt;/htmlgt;  

Комментарии:

1. что делать, если в этом случае пользователь сначала запросит метод GET? как я могу получить someData ссылку на объект

2. Но как пользователь запрашивает GET метод… пользователь сначала переходит к POST методу, затем публикует метод, отправляет пользователя в GET метод через redirect:/abc

3. Этот оба метода вызываются вместе, когда пользователь нажимает на кнопку, но не работает при открытии окна