Spring
Spring Framework_커맨드 객체(Command Object)
onivv
2024. 3. 7. 17:28
Controller는 메서드 인자로 request, response 객체를 가지므로 import servlet req,res... 를 해야했음
완전한 POJO가 아녔음
HttpServletRequest request
클라이언트가 전달해주는 파라미터 데이터를 주입 받기 위해 사용되는 객체로, DTO로 받아올 수 있음
이러한 객체를 커맨드 객체(Command Object)라고함
[ 커맨드 객체(Command Object) ] ⭐⭐
- 현업에서는 컨트롤러 인자로 많이 알려졌지만,
정확히는 스프링 컨테이너가 관리해주는 컨트롤러의 인자 - HttpServletRequest를 통해 들어온 요청 파라미터들을
setter 메서드를 이용해 객체에 정의되어있는 속성에 바인딩되는 객체를 의미함 - 커맨드 객체는 주로 DTO(Data Transfer Object)를 사용하며,
request로 받아오는 요청 파라미터의 key값과 동일한 이름의 속성들과 setter 메서드를 가지고 있어야함 - 자동으로 바인딩 시켜주는 방법은,
Spring이 내부적으로 request와 Command 객체의 setter 메서드를 이용해 알아서 바인딩 시켜줌 - 사용자가 입력한 데이터를 받고,
해당 데이터를 처리하는 비즈니스 로직에 전달하는 역할을 수행함
처리된 결과나 다음 화면에 필요한 데이터를 다시 사용자에게 전달할 때도 사용됨
▶ DTO, DAO, Model, JSP 내장객체, ...
1. DTO
< Spring 컨테이너가 Command 객체에게 해주는 행위가 3가지 >
- 1) DTO를 set하려면 new되어있어야함, Command객체를 new
→ JSP에서 <jsp:usebean> - 2) request에 저장된 정보중 DTO 멤버변수와 같은 파라미터명이 있다면, 해당 값을 자동 추출
- 3) 추출한 값을 DTO 멤버변수에 Setter를 활용해서 set 가능
→ JSP에서 <jsp:setproperty>
2. DAO
DAO를 직접사용하기에는 DAO의 변경이 자주 일어난다...
인자를 모두 변경해야함... → 결합도가 높은 코드 ㅠㅠ
↓
1) 결합도를 낮추기 위해 의존관계를 활용
2) 의존관계를 만들었으니 @Autowired로 의존주입(DI)하기
3) @Service로 new해서 메모리에 올려야함
3. Model
- output이 String이라서 View정보를 보내고있지는 않음
따라서 ModelAndView보다 가벼운 Model 사용 - import org.springframework.ui.Model
- 메서드명이 addObject → addAttrivute로 바뀜
4. JSP 내장객체
- request, response를 통해 불러올 수 있는 JSP 내장객체 : 대표적으로 session