Spring MVC - Handling HTTP PUT Request [Updated: Feb 23, 2018, Created: Feb 13, 2018] |
|
||
This tutorial shows how to handle HTTP PUT request in Spring MVC According to Spring reference document: The spring-web module provides HttpPutFormContentFilter that intercepts HTTP PUT and PATCH requests with content type application/x-www-form-urlencoded, reads the form data from the body of the request, and wraps the ServletRequest in order to make the form data available through the ServletRequest.getParameter*() family of methods. In the following example, we will submit the PUT request from JQuery and instead of using ExampleThe controller@Controller @RequestMapping("/articles") public class ArticleController { @Autowired private ArticleService articleService; @GetMapping public String getArticleForm() { return "article-form"; } @PutMapping("/{id}") @ResponseBody public String createNewArticle(@RequestBody MultiValueMap<String, String> formParams) { System.out.println(formParams); long id = Long.parseLong(formParams.getFirst("id")); String content = formParams.getFirst("content"); Article article = new Article(id, content); articleService.saveArticle(article); return "Article created."; } @GetMapping("/{id}") public String getArticle(@PathVariable("id") long id, Model model) { Article article = articleService.getArticleById(id); model.addAttribute("article", article); return "article-page"; } } public class Article { private long id; private String content; public Article(long id, String content) { this.id = id; this.content = content; } ............. } src/main/webapp/WEB-INF/views/article-form.jsp<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> </script> </head> <body> <h3>Article Form</h3> <form id="article-form"> <pre> id: <input type="text" name="id"> content: <input type="text" name="content"> <input type="submit" value="Submit"> </pre> </form> <br/> <div id="result"></div> <script> $("#article-form").submit(function(event){ event.preventDefault(); var form = $(this); var id = form.find('input[name="id"]').val(); var url = 'http://localhost:8080/articles/'+id; var content = form.find('input[name="content"]').val(); $.ajax({ type : 'PUT', url : url, contentType: 'application/x-www-form-urlencoded', data : "id="+id+"&content="+content, success : function(data, status, xhr){ $("#result").html(data+ " link: <a href='"+url+"'>"+url+"</a>"); }, error: function(xhr, status, error){ alert(error); } }); }); </script> </body> </html> src/main/webapp/WEB-INF/views/article-page.jsp<html> <body> <h3>Article</h3> ${article} </form> </body> </html> Java Config@EnableWebMvc @Configuration @ComponentScan public class MyWebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/WEB-INF/views/", ".jsp"); } } OutputTo try examples, run embedded tomcat (configured in pom.xml of example project below): mvn tomcat7:run-war Accessing http://localhost:8080/articles and filling up the form: ![]() On submitting the form: ![]() Clicking on the hyper link of the article: ![]() See also Servlet - doPut() Example. Example ProjectDependencies and Technologies Used:
|
|
||
|
|||
|