Notice
Recent Posts
Recent Comments
«   2024/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
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

Spring DataBinding (2) - Spring Form Tag 본문

SpringFramework/References

Spring DataBinding (2) - Spring Form Tag

defacto standard 2018. 5. 2. 00:01


Spring Form Data to Object


 - Controller ( GET Method )

@RequestMapping(value="/register", Method=RequestMethod.GET)
public String registerUserGet(Model model) {
// 반드시 객체를 생성 후 Model객체를 사용하여 View에 넘겨야 함, 안만들면 Exception발생
User user = new User();
model.addAttribute("user", user);
return "jsp";
}

반드시 객체를 하나 생성하여, Model을 통해 View로 넘겨야 한다.


 - Spring Form (jsp.jsp)

<sf:form action="${pageContext.request.contextPath}/register" method="post" modelAttribute="user">
<sf:input path="username" id="username" class="form-control"/>
<sf:password path="password" id="password" class="form-control"/>
<sf:input path="email" id="email" class="form-control"/>
</sf:form>

modelAttribute속성의 값은 model.addAttribute()의 키값과 같은 값("user")으로 객체를 뜻한다.


그리고, input태그의 path라는 속성의 값은 넘겨받은 객체(User객체)의 클래스에 존재하는 필드명과 같아야 한다.



 - Java Class

public class User {
private int userId;
private String username;
private String password;
private String email;
}

따라서 User객체는 위와 같다.



 - Controller ( POST Method )

@RequestMapping(value="/register", Method=RequestMethod.POST)
public String registerUserPost(User user, Model model) {
userService.addUser(user);
model.addAttribute("success", "success");
return "jsp";
}

Controller에서는 그냥 받으면 된다. 잘 보면 Controller의 URL매핑이 동일하고 Method 타입이 다르다.


회원가입을 예로 들자면,

GET메서드는 사용자가 '회원가입'버튼을 눌렀을 때 실행되는 메서드이며

POST메서드는 사용자가 폼을 입력하고 '전송'버튼을 눌렀을 때 실행되는 메서드이다.


Comments