일반적으로 스프링 프레임워크 사용시 웹페이지에서 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