서블릿
서블릿(servlet)
동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술
이미 자바 기반으로 작성되어 있기 때문에 가져다 쓰기만 하면 됨
톰캣(was)가 하는 일(주소요청과 응답)을 서블릿에 위임
클라이언트 - 주소요청 -> 아파치(웹서버) -> 톰캣(was) -> servlet -> JSP(웹자원)
요청이 일어나면 servlet의 특정 클래스(doPro...)의 메서드가 호출된다.
원래 request를 받으면 JSP 거치는 것 없이 JSP 전에 바로 response를 전달하고 끝남(redirect - 평범하게 끝난 요청)
서블릿의 dispatcher에 request,response를 통하면 웹자원/JSP까지 전달됨(forward - 요청의 생명주기 길어짐)
DB에서 정보를 가져와서 화면에 보여주기만하면 forward (생명주기가 길기 때문에 DB 변경에 사용하기에는 느림 - 조회)
DB에서 정보를 가져와서 수정해서 정보를 반환하면 redirect (생명주기가 짧기 때문에 DB 변경 적용이 바로 바로 가능 - 수정, 삭제)
자바 - 정적인 프로그래밍 언어
정적타입 언어는 컴파일 시에 변수의 타입이 결정되는 언어를 의미한다. 대표적인 언어로는 C, C++, Java, C# 등이 있다.
모든 요청 - HttpServletRequest / 모든 응답 - HttpServeletResponse
[ MVC 패턴 ]
Model View Controller
Client -> [ Controller(Filter/Servlet) -> View(JSP) / Model(Java Bean) = Container ] -> Database
제어하는 부분 / 화면을 그려주는 부분 /데이터를 가공하는 부분을 따로 나눠서 너는 그거만 해라! -> 효율적, 수정 용이...
1. 주소 요청 : Client -> Controller (처리 / 제어 - DB 사용할래? -> Model)
2. 데이터 가공 : Controller -> Model (데이터 가공 / DB 접근) Bean - 객체
3. 가공한 데이터 전달 : Model -> Controller -> View (렌더링) : Model과 View는 직접 통하지 않는다.
4. 렌더링 화면 출력 : View -> Controller -> Client
mapping 작업 : 이 요청이 들어오면 이 Controller로 이동해!
Controller가 바뀔때마다 mapping 작업 해줘야함 - 귀찮아.... -> Spring이 대신 해줌!