[꼼꼼한 개발자] 꼼코더
20. 코드로 배우는 스프링 웹 프로젝트 -[스프링 MVC의 Controller] - Controller의 파라미터 수집(1), 파라미터의 수집과 변환 본문
20. 코드로 배우는 스프링 웹 프로젝트 -[스프링 MVC의 Controller] - Controller의 파라미터 수집(1), 파라미터의 수집과 변환
꼼코더 2023. 1. 5. 01:15👨🏻💻 Controller의 파라미터 수집(SampleDTO 클래스 작성)
Controller를 작성할 때 가장 편리한 기능은 파라미터가 자동으로 수집되는 기능이다.
따라서 매번 request.getParameter()를 이용하는 불편함을 없앨 수 있다.
org.zerock.domain 패키지 생성 → SampleDTO 클래스 작성
SampleDTO 클래스는 Lombok의 @Data 어노테이션을 이용해서 처리하는 걸 볼 수 있다..
@Data는 getter/setter, equals(), toString() 등의 메서드를 자동으로 생성해주기 때문에 편리하다.
SampleController의 메서드가 SampleDTO를 파라미터로 사용하게 되면
자동으로 setter 메서드가 동작하면서 파라미터를 수집하게 된다.(확인이 필요하면 set메서드 작성 후 테스트)
SampleController의 경로가 ‘/sample/*’이므로
ex01() 메서드를 호출하는 경로는 ‘/sample/ex01’이 된다.
메서드에는 @GetMapping이 사용되었으므로
필요한 파라미터를 URL 뒤에 ‘?name=AAA&age=10’과 같은 형태로 추가해서 호출할 수 있다.
💁🏻♂️ 결과
실행시 기본 경로를 ‘/’로 변경 후 실행해 보면 (http://localhost:8080/sample/ex01?name=AAA&age=10)
SampleDTO 객체 안에 name, age 속성이 정상적으로 수집된 것을 볼 수 있다.
‘이때 주목할 점은 자동으로 타입을 변환해서 처리한다’는 점이다.
👨🏻💻 파라미터의 수집과 변환
Controller가 파라미터를 수집하는 방식은 파라미터 타입에 따라 자동으로 변환하는 방식이다.
예를 들어, SampleDTO에는 int 타입으로 선언된 age가 자동으로 숫자로 변환된다.
기본 자료형이나 문자열 등을 이용한다면 파라미터의 타입만 맞게 선언해주면 방식을 사용할 수 있다.
ex02() 메서드는 파라미터에 @RequestParam 어노테이션을 사용해서 작성됐다.
@RequestParam 은 파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 다른 경우에 유용하게 사용.
예제의 경우는 변수명 = 파라 미터의 이름이 동일하여 사용할 필요는 없었다.
💁🏻♂️ 결과
’http://localhost:8080/sample/ex02?name=AAA&age=10’을 호출 시 아래와 같은 로그가 출력된다.
🧹 최종 정리
- Controller작성 시 파라미터가 자동으로 수집되어 매우 편리하다 따라서 매번 request.getParameter()를 이용하지 않아도 된다.
- @RequestParam 은 파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 다른 경우에 유용하게 사용
위 내용은 코드로 배우는 스프링 웹 프로젝트 교재를 참고하여 작성되었습니다.