2018 공부/Studies

[JSP] JSP 동작원리(Tomcat)와 서블릿

해믜릥 2018. 11. 20. 01:22

출처 : JSP 웹 프로그래밍 입문 + 활용 (앤써북)


01. JSP의 동작 구조

정적 페이지 요청(HTML, 이미지, 텍스트 파일 등에 대한 요청)은 웹 서버에서 해결한다.

동적 페이지 요청(JSP 페이지에 대한 요청)은 웹 서버에서 JSP 컨테이너로 다시 전달된다. 즉, JSP 페이지는 웹 컨테이너에 의해 실행된다.

>웹 컨테이너: JSP가 동작할 수 있도록 하는 일종의 서버 

1-1. JSP 페이지의 내부적인 처리방식

웹 브라우저 -> 웹 서버 -> JSP 컨테이너 -> *.jsp ->*.java ->*.class -> 웹 서버 -> 웹 브라우저

간단하게 설명하자면 클라이언트가 *.jsp에 대한 요청을 웹 서버에 하게 된다. 웹 서버는 다시 이 요청을 JSP 컨테이너로 넘긴다.

JSP 컨테이너는 해당 JSP 페이지를 찾아 서블릿(자바 파일/*.java)으로 변환 시킨다. 자바 파일을 컴파일 한다. 

자바 파일의 결과가 다시 사용자의 웹 브라우저로 전송되어 클라이언트가 요청한 결과를 받아볼 수 있게 된다.


이를 단계적으로 자세하게 정리해보자!

1) 사용자의 브라우저는 http://servername.../*.jsp 형태로 요청을 한다.

2) 웹 서버는 사용자의 요청을 JSP 컨테이너로 넘긴다.

3) 만일 JSP 파일이 처음 요청된 경우라면 JSP 파일을 파싱한다. ( 파싱: JSP 파일이 오타나 논리적 오류가 없는지 자세하게 읽는 것)

그렇지 않은 경우라면 6) 의 단계로 간다. 

4) JSP 파일로부터 서블릿이라는 자바 파일이 생성된다. 

5) 서블릿 파일이 컴파일 과정을 거쳐 클래스 파일로 된다.

6) 클래스 파일이 메모리가 적재 되어 실행된다.

7) 실행 결과가 웹 서버에 넘겨져 웹 서버는 HTML 형태로 사용자에게 응답을 전송한다. 

8) HTML 형태의 페이지를 브라우저에서 실행시켜 사용자가 웹 페이지를 확인할 수 있다. 


02. JSP의 Life Cycle

# JSP의 생명주기 : init() -> service() ->destroy()  / 초기화 -> 요청 처리 -> 소멸

초기화 단계에서 초기화 작업 진행 후, 요청 처리단계에서 실제로 사용자의 요청을 처리한다.

그리고 처리한 결과를 응답으로 생성한 후, 소멸단계를 거쳐 필요했던 모든 자원을 해체하는 방식을 가진다.


03. Servlet

# 서블릿 (Server + Applet) : 확장 CGI 방식으로 동적인 웹페이지를 생성하기 위한 기술 & Java 코드 안에 HTML 코드를 작성한다

서블릿은 브라우저에서 호출되면 WAS에서 동적인 웹페이지를 생성하여 결과를 전송하는 서버 측 프로그램이다.

>WAS (Web Application Server): 서버 단에서 애플리케이션이 동작할 수 있도록 지원하는 컨테이너가 포함된 서버 (Tomcat, Resin 등)

Applet은 브라우저에서 호출되면 클래스 파일이 클라이언트 PC로 다운로드되어 실행되는 클라이언트 측 프로그램이다.

3-1. Servlet의 Life Cycle

1) 브라우저에서 호출되면 WAS는 서블릿 클래스를 로딩한다. 

2) 로딩이 완료되면 인스턴스가 생성되고 init() 메소드가 자동으로 호출된다.

3) 서블릿 인스턴스로부터 스레드를 생성하고 service()메소드 호출한다.

4) 서블릿 종료시 destroy() 메소드 호출한다.