Whiteship's Note

Spring MVC 공부 중



Spring MVC가 작동하는 전체적인 그림은 Spring Reference에 있는 그림을 참고 하면 다음과 같습니다.
사용자 삽입 이미지
그림에 순서가 적혀있지 않아서 번호를 붙여 봤는데 아무래도 저렇게 동작할 것 같습니다. Spring In Action에도 이와 비슷한 그림을 본 것 같아서 찾아 봤습니다.
사용자 삽입 이미지

Spring Reference에 있는 그림보다 깔끔한것 같습니다.

Dispatcher Sevlet은 흔히 web.xml 파일을 말하며에 <servlet>태그로 설정하며  이것이 Spring Reference에 있는 front controller에 해당합니다.

Handler Mapping은 요청에 따라 어떤 controller 객체가 사용될지에 대한 정보를 가지고 있으며 web.xml에 bean 설정파일에 하나 이상의 Handler Mappling들이 등록되어 있습니다.을 등록할 수 있습니다.

Controller는 Handler Mapping에 전부 등록이 되어있고 POJO 형태이고 DI를 사용합니다. ModleAndView 객체를 반환하는 메소드들이 있습니다.

ViewResolver는 반환된 ModelAndView 객체를 View에 맵핑합니다. 여기서 궁금한 것은 Handler Mapping과 분리 된 파일에 정의 해 둘 수도 있고 같은 곳에 둘 수도 있겠죠?? 아마 그래서 Spring In Action에서는 따로 그리고 Spring Reference에서는 Front Controller로 향하도록 그린것 같습니다. 이 bean에 있는 정보를 바탕으로 이 객체의 정보를 사용할 view에 객체를 전달하게 되는 듯 합니다. (여기서 부터 주춤거리기 시작합니다. ㅎㅎㅎ)

View는 JSP나 HTML같은 파일을 말하는 것 같습니다.

'Spring > 주소록 만들기' 카테고리의 다른 글

화면 작성  (0) 2006.12.26
Alt + Shift + X, R 주의  (2) 2006.12.25
Web Application Context 작성  (3) 2006.12.25
Spring MVC 구동을 위한 web.xml 작성  (0) 2006.12.25
이클립스에서 웹 프로젝트 생성하기  (0) 2006.12.25
Spring MVC 공부 중  (10) 2006.12.23
CSS 공부 중  (2) 2006.12.21
주소록 화면 완성  (3) 2006.12.19
중간점검  (0) 2006.12.17
HTML 공부 중 2탄  (2) 2006.12.14
Strict HTML 4.01 지침서  (6) 2006.12.14
top

  1. Favicon of http://chanwook.tistory.com BlogIcon 찬욱 2006.12.24 21:25 신고 PERM. MOD/DEL REPLY

    Spring In Action에 나오는 그림이 더 이해가 쉬운거 같습니다.

    Dispatcher Sevlet이 바로 web.xml 이다라기 보다는 web.xml에서 모든 서블릿의 요청을 받아서 처리하도록 선언되어 있는 서블릿을 말하는 것 같습니다. servlet_name-servlet.xml 처럼 말이죰.

    위에서 Handler Mapping이라고 예를 들으신 부분(Servlet 매핑 부분)은 Handler Mapping이 아니라 Dispatcher Servlet을 선언한 부분인 것 같습니다. Handler Mapping은 선언된 Dispatcher Servlet 안에 선언이 되겠죠.

    View Resolver도 web.xml에 바로 설정하기 보다는 다른 xml파일로 작성해서 web.xml에 선언해 두는게 많이 쓰이는 것 같습니다.(web.xml에 바로 선언되도 되나요?)
    마지막에 궁금해 하신 mapping 부분과 resolver를 분리하는 건 가능하고, 그렇게 하는게 더 옳은 방법일 것 같군욤^0^

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.12.24 22:19 신고 PERM MOD/DEL

    Dispatcher Sevlet이 XXX-sevlet.xml 같은 파일을 말한다는 것인가요? 글쎄.. 제가 이해한 바로는 web.xml에서 어떤 Hanler Mapping들이 어떤 URL들을 담당할지 정의해 두는 요청을 받아들이는 맨 앞단으로 이해를 했고..그 생각이 별로 바뀌지 않는군요.

    예제에 대한 부분은 예제의 위치가 오해의 소지가 있지만 내용은 딴지 걸게 없는것 같은데요. 전 그 예제가 Disapatcher의 예고 Handler Mapping을 등록해 두고 있다고 이해했다고 말하고 있죠.

    View Resolver를 web.xml에 둔다는 말을 한적도 없습니다. 'Handler Mapping에 같이 둘 수도 있고 따로 둘 수도 있지 않을까?' 라고 했는데. Handler Mapping은 XXX-sevlet.xml파일로 제 머릿속에서 매칭시키고 있습니다.(Dispatcher를 web.xml로 매칭시키듯이) 예제로 긁어 올린 부분은 springkorea 에서 개발 하던 소스에서 본것이니 직접 확인하시면 될 것 같습니다.
    --------------------------------------------------
    열심히 딴지 걸어줘서 다시 한번 점검하는데 도움이 됐어. 쌩큐. 하지만 '욤'같은 글자체는 별로 안 이쁘군.

  2. Favicon of http://chanwook.tistory.com BlogIcon 찬욱 2006.12.25 10:23 신고 PERM. MOD/DEL REPLY

    딴지(?)는 아니었고 제 생각과 다른 부분이 있어서 댓글을 달아 봤죠.
    다시한 번 댓글 달아 봅니다^^.

    "Dispatcher Sevlet은 흔히 web.xml 파일을 말하며"
    => Dispatcher Servlet은 web.xml이 아니라 servletName-servlet.xml을 말합니다.

    "Handler Mapping은 요청에 따라 어떤 controller 객체가 사용될지에 대한 정보를 가지고 있으며 web.xml에 하나 이상의 Handler Mappling들이 등록되어 있습니다."
    => web.xml에는 Dispatcher Servlet을 선언하는 것 같습니다. 매핑부분에 보시면 DispatcherServlet이라고 선언되어 있기 때문에 그렇게 생각됩니다.

    제 생각에 형과 저의 이해한 부분이 DispatcherServlet과 Handler Mappings 부분에 대한 이해가 약간
    상이한 것 같습니다. 그렇죠? 시간이 없어서 정리를 마저 못 했지만 앞부분만 제 생각을 정리해봤습니다

    사실 약간 표현이 다를 뿐이지 의미는 같은 것 같은데요.
    글을 쓰신 것에 대한 딴지는 아니구요, 보다 더 정확히 이해해 보자는 말씀입니다.
    지나치지 않는 논쟁은 언제나 활력소를 불러 일으키자나요.

    -----------------------------------------------------------------------------------------
    '욤'은 제 나름대로 귀여움의 표현이었지만, 기분이 상하셨다면 안남기도록 하죠.
    사과하겠습니다.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.12.25 10:51 신고 PERM MOD/DEL

    먼저 DispatcherServlet의 경우 Spring In Action에서 이것이 Spring MVC의 핵심이라고 말하면서 8.1.2에 다음과 같이 말하고 있지.

    "At the heart of Spring MVC is DispatcherServlet, a servlet that functions as
    Spring MVC’s front controller. Like any servlet, DispatcherServlet must be configured
    in your web application’s web.xml file."

    내가 이 부분을 읽고 너무 단순하게 web.xml파일이라고 써논 것은 억측이지만 내 이해를 단순화 시키기 위해 그렇게 써놓은 것이고.. 다시 쓰자면..

    web.xml 파일안에 <sevlet> </sevler> 사이 부분이 Dispatcher 부분이라고 써야겠지.

    그래서 "Dispatcher Servlet은 web.xml이 아니라 servletName-servlet.xml을 말합니다."라고 반박해준 부분에 난 동의 할 수 없지.. servletName-servlet.xml은 Handler Mapping이라고 이해 했거든(이것도 단순화 시켜서) 그리고 이 Handler Mapping을 Dispatcher안에 등록 해두는 것으로 이해했지..

    Handler Mapping은 어떤 요청을 어떤 컨트롤러 객체가 처리하도록 매핑 시킬 때 사용하되는 것으로 이해를 했고.

    내가 보기에.. 너랑 나랑 이해의 차이가 생긴 이유가 너는 Dispatcher Servlet과 Handler Mapping을 동일시 하는 것 같고 난 다른 존재로 인식해서 발생한 것 같은데.. 이런 생각이 드는 이유는

    "web.xml에는 Dispatcher Servlet을 선언하는 것 같습니다. 매핑부분에 보시면 DispatcherServlet이라고 선언되어 있기 때문에 그렇게 생각됩니다." 이 부분은 내가 이 댓글의 위에서 말한 부분과 거의 같은 말이라.. 이해가 같은데.. 이 글을 Handler Mapping에 관한 반박 부분에 달아 놓았다는 건.. Handler Mapping과 Dispatcher를 동일시하고 있다고 생각하게 되는 이유지..

    Anyway~ 덕분에 MVC 주요 용어들과 실제 파일과의 매칭이나 개념적인 이해에는 많은 도움이 된 것 같아서 고마워.

    Favicon of http://chanwook.tistory.com BlogIcon 찬욱 2006.12.25 11:34 신고 PERM MOD/DEL

    고맙긴요, 부끄럽게..-_-ㅋ
    형 말처럼 저도 단순화를 위해 둘을 동일시 했거든요.^^
    저도 형 덕에 다시 한 번 생각해보게 됐습니다.
    쌩유에요.

    정체된 지식만큼 경계해야 할게 없겠죠.^^

  3. Favicon of http://chanwook.tistory.com BlogIcon 찬욱 2006.12.25 10:29 신고 PERM. MOD/DEL REPLY

    크리스마스 아침인데 제가 글 쓰고 트랙백 달기 전에 벌써 트랙백을 달으시다니..ㅋ
    저야 출근했다 치지만요~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.12.25 10:51 신고 PERM MOD/DEL

    ㅋㅋㅋ난 오늘 밤에 제사라서 집에서 공부나 하려고

    Favicon of http://chanwook.tistory.com/ BlogIcon 찬욱 2006.12.25 11:33 PERM MOD/DEL

    ㅋㅋ 좋구만요.
    제사를 가장한 공부. 밤에 제사면 낮에는 놀아도 되자나요. 음..여긴 분위기가 급박합니다. 같이 한 번 느껴봐야 하는 건데요!ㅎ(근데 왠 블로그질을 할까요?ㅋㅋ)

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.12.25 11:38 신고 PERM MOD/DEL

    그러게 나도 일좀 해볼걸 그랬어. 경험치도 쌓이고 돈도 주고~ 30일에 보겠군. 그때 봅세~

  4. Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.05.11 12:38 신고 PERM. MOD/DEL REPLY

    이런 지금 다시 보니까 말도 안되게 써놨군 아 창피해;;-_-;;;

Write a comment.