Let's live hard


  1. 웹브라우저를 통해 클라이언트의 요청이 들어오면 무조건 맨 처음 DisptcherServlet에서 요청을 받는다.

  2. HandlerMapping에게 작업을 보낸다.

  3. HandlerAdapter에게도 보낸다.

  4. Controller에게도 보낸다.

  5. ViewResolver에게도 보낸다.

  6. View에게도 보낸다

우리가 작업을 많이 할 부분은 Controller, View, Model이고 나머지 부분은 Sprring에서 거의 자동으로 다루어준다.

요청이 들어오면 DispatcherServlet 이 먼저 받고, Controller에게 요청을 한다. Controller에서 다시 DispatcherServlet으로 뭔가 응답을 준다. 그러면 DispatcherServlet에서 ViewResolver를 통해 View에 호출이 된다. 그러면 사용자에게 응답이 이루어 진다.





1. File -> New -> Spring Legacy Project ->  Spring MVC Project 선택









Spring Tool 에서 보이는 이름







3번쨰는 이름이 프로젝트의 Context name이 된다.(중요!)







생성된 프로젝트 구조









₪ src/main/java -개발되는 코드의 경로


₪ 컨트롤러 :Dispatcher에서 전달된 요청을 처리

₪  src/main/resources - 서버가 실행될 떄 필요한 파일 경로


₪ webapp : Web root



₪ servlet-context.xml : 스프링 컨테이너 설정 파일




₪ web.xml - Maven의 설정 파일 DispacherServlet 서플렛 맵핑  스프링 설정 파일 (servlet-context.xml) 위치 정의 



     Web.xml에서 /으로 요청이 들어오면 org.springframework.web.servlet.DispatcherServlet으로 보내라고 했으나스프링 프레임워크의 클래스이기 때문에 내가 신경쓸 일이 없다. DispatcherServlet는 작업이 끝난 후 알아서 Controller로 보낸다.

     Servlet-context.xml의 <context:component-scan base-package="com.ch.aca"/>에 

명시된 com.ch.aca 패키지에 @Controller라고 명시된 클래스만 Controller로 본다.


 




    Resources 폴더


우리가 웹사이트를 만들다 보면 이미지도 있을 수 있고, js이나 css도 있을 수 있다그런 것들은 어떻게 들어가는지 살펴보자.

우선 이미지를 예제로 본다

  (1)    이미지를 webapp아래의 resources폴더에 이미지를 copy해서 넣고, home.jsp에 “<p> <img src="/aca/resources/h.jpg"></p>”추가하고 실행하면 이미지가 보인다.


(2)    webapp아래에 img라는 폴더를 만들고 이미지를 copy해서 넣고 home.jsp에 “<p> <img src="/ch08_1/img/h.jpg"></p>” 추가하고 실행하면 이미지가 보이지 않는다다음과 같은 순서에 따라 이미지가 보이도록 해야 보일 수 있다.


     web.xml에 있듯이, '/'가 들어오면 DispatcherServlet으로 보내고 그 DispatcherServlet은 컨트롤러로 보낸다.


     컨트롤러를 찾는 것은 servlet-context.xml에 나온 패키지 중 @Controller라는 어노테이션이 있는 곳을 컨트롤러로 본다.


     그안의 @requestMapping(요청을 매핑하는 어노테이션)대로 메소드를 수행하고 "home"을 뷰의 이름으로 리턴.


     servlet-context.xml prefix surfix로 뷰의 경로로 찾아가 실행한다.


     "/"로 시작하는 경우요청이 들어온 건 DispatcherServlet이 가로채라라고 했으므로, DispatcherServlet에서 컨트롤러에게 보낸다그러나제외시키는 코드가 servlet-context.xml에 명시해 놓는다.

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->

<resources mapping="/resources/**" location="/resources/" />

<resources mapping="/img/**" location="/img/" />

     위의 코드에 의해 /resources/로 시작하는 것과 /img/로 시작하는 것은 경로 그대로 읽게 한다

'Spring' 카테고리의 다른 글

Spring 외부파일을 이용한 설정  (0) 2017.07.31
자바 Spring 개요  (0) 2017.07.31
댓글 로드 중…

블로그 정보

it를 공부하고 있습니다.

최근에 게시된 글