Tomcat을 사용한 통신

Jan 24, 2024
Tomcat을 사용한 통신

라이브러리 개발자들이 Dispatcher를 만들고 controller에 메서드만 구현하는 방식으로 일을 시키고 싶지만 만들 방법을 모름
 
왜? 무슨 메서드를 만들지 무슨 객체일지(controller) 모르니까 만들어주기 위해 만든 것이 reflection
그리고 우리한테 깃발 annotation을 알려줌
알아서 Component Scan이 되서 class를 대신 new 해줘서 ioc 컨테이너에 담아줌
annotation달면 알아서 new 해주고 알아서 실행시켜줄 것임
reflection이 범위 이하 폴더를 찾아서 annotation을 찾아서 ioc 컨테이너에 담고
주소 요청이 들어오면 해당 annotation을 찾아서 실행시켜줌
 
모든 요청은 Front Controller = Servlet 으로 들어옴
Servlet 은 우리가 만들고, Tomcat이 new 해주고 서비스 메뉴를 실행시켜줌
 
Tomcat이 요청이 들어오면 클래스를 두 개 만들고 해당 주소를 해서 서비스 메서드를 실행시키고 그 서비스 메서드에 파라미터를 전달해서 실행함
/*로 인해 모든 요청이 Front Controller로 들어와 공통 로직 처리가 가능함
ex) DB연결
그래서 서비스 부분을 메인 메서드라고 생각하고 책임을 나누는 것
Dispatcher, Controller , 어떤 사람은 DAO 등 다 회사마다 다양하게 함
그래서 표준을 만들기 위해 나온 것이 전자정보 프레임 워크이지만 잘 안 씀
외국에서 만든것이 스프링 프레임 워크
 

핵심이 Dispatcher 를 reflection으로 만들어주는 것

그리고 모든 객체들을 내가 Component Scan으로 new 해줄게 너는 Controller만 만들어
이게 스프링 프레임 워크
프레임 워크(Framework) : 소프트웨어 개발을 위한 구조화된 환경을 제공
 
Front Controller, Dispatcher 는 눈에 보이지 않을 뿐 존재함 // 톰캣이 만들어줌
Dispatcher 의 역할이 reflection으로 만들어진 것일 뿐
그 이름이 Dispatcher Servlet 임 / Servlet 을 Dispatcher 함→ 라우터 해야함
모든 주소 요청을 다 받아서 reflection으로 다 쫘 놨음
다 받아서 Controller를 실행하는 것까지는 구현이 되어있음
쉽게 Controller를 만들어서 annotation만 붙이면 됨
 
메서드에 리턴을 다면 Dispatcher 에 반환 됨
공통 로직 처리가 Front Controller에 이미 되어있으니 받아서 버퍼에 써서 응답하면 됨
 
정적 페이지 요청 시에는 식별자가 아니라 자원 명으로 요청을 함
 
아파치는 웹 서버 - 정적 파일 응답
Tomcat은 웹 애플리케이션 - 동적 파일 응답 / 반드시 자바 언어가 필요함 → html로는 안됨
프로그래밍이 되지 않으면 동적 파일을 응답할 수 없음
 
자바 컴파일링을 해줌
식별자를 받아서 파싱해서 해당하는 Servlet을 요청하고 코딩해서 응답할 수 있는 서비스를 만들 수 있음
 
요청이 온 uri를 파싱 → 해당하는 웹 Servlet을 찾음(우리가 만듦)
서비스 메서들을 호출함
파라미터는 Tomcat이 전달해서 넣어줌
나머지는 개발자의 영역
요청 정보 안에 구체적인 요청의 정보가 들어가 있음, htdml body와 header도 다 들어가 있음
그 요청에 알맞게 응답해서 버퍼에 담아주면 됨
Front Controller : 단일 질적으로? 만듦
모든 주소 요청이 다 들어와서 주소에 대한 라우팅을 해야 함
그래서 Dispatcher class를 만들어서 파싱해서 적절한 컨트롤러를 찾아내야 함
Dispatcher를 reflection으로 구현해서 동적 분석을 해서 컨트롤러를 실행시킴
컨트롤러를 만드는 사람은 annotation에 대해서 학습을 해야 사용할 수 있음
Dispatcher 가 annotation을 보고 컨트롤러를 때림
Dispatcher 에게 응답을 해줌 → Controller가 예외를 위임했을 때를 대비해서 알아야 함!
 
DAO를 만들어서 DAO에게 위임 (우리가 만들어야함)
DAO는 DB와 일함
CRUD 메서드들을 만들어 놓고DB와 통신함
통신하면 RS를 받을 것 → 커서를 옮기면서 자바 object로 만들어서 컨트롤러에 주고 컨트롤러는 Dispatcher 에 주고 Dispatcher가 버퍼에 담아서 응답함
 
controller는 파싱, x-www-form-urlencode데이터를 파싱해서 제대로 왔는지 유효성 검사
 
Share article

vosw1