1. 클라이언트 요청
브라우저가 JSP 파일에 대한 요청을 보낸다.
예를 들어 사용자가 http://example.com/example.jsp
를 입력하면, 이 요청이 서버로 전달된다.
2. 웹 서버가 요청 처리
웹 서버(Apache, Nginx 등)는 요청을 수신한 뒤 이를 서블릿 컨테이너(Tomcat, Jetty 등)에 전달한다. 서블릿 컨테이너는 JSP 파일을 처리할 준비를 한다.
3. 필터(Filter) 동작
필터는 클라이언트 요청과 서블릿 응답 사이에 끼어들어 추가 작업을 수행하는 역할을 한다.
예를 들어 다음과 같은 작업을 처리할 수 있다
- 인증 및 권한 검사: 요청이 적절한 사용자로부터 온 것인지 확인
- 로깅: 요청 및 응답 정보를 기록
- 데이터 압축: 응답 데이터를 압축하여 클라이언트로 전송
- 요청 데이터 전처리: 요청 데이터를 수정하거나 추가 데이터를 삽입
필터는 서블릿 실행 전에 요청을 처리하거나, 서블릿 실행 후 응답을 처리할 수 있다.
필터 작동 순서
- 클라이언트의 요청이 필터로 전달
- 필터가 요청을 검증 및 수정한 후 서블릿으로 전달
- 서블릿의 응답이 필터를 거쳐 클라이언트로 전달
4. JSP -> 서블릿 변환
서블릿 컨테이너는 JSP 파일을 서블릿으로 변환한다.
JSP는 사실 내부적으로 서블릿 코드로 변환되어 실행된다. 이 과정은 다음과 같이 이루어진다
- JSP 컴파일: JSP 파일이 서블릿 자바 파일(.java)로 변환된다.
- 컴파일된 서블릿 클래스 생성: 변환된 자바 파일이 컴파일되어 서블릿 클래스(.class 파일)가 생성된다.
이 과정은 서버가 JSP를 처음 실행할 때만 이루어지며, 이후 요청에서는 이미 생성된 서블릿을 재사용한다.
이후 같은 JSP 파일에 대한 요청이 들어오면, 이미 생성된 서블릿 클래스를 재사용한다.
5. 서블릿 실행
서블릿 컨테이너는 변환된 서블릿 클래스를 실행한다.
서블릿은 클라이언트 요청을 받아서 필요한 데이터를 처리하고 응답을 생성한다.
이 과정에서 JSP 페이지에 포함된 자바 코드가 실행되어 동적인 콘텐츠를 생성한다.
6. 응답 생성 및 클라이언트 전달
서블릿이 실행을 완료하면 JSP의 HTML 코드를 생성하여 클라이언트(브라우저)로 전달한다.
이 과정에서 동적으로 생성된 데이터도 HTML 코드에 포함된다.
브라우저가 HTML 렌더링
브라우저는 전달받은 HTML 코드를 렌더링하여 화면에 출력한다. 이때 JSP 파일은 사용자에게 보이지 않고 최종적으로 생성된 HTML만 보인다.
요약
순서 | 단계 | 설명 |
---|---|---|
1 | 클라이언트 요청 전송 | 브라우저가 URL을 통해 특정 JSP 페이지를 요청. |
2 | 웹 서버가 서블릿 컨테이너에 전달 | 웹 서버가 요청을 서블릿 컨테이너로 전달. |
3 | 필터 동작 (요청 처리) | 서블릿 실행 전, 필터가 요청 데이터를 처리하거나 선행 작업(인증, 로깅 등)을 수행. |
4 | JSP → 서블릿 변환 (최초 요청 시) | JSP 파일이 서블릿 자바 파일(.java)로 변환되고, 컴파일하여 서블릿 클래스(.class)가 생성. |
5 | 서블릿 클래스 실행 | JSP 페이지의 자바 코드가 실행되어 동적 콘텐츠를 생성하고, 비즈니스 로직을 처리. |
6 | 필터 동작 (응답 처리) | 서블릿 실행 후, 필터가 응답 데이터를 가공하거나 후속 작업(압축, 로깅 등)을 수행. |
7 | 최종 HTML 반환 | 서블릿 컨테이너가 생성된 HTML 코드와 동적 데이터를 포함한 최종 응답을 클라이언트로 전달. |
'💻 Dev > JSP & Servlet' 카테고리의 다른 글
[JSP] 게시판 미니 프로젝트 - MVC2패턴 적용 (0) | 2020.10.26 |
---|---|
[JSP] 11.JDBC(Java Database Connectivity) (0) | 2020.09.16 |
[JSP] 10.세션(Session) (0) | 2020.09.15 |
[JSP] 9.쿠키(Cookie) (0) | 2020.09.10 |
[JSP] 8.jsp request,response (0) | 2020.09.01 |
[JSP] 7.form 데이터 처리 (0) | 2020.08.31 |