티스토리 뷰
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
- <jsp:forward page="contacts.html"></jsp:forward>
위 코드는 contacts.html 페이지로 리다이렉팅 시켜주는 역할을 합니다.
뷰 - contact.jsp 파일
유저에게 연락처 폼을 보여주는 페이지를 만들어 보도록 하겠습니다.
File : WebContent/WEB-INF/jsp/contact.jsp
- <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
- <html>
- <head>
- <title>Spring 3 MVC Series - Contact Manager</title>
- </head>
- <body>
- <h2>Contact Manager</h2>
- <form:form method="post" action="addContact.html">
- <table>
- <tr>
- <td><form:label path="firstname">First Name</form:label></td>
- <td><form:input path="firstname" /></td>
- </tr>
- <tr>
- <td><form:label path="lastname">Last Name</form:label></td>
- <td><form:input path="lastname" /></td>
- </tr>
- <tr>
- <td><form:label path="lastname">Email</form:label></td>
- <td><form:input path="email" /></td>
- </tr>
- <tr>
- <td><form:label path="lastname">Telephone</form:label></td>
- <td><form:input path="telephone" /></td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="submit" value="Add Contact"/>
- </td>
- </tr>
- </table>
- </form:form>
- </body>
- </html>
위 파일에서 폼을 보여 줍니다. 폼이 submit 되면 addContact.html 페이지로 요청된다는 사실을 기억하시기 바랍니다.
스프링3에 폼(Form)과 컨트롤러(Controller) 추가하기
이제 스프링3에서 폼 데이터를 출력하고, 값들을 가져오는 로직을 추가해보겠습니다.
먼저 2개의 java 파일을 만들어야 합니다. 첫번째는 화면으로부터 데이터를 가져오고/보여주는 역할을 하는 Contact.java 파일이고,
두번째는 스프링 컨트롤러 클래스인 ContactController.java 파일입니다.
File : net.viralpatel.spring3.form.Contact.java
- package net.viralpatel.spring3.form;
- public class Contact {
- private String firstname;
- private String lastname;
- private String email;
- private String telephone;
- //.. getter and setter for all above fields.
- }
위 파일은 화면으로부터 연락처 정보를 담고있는 파일입니다. getter 와 setter 메소드를 보여주지 않은 것을 확인하세요.
getter/setter 메소드 들은 Alt + Shift + S, R 단축키를 눌러서 만들 수 있습니다.
File : net.viralpatel.spring3.controller.ContactController.java
- package net.viralpatel.spring3.controller;
- import net.viralpatel.spring3.form.Contact;
- import org.springframework.stereotype.Controller;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.SessionAttributes;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- @SessionAttributespublic
- class ContactController {
- @RequestMapping(value = "/addContact", method = RequestMethod.POST)
- public String addContact(@ModelAttribute("contact")
- Contact contact, BindingResult result) {
- System.out.println("First Name:" + contact.getFirstname() +
- "Last Name:" + contact.getLastname());
- return "redirect:contacts.html";
- }
- @RequestMapping("/contacts")
- public ModelAndView showContacts() {
- return new ModelAndView("contact", "command", new Contact());
- }
- }
위 컨트롤러 클래스에서, /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
'Framework > Spring' 카테고리의 다른 글
[Spring & ibatis] 수업 3일 (0) | 2013.04.24 |
---|---|
[Spring & ibatis] 수업 2일 (0) | 2013.04.23 |
[Spring & ibatis] 수업 1일 (0) | 2013.04.22 |
[Spring]Spring3.0 MVC로 Hello world 어플리케이션 만들기 (0) | 2012.10.08 |
[Spring]Spring3 MVC Framework 소개 (0) | 2012.10.08 |