본문 바로가기
Spring-Java/Spring

Day55_HTTP 요청/응답 사이클

by 현대타운301 2023. 12. 14.

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

spring consloe창

 

 

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)