<목차>
ㅇ 컨텍스트 등록
ㅇ FrontController와 POJO
ㅇ web.xml의 DispatcherServlet
ㅇ 기본 동작 흐름
ㅇ 컨텍스트 등록
ㅇ 컨텍스트 등록 : 웹 서버에 등록하기
- 우리가 만든 이 프로젝트를 톰캣이라는 서버에 등록 해줘야 해
건물이 지어졋으면 등기를 해서 번지를 지어줘야 사람이 살 수 있듯이,
우리 프로젝트를 톰캣 서버가 등록을 해줘야 톰캣 서버가 우리 어플리케이션을 찾아갈 수 있는거야
- 톰캣 - 마우스우클릭 - 애드 - 우리프로젝트를 등록
ㅇ 등록 확인
- 서버 -> 서버.xml -> context 가면 path속성 있어 (152번째 줄)
- 등록을 하게 되면 소스코드에 들어가. 이게 컨텍스트 패스
- 등록 되어 있어야 우리 프로젝트를 톰캣 서버가 찾아갈 수 있어
- 컨텍스트 패스 이름으로 요청을 해야 톰캣 서버가 찾아 가는거야
ㅇ 결론
ㅇ 톰캣 포트번호 바꾸기
- 원래 톰캣 서버의 기본 포트가 8080 인데 오라클이 1521 포트와 8080포트를 쓰고 있어
- 그래서 8081로 바꾸자
ㅇ 동작 과정
- 톰캣은 기다리고 있어
- 톰캣 서버한테 이제 헬로 월드 보여줘~ 요청하면
톰캣 서버가 뭔가를 찾아서 우리한테 헬로 월드를 보여줄거야 = 요청에 맞는 응답을 해줄거야
ㅇ 요청하기
cf. 루뜨(/)는 뭐냐
-
리퀘스트매핑의 값에 적힌 /
-
주소의 슬러시(/)가 요청이 들어와서 String home 메서드가 처리가 되는 거야
-
만약 /test가 걸려 있으면 /web/test해야 이 메소드가 처리 되는거야
-
요청이 들어오면 c(컨트롤러)로 갔다가 m(모델)으로 갔다가 v(뷰)로 가는 과정이 프레임워크 안에 숨어 있어
ㅇ FrontController와 POJO
ㅇ 은행에 비유
- 은행문을 열기 전 불도 켜고, 컴퓨터도 켜 두고 등등 셋팅을 다 해둬야 9시땡 하면 고객이 들어올 수 있는 것 처럼 = 톰캣 서버를 시~작 한다는 것은 클라이언트의 요청이 들어오기 전에 스탠바이 상태를 만들어 둔다는 것 (메모리, 데이터베이스연결 등의 준비 절차) = xml 파일을 읽어들임
- 고객이 들어옴 = 클라이언트한테 요청이 옴
- 은행문 딱 열고 우리를 반겨주는 경비원 (어떤 업무를 보러 오셨습니까. 하는 사람) = FrontController
- 경비원(프론트컨트롤러)는 요청에 맞는 영역으로 일을 보내면 돼
- 출입명부, 발열체크 등을 해 줄 알바생 = POJO (Plain Old Java Object)
ㅇ FrontController
- 클라이언트가 요청을 제일 먼저 받는 사람은 컨트롤러
- 컨트롤러 중에서도 클라이언트의 모든 요청을 다~ 받는 컨트롤러가 있어 => FrontController
- 여기를 통과하지 않고 다른데로 갈 수 없어
- 서블릿
- web.xml의 DispatcherServlet
ㅇ POJO
- 구체적인 업무를 프론트컨트롤러가 다 하려면 로드가 길어져
- 프론트컨트롤러가 해야 할 일을 대신해주는 알바생들을 필요로 해
- POJO도 크게 보면 컨트롤러야
- HomeController.java
ㅇ FrontController와 POJO의 차이
- 프론트컨트롤러는 서블릿으로 만드는데 포조는 그냥 자바로 만들어야 해
- 프론트컨트롤러는 일을 시키는 애, 실제 일을 하는 애는 포조
- 프로젝트할 때는 포조를 잘 만들어야 해
ㅇ 퀴즈 : 우리 프로젝트에서 HomeController는 FrontController일까 POJO일까?
- .java 파일이므로 POJO야
- 서블릿 형태면 프론트컨트롤러였겠지?
- 그러면 FrontController는 어디 있나? => 스프링은 알아서 제공 해 줘 (어딘가에 만들어져 있어)
=> web.xml의 DispatcherServlet
ㅇ web.xml의 DispatcherServlet
- 우리 어플리케이션이 톰캣에 등록되어 있으므로 톰캣 서버를 시~작 하면 우리 어플리케이션에서 해야할 일들을 web.xml부터 처리를 해
- src-> main -> webapp -> WEB-INF -> views -> web.xml
ㅇ xml 파일
- 작업지시서 : 프레임워크한테 이렇게 이렇게 일 좀 해주세요~ 하고 설정하는 것
- 톰캣 서버가 시작되면 이런 xml들을 다 읽어갈 건데 순서가 있어 =>가장 먼저 web.xml
- xml파일 4개가 기본으로 있어 (더 추가적으로 만들게 될 거야)
ㅇ DispatcherServlet
- web.xml 안에 processes application requests(리퀘스트 요청을 받는 프로세스)로 서블릿이 있어
- 이름이 디스패쳐서블릿. 이게 프론트 컨트롤러가 돼
- API로 다운로드 되서 프로젝트 안에 있어
- 스프링은 프론트 컨트롤러가 미리 정해져 있고 우리가 만들 필요가 없어
스프링은 프론트 컨트롤러 이름이 DispatcherServlet
어떤 클래스죠? 하면 "web.xml의 DispatcherServlet에요" 하면 돼
ㅇ 기본 동작 흐름
스프링에서는 이 구조를 이해하는 게 중요해
- ⓐ FrontController ⓑ POJO
- 이 둘 사이에 이걸 핸들링 해주는 핸들러매핑 등등이 있음
- 결합도를 낮추고, 응집도 높이는 방법이야
- 둘 사이에 뭔가가 들어가서 그 연결을 끊어버리는 것
- 스프링은 이렇게 계속 결합도를 낮추면서 사이를 벌리다 보니 복잡해져
구조는 복잡해지지만 효율적으로 되는거지
- provided by Spring Source
- 파란색들은 다 스프링 소스에 의해 제공이 되어진다!
- FrontController는 스프링이 제공하지만, POJO는 우리가 만들어야 해
- 샘플로 제공되는 POJO : HomeController.java