[Spring] 커맨드객체 사용방법#1

스프링에서 HTTP 전송 데이터를 받아오는 방법은 getParameter를 사용해서 받아오거나 @RequestParam이라는
어노테이션을 사용하여 받아올 수 있습니다.

위의 방법은 데이터의 속성들이 적다면 큰 문제가 생기지 않지만 굉장히 많은 속성을 처리하기엔 현실적으로 불가능합니다. 그래서 스프링에서는 커맨드 객체를 지원해서 각체 자체의 속성값을 커맨드 객체에 바인딩하여 처리할 수 있게 해주었습니다.

사용예시

Member VO

package com.co.mvc03;

public class Member {

	private String name;
	private String id;
	private String pw;
	private String email;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	
}

 

 

기존 방식

	@RequestMapping("/join")
	public String confirmId(HttpServletRequest request, Model model) {

		Member member = new Member();
		String name = request.getParameter("name");
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String email = request.getParameter("email");

		member.setName(request.getParameter("name"));
		member.setId(request.getParameter("id")); 
		member.setPw(request.getParameter("pw")); 
		member.setEmail(request.getParameter("email"));
		model.addAttribute("member", member);
		return "member/join";
	}

기존 방식은 속성 하나하나 값을 받고, 저장하고 굉장히 번거롭게 작업을 해야 합니다. 위의 코드를 굉장히 간결하게 표현할 수 있습니다.

커맨드객체 사용

	@RequestMapping("/join")
	public String confirmId(Member member) {
		return "member/join";
	}

매개변수에 HttpServletRequest 혹은 @RequestParam을 사용하지 않고 Member 객체하나만 넘겨주면 각 속성값들을 자동으로 커맨드 객체에 바인딩을하여 처리해줍니다.


jsp에서 값 출력

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

join.jsp<br>
이름 :  ${member.name }<br>
아이디 : ${member.id }<br>
비번 : ${member.pw }<br>
메일 : ${member.email}

</body>
</html>

커맨드객체를 사용하면 그냥 ${name}, ${id}형식이 아닌 ${member.name}과 같이 객체를 앞에 붙혀야합니다.
${member.name}은 <%=member.getName()>  과 같은 기능입니다.

 

댓글

Designed by JB FACTORY