[Spring] Form input값의 DTO 자동 주입
Spring Framework
2019. 8. 8. 23:02
일반적으로 스프링 프레임워크 사용시 웹페이지에서 form을 POST방식으로 전송할때
form elements의 name 속성과 데이터 전송 객체(DTO: Data Transfer Object 또는 VO: Value Object)의
변수명을 일치시켜주면(모든 변수가 같을 필요는 없다) 자동으로 해당 객체로 변환되어 Controller로
전송되게 됩니다.
// DTO
public class CuteDTO {
private String first;
private String second;
private Integer third;
// Getter and Setter
}
예를 들어, 위와 같은 DTO가 있고
// HTML...
<form name="cuteForm" action="/cutePage" method="post">
<input type="text" name="first" value="테스트 입력1">
<input type="text" name="second" value="테스트 입력2">
<input type="password" name="third" value="1234567">
<input type="submit" value="전송!">
</form>
위와 같은 웹페이지에서 cutePage로 매핑된 Controller로 폼을 전송하면,
// ...
import CuteDTO;
@Controller
public class CuteController {
@PostMapping("/cutePage")
public String cutePage(CuteDTO cuteDTO) {
String a = cuteDTO.getFirst; // a = 테스트 입력1
String b = cuteDTO.getSecond; // b = 테스트 입력2
Integer c = cuteDTO.getThird; // c = 1234567
return "viewPage";
}
}
Controller의 인자에 DTO가 있다면 해당 DTO가 자동으로 생성되어 폼에서 넘어온 값이 주입됩니다.
이 때 DTO 변수에 해당하는 값이 없을 경우 변수 기본값이 자동으로 할당됩니다.
주의해야할 점은 파일전송을 위해 form에서 encType="multipart/form-data" 로 전송하게 되면
DTO가 자동으로 생성/주입되지 않는다는 것입니다.
'Spring Framework' 카테고리의 다른 글
[Spring] UTF-8 인코딩 필터 적용 (0) | 2019.07.13 |
---|