공부/Spring 복습

input태그와 DTO(vo)를 이용한 자동주입(커맨드 객체)

ChoiDooSic 2021. 11. 18. 11:32

게시판에 대한 공부를 하던도중 자동주입이라는 기능을 알게되어 한번 사용법에 대해

정리해두려고 한다. 학원에서 스프링을 배우기전에 미리 예습하기위해 인프런에서 들었던

강의에 있던 내용인데 프로젝트를 시작할떄에는 잊어버리고 학원에서 배운대로만 진행해버렸다..ㅎㅎ;;

 

input태그와 DTO(vo)를 이용한 자동주입은 스프링에서 지원하는 커맨드 객체라고 부른다고 한다.

일단 시작하기전에 커맨드 객체를 사용하기전의 전과 후를 비교해보자! 

 

[커맨드 객체 사용전]

커맨드 객체 사용전.

커맨드 객체를 사용하기 전에는 HttpServletRequest의 getParameter()를 이용하여 값을 추출하여

boardVO객체에 setter를 이용하여 값을 넣어주는 방식을 사용하였다.

지금은 넣어줘야할게 3개뿐이지만 이게 길어진다면...

 

[커맨드 객체 사용후]

커맨드 객체 사용후.

커맨드 객체를 사용하게되면 이렇게 간단하게 정리할 수 있다.

코드도 정말 깔끔하고 간단해졌다

 

커맨드 객체를 사용하는 방법을 알아보자!

http요청 파라미터의 이름(name)을 이용한 setter메서드를 작성한 클래스(DTO, VO)를 만들고,

이 클래스의 객체(커맨드 객체)를 메서드의 파라미터 값으로 넣어주면 속성값들을 자동으로

커맨드 객체에 바딩인 할 수 있다!

 

1. <input>태그의 name과 DTO(vo)의 변수명을 일치시켜준다

2. 컨트롤러에 매개변수로 값을 주입시켜줄 DTO 클래스를 넣어준다

 

글로만 보면 이해하기 어려울수 있음으로 스크린샷과 함께보겠습니다

html의 <input>태그
DTO(vo)

첫번째 이미지의 input태그에 name과 두번째 이미지의 DTO(vo)의 변수들의 이름이 같은걸 볼 수 있는데

<input>의 name과  DTO(vo)의 변수명을 맞춰서 보내준다면 컨트롤러에서 url RequestMapping을 하여

form문이 전달되고 자동적으로 input data title, content, writer 가 자동적으로 DTO(vo)의 title, content, writer 값에

메핑되어서 dto.getTitle, dto.getContent, dto.getWriter을 가져올수 있다!

실행 결과를 통해 잘 되는지 확인해보도록 하자

 

[실행결과]

console
데이터 베이스

실행결과 데이터가 잘 주입되는걸 확인 할 수 있습니다 ㅎㅎ