2023.11.03
Day55 세 줄 요약
브라우저를 통해 HTTP request가 들어오면 Controller ↔ Service ↔ DAO(mapper) ↔ DB 순으로 프로세스 진행
mybatis에서 type : 해당 DTO 클래스 경로, alias : mapper의 parameterType 혹은 resultType에 사용할 객체 이름
@RequestParam : 파라미터 이름으로 요청 파라미터를 바인딩해주는 어노테이션
HTTP 요청 / 응답 사이클
list.jsp → view.jsp
View ↔ Controller ↔ Service ↔ DAO(mapper) ↔ DB
sourcecode
1) user가 상세보기 할 회원 아이디(mId) 클릭
- 브라우저를 통해 HTTP 요청(request)이 들어옴
2) 링크 태그의 href 속성 값 mView로 이동
- 물음표 뒤의 쿼리문을 통해 'mId'란 이름의 '회원 아이디 값(${list.MId})'이 함께 넘어감
3) Controller 클래스
- @RequestMapping 어노테이션의 value와 넘어온 href 속성 값(mView)이 일치하는 핸들러 매핑
- @RequestParam을 통해 View의 쿼리문에서 넘어온 회원 아이디 값(${list.MId})을 새로운 매개변수 mId로 받음
- mView(controller) 메소드 내부에서 Service 객체 msvc를 통해 mView(service) 메소드 호출
4) Service 클래스
- ModelAndView 타입의 메소드는 항상 ModelAndView 객체 초기화 진행
- mav = new ModelAndView();
- mView(service) 메소드 내부에서 DAO 객체 mdao를 통해 mView(dao) 메소드 호출
5) DAO 클래스
- mView(dao) 메소드 내부에서 SqlSessionTemplate 객체 sql을 통해 selectOne 메소드 호출과 동시에 리턴
- sql.selectOne("namespace.id", 인수)
- sql.selectOne("Member.mView", mId)
6) mapper.xml
- <select> 태그를 통해 DB에서 SQL 쿼리 수행
- 오직 <select> 태그만 resultType을 갖고 나머지 <update> <delete>는 수행한 쿼리의 문장 개수(int)를 자동으로 리턴
7) Service 클래스
- mView(dao)의 리턴 값을 MemberDTO member 객체에 담음
- mav 객체의 model 영역에 member 객체를 담음
- mav.addObject("view에서 사용할 이름", 넘겨줄 Object)
- mav.addObject("view", member);
- mav 객체의 view 영역에 이동할 view(.jsp) 이름 입력
- mav.setViewName("이동할 view 이름")
- mav.setViewName("mView");
- model과 view가 담긴 mav 객체를 리턴
8) Controller 클래스
- msvc.mView(mId)의 리턴 값을 mav에 담아 리턴
9) ViewResolver
- 리턴된 mav의 View(mView)와 실제 View 매핑
10) View
- 브라우저에 HTTP 응답(response)
'Spring-Java > Spring' 카테고리의 다른 글
@RequestBody, @ResponseBody (feat.@ModelAttribute) (0) | 2023.12.18 |
---|---|
@RequestParam (feat.@ResponseBody) (0) | 2023.12.15 |
Day53_Spring Legacy Project 설정 (0) | 2023.12.14 |
Day51_MVC Architecture (2) | 2023.12.06 |
Day48_STS, Tomcat Server 설치 및 환경 설정 (0) | 2023.10.27 |