티스토리 뷰

Spring3 MVC 글 시리즈의 3번째 입니다. 저번시간에는 스프링3로 Hello World 어플리케이션으 만들어보았습니다.
스프링 MVC 를 web.xml에 설정하는법, 그리고 @Controller, @RequestMapping 과 같은 어노테이션을 사용하는 방법도 알아보았습니다.
이번 글에서는 스프링3MVC에서 폼(Forms)을 다루는 법을 알아보도록 하겠습니다.
( 음 쓰다보니 이전글까지는 반말로 썼는데 갑자기 존댓말로 쓰고있네요..ㅋㅋ 양해를..ㅋ)

이전 글에서 만들었던 프레임워크를 기반으로 해서 폼 기능을 추가해 보는 방식으로 진행합니다.
이번에 만들어 볼 것은 연락처관리 어플리케이션입니다.

목표

이번 목표는 간단한 연락처 관리 어플리케이션을 만들어 보는 것입니다. 이 앱은 사용자로부터 연락처에 대한 정보를 입력받는 폼을 가지고 있습니다. 지금부터 자세한 것들을 로그로 찍어 볼 것입니다. 스프링3 MVC에서 폼 데이터가 어떻게 처리되는지 배우게 될 것입니다.



시작하기

만들고있었던 Hello World 스프링3 MVC 앱에 연락처 관리 폼 을 추가해 보도록 하겠습니다.
index.jsp 파일을 열고 아래 내용으로 수정합니다.

File : WebContent/index.jsp

  1. <jsp:forward page="contacts.html"></jsp:forward>


위 코드는 contacts.html 페이지로 리다이렉팅 시켜주는 역할을 합니다.

뷰 - contact.jsp 파일

유저에게 연락처 폼을 보여주는 페이지를 만들어 보도록 하겠습니다.

File : WebContent/WEB-INF/jsp/contact.jsp

 
  1. <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
  2. <html>
  3. <head>
  4. <title>Spring 3 MVC Series - Contact Manager</title>
  5. </head>
  6. <body>
  7. <h2>Contact Manager</h2>
  8. <form:form method="post" action="addContact.html">
  9. <table>
  10. <tr>
  11. <td><form:label path="firstname">First Name</form:label></td>
  12. <td><form:input path="firstname" /></td>
  13. </tr>
  14. <tr>
  15. <td><form:label path="lastname">Last Name</form:label></td>
  16. <td><form:input path="lastname" /></td>
  17. </tr>
  18. <tr>
  19. <td><form:label path="lastname">Email</form:label></td>
  20. <td><form:input path="email" /></td>
  21. </tr>
  22. <tr>
  23. <td><form:label path="lastname">Telephone</form:label></td>
  24. <td><form:input path="telephone" /></td>
  25. </tr>
  26. <tr>
  27. <td colspan="2">
  28. <input type="submit" value="Add Contact"/>
  29. </td>
  30. </tr>
  31. </table>
  32. </form:form>
  33. </body>
  34. </html>


위 파일에서 폼을 보여 줍니다. 폼이 submit 되면 addContact.html 페이지로 요청된다는 사실을 기억하시기 바랍니다.

스프링3에 폼(Form)과 컨트롤러(Controller) 추가하기

이제 스프링3에서 폼 데이터를 출력하고, 값들을 가져오는 로직을 추가해보겠습니다.
먼저 2개의 java 파일을 만들어야 합니다. 첫번째는 화면으로부터 데이터를 가져오고/보여주는 역할을 하는 Contact.java 파일이고,
두번째는 스프링 컨트롤러 클래스인 ContactController.java 파일입니다.


File : net.viralpatel.spring3.form.Contact.java

 
  1. package net.viralpatel.spring3.form;
  2. public class Contact {
  3. private String firstname;
  4. private String lastname;
  5. private String email;
  6. private String telephone;
  7. //.. getter and setter for all above fields.
  8. }


위 파일은 화면으로부터 연락처 정보를 담고있는 파일입니다. getter 와 setter 메소드를 보여주지 않은 것을 확인하세요.
getter/setter 메소드 들은 Alt + Shift + S, R 단축키를 눌러서 만들 수 있습니다.

File : net.viralpatel.spring3.controller.ContactController.java

 
  1. package net.viralpatel.spring3.controller;
  2. import net.viralpatel.spring3.form.Contact;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.validation.BindingResult;
  5. import org.springframework.web.bind.annotation.ModelAttribute;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestMethod;
  8. import org.springframework.web.bind.annotation.SessionAttributes;
  9. import org.springframework.web.servlet.ModelAndView;
  10. @Controller
  11. @SessionAttributespublic
  12. class ContactController {
  13. @RequestMapping(value = "/addContact", method = RequestMethod.POST)
  14. public String addContact(@ModelAttribute("contact")
  15. Contact contact, BindingResult result) {
  16. System.out.println("First Name:" + contact.getFirstname() +
  17. "Last Name:" + contact.getLastname());
  18. return "redirect:contacts.html";
  19. }
  20. @RequestMapping("/contacts")
  21. public ModelAndView showContacts() {
  22. return new ModelAndView("contact", "command", new Contact());
  23. }
  24. }


위 컨트롤러 클래스에서, /contacts /addContact 라는 RequestMapping 을 가진 두개의 메소드를 만들었다는 것을 기억하세요.
유저가 contacts.html 이라는 url을 가진 요청을 할 때, showContacts() 메소드가 호출 될 것입니다.
이 메소드는 "contact" 라는 이름을 가진 모델을 만들 것입니다.
ModelAndView 객체를 리턴할 때 같이 전달하는 빈 Contact객체의 이름이 "command" 라는 것을 확인하세요.
만약 jsp 파일에서 스프링을 사용하고 있다면, command 라는 이름을 가진 객체를 찾게 될 것입니다.

또 addContact() 메소드에 RequestMapping을 어노테이션 설정해주고 인자에 method="RequestMethod.POST" 를 넘겨주었습니다.
/addContact.html 이란 url을 가진 POST 방식의 요청을 했을 때, 이 메소드가 호출 될 것입니다.
메소드 인자로 Contact 객체를 넘길 때, @ModelAttribute 라는 어노테이션을 추가해 주었습니다.
이것이 들어온 요청(request)로부터 데이터를 받아와 Contact 객체에 바인딩을 시켜줍니다. 이 메소드에서 우리는 FirstName 과 LastName을 출력하고, contacts.html 로 리다이렉팅 시켜주었습니다.

완료

폼이 모두 완성되었습니다. 이클립스에서 Alt + Shift + X, R 키를 눌러 어플리케이션을 실행해 보시기 바랍니다.
연락처 관리 폼을 보여 줄 것입니다. 값들을 입력하고 서브밋 버튼을 클릭해 보세요. 버튼을 클릭 했을때, sysout 로그로 이름과 성을 출력할 것입니다.


이번 글에서는 스프링3 에서 폼을 어떻게 만드는지, jsp에서 어떻게 출력하는지에 대해서 알아보았습니다.
그리고 @ModelAttribute 어노테이션을 이용하여 폼의 값들을 가져오는 방법도 알아보았습니다.

이 글은 최자님의 글을 포스팅 하였습니다.

copyright by . http://chooija.com

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함