Command 객체
◎ 사용자의 입력을 나타내는 객체이다.
◎ 사용자가 웹 페이지에서 양식을 작성하고 제출할 때, 이 양식에 입력된 데이터를 수집하고 처리하기 위해 사용된다.
@Controller에서의 활용
◎ 인터페이스가 아니므로 메서드 시그니쳐 강제성이 사라진다.
◎ 이전에는 req, res를 인자로 가지므로 완전한 POJO는 아니었다.
◎ 바로 DTO로 받아올 수 있다.
⇨ Spring 컨테이너
➔ DTO(Command 객체)를 new
➔ req에 저장된 정보중에 DTO 멤버변수와 같은 파라미터명이 있다면 해당 값 추출 가능하다.
➔ 추출한 값을 DTO 멤버변수에 set 가능 : setter 활용
⇨ DAO,MAV ➠ Model,JSP 내장객체(Session)도 Command 객체가 될 수 있다.
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.spring.biz.member.MemberDAO;
import com.spring.biz.member.MemberDTO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@Controller("main") // "implements Controller"를 포함하는 @
public class MainController {
@RequestMapping(value="/main.do", method=RequestMethod.GET)
public String main(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav=new ModelAndView();
MemberDAO mDAO=new MemberDAO();
MemberDTO mDTO=new MemberDTO();
ArrayList<MemberDTO> mdatas=mDAO.selectAll(mDTO);
mav.addObject("mdatas", mdatas); // == request.setAttribute("mdatas", mdatas);
return "main";
}
}
◎ 결합도를 낮추기위해 의존관계를 활용 ➠ 의존주입(DI)
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.spring.biz.board.BoardDTO;
import com.spring.biz.board.BoardService;
@Controller("main")
public class MainController {
private BoardService boardService;
@RequestMapping(value="/main.do", method=RequestMethod.GET)
public String main(BoardDTO bDTO, Model model) {
model.addAttribute("datas", boardService.selectAll(bDTO));
return "main";
}
}
'프레임워크 > Spring' 카테고리의 다른 글
[프레임워크] <Spring>〈Gradle〉@PathVairalble (0) | 2024.03.11 |
---|---|
[프레임워크] <Spring>〈Gradle〉프로젝트 특징 (0) | 2024.03.07 |
[프레임워크] <Spirng>〈Maven〉Spring에서의 MVC2 구조 (0) | 2024.03.04 |
[프레임워크] <Spring>〈Maven〉Transaction (0) | 2024.03.04 |
[프레임워크] <Spring>〈Maven〉JDBCTempalete을 활용한 DAO (0) | 2024.03.04 |