일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 메나테크
- @theSNKRZ
- 채굴
- 진맥스
- 습관
- GINMAX
- 다이어트
- 암호화폐
- 미리아노드
- nft
- 트루헬스마스터챌린지
- 스테픈
- snkrz
- 오운완
- M2E
- 스니커즈
- movetoearn
- #MoveToEarn
- 초미세먼지
- 달리기어플
- 트루헬스걷기
- 달리기
- 건강식품
- 트루헬스
- 건강
- 비트코인시세
- 매나테크
- 무브투언
- 달리기채굴
- 달리기앱
- Today
- Total
애옹이
[Day 02] 매우 기본 게시판 따라잡기_(2)요청에서 응답까지 본문
목표 : 요청에서 응답까지 데이터 전달따라 가기.
보고 배우는 site : http://forest71.tistory.com/2
보고 가져오는 source : https://github.com/gujc71/board_sample
게시판 구동 환경 : Spring 4 + MyBatis 3 + mysql (Maven) 기반
◈ 요청-응답 처리의 구성 :
1) 구성도
2) 요청 - 응답 흐름 설명
(# 참고 : http://clearpal7.blogspot.kr/2016/07/mvc.html )
▶ src/main/webapp/WEB-INF/web.xml 파일에 DispatcherServlet를 설정하고 웹서버에 배포를 하면,
DispatcherServlet은 전달받은 설정 파일을 이용해서 스프링 컨테이너를 생성하는데,
HandlerMapping, HandlerAdapter, Controller, ViewResolver등의 Bean은
DispatcherServlet이 생성하는 스프링 컨테이너로부터 구한다.
DispatcherServlet은 스프링 컨테이너에서 HandlerMapping과 HandlerAdapter타입의 빈을 사용하므로,
사용하려는 핸들러에 알맞은 HandlerMapping 빈과 HandlerAdapter빈이 스프링 설정에 등록되어 있어야 한다.
servlet-context.xml에 있는 <annotation-driven/>은 매우 다양한 스프링 빈 설정을 추가해준다.
이 태그가 빈으로 추가해주는 클래스 중에는 @Controller타입의 핸들러 객체를 처리하기 위한
다음의 두 클래스도 포함되어 있다.
RequestMapping / HandlerMapping 애노테이션은 @
Controller애노테이션이 적용된 객체의 @RequestMapping값을 이용해서
웹 브라우저의 요청을 처리할 컨트롤러 빈을 찾는다.
RequestMappingHandlerAdapter애노테이션은 컨트롤러의 메소드를 알맞게 실행하고,
그 결과를 ModelAndView 객체로 변환해서 DispatcherServlet에 리턴한다.
RequestMappingHandlerAdapter 클래스는 "/hello" 요청 경로에 대해 hello()메소드를 호출하는데,
이때 Model객체를 생성해서 첫 번쨰 파라미터로 전달한다.
컨트롤러의 처리결과를 JSP를 이용해서 생성하려면 ,다음의 설정을 추가해주면된다.
servlet-context.xml 에
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
컨트롤러의 실행 결과를 받은 DispatcherServlet은 ViewResolver에게 뷰 이름에 해당하는 View객체를 요청하는데,
이때 InternalResourceViewResolver는 "prefix+뷰이름+suffix"에 해당하는 경로를 뷰 코드로 사용하는 InternalResourceView타입의 VIew 객체를 리턴한다.
DispatcherServlet은 컨트롤러의 실행 결과를 HandlerAdapter를 통해서
ModelAndView 형태로 전달받는다고 했는데, 이 중에서 Model에 해당하는 값을
View객체에 Map형식으로 전달한다.
예를들어 HelloController클래스는 다음과 같이 Model 에 "greeting"속성을 설정했었다.
model.addAttribute("greeting","안녕하세요"+name);
이 경우 DispatcherServlet은 View객체에 응답 생성을 요청할 때, greeting키를 갖는데
Map객체를 View객체에 전달한다.
<body>
인사말: ${greeting}
</body>
- DefaultServletHttpRequestHandler
- SimpleUrlHandlerMapping
- RequestMappingHandlerMapping을 사용해서 요청을 처리할 핸들러를 검색한다. 존재하면, 해당 컨트롤러를 이용해서 요청을 처리한다.
- 존재하지 않으면, SimplUrlHandlerMapping을 사용해서 요청을 처리할 핸들러를 검색한다. <default-servlet-handler>가 등록한 SimplUrlHandlerMapping은 "/**"경로에 대해 DefaultServletHttpRequestHandler를 리턴한다. DispatcherServlet은 DefaultServletHttpRequestHandler에 처리를 요청한다. DefaultServletHttpRequestHandler는 디폴트 서블릿에 처리를 위임한다.
(# 참고 : http://egloos.zum.com/springmvc/v/504151 )
------------------------------------------------- 작성일 : 2016/08/24(수) ----
'프로젝트 > 백문이불여일타 !' 카테고리의 다른 글
[Day 01] 매우 기본 게시판 따라잡기_(1)설정 (0) | 2016.08.23 |
---|