JSP

[JAVA] 1. JSP개요

leui 2022. 4. 24. 19:52

인터넷은 컴퓨터가 서로 연결되어 TCP/IP라는 통신 프로토콜을 이용하여 정보를 주고받는 전세계의 컴퓨터 네트워크이다. 인터넷을 통해 광범위한 정보와 서비스를 제공할 수 있는데 그 중 한 서비스가 웹이다. 웹은 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 정보 공간으로, 월드 와일드 웹(world wide web)의 줄임말이다. 

 

웹은 기본적으로 클라이언트/서버 방식으로 동작한다. 클라이언트가 특정 페이지를 웹서버에 요청(request)하면 이를 처리한 후 그 결과를 클라이언트에게 보내어 응답(response)하는 것이다. 즉 웹 브라우저에 원하는 웹 서버 주소를 입력하면(요청) 웹 서버가 웹 브라우저를 통해 해당 웹 페이지를 제공한다. 가장 널리 쓰이는 웹 서버는 아파치(Apache), 톰캣(Tomcat), IIS(Internet Information Server) 등이고 JSP에서는 자바 서블릿과 JSP(Java Server Pages)를 지원하는 톰캣을 다룬다. 

 

 

웹 페이지는 크게 정적(static) 페이지와 동적(dynamic) 페이지로 나울 수 있다. 정적 웹 페이지는 컴퓨터에 저장된 텍스트 파일을 그대로 보는 것이고, 동적 웹페이지는 저장된 내용을 다른 변수로 가공 처리하여 보는 것이다.

 

 * 정적 웹 페이지: HTML과 같은 웹 언어, 동적 웹 페이지: JSP (대부분 페이지는 동적 웹 페이지)

 * URL의 구성요소: 프로토콜, 서버주소, 포트번호, 파일경로

 

- 웹 프로그래밍과 JSP

 

웹 프로그래밍 언어는 클라이언트 측 실행 언어와 서버 측 실행 언어로 구분되며, 자바를 기반으로 하는 JSP는 서버 측 웹 프로그래밍 언어 중 하나이다. JSP는 HTML 코드 안에 자바 코드를 추가한다

* JSP는 서블릿 기술의 확장

 

- JSP 생명 주기

JSP페이지의 처리과정에서 JSP 페이지는 하나의 서블릿 프로그램으로 변환되어 실행된다. JSP 컨테이너가 *.jsp에서 *.java라는 서블릿 프로그램으로 생성하고 이 서블릿 프로그램을 컴파일 하여 *.class를 생성한다. 

(*.jsp -> *.java -> *.class)

 

- Translation

*.jsp에서 *.java로 변역하는 단계이다. JSP컨테이너가 JSP소스 파일을 자바 코드(서블릿)로 변환한다. 변역 단계에서 JSP 컨테이너는 JSP파일을 읽고 구문을 분석한다. JSP 컨테이너는 JSP 페이지와 페이지에 사용된 태그 라이브러리를 참조하는 사용자 정의 태그와 표준 디렉티브, 액션 태그의 구문 정확성을 검증한다.

 

- Compilation

다음으로 *.java를 *.class 로 컴파일하는 단계이다. JSP 컨테이너가 번역 단계에서 생성된 자바 코드인 서블릿을 컴파일하여 클래스 파일을 성생한다. 컴파일 단계에서는 자바 코드의 모든 구문을 검사한다. 즉 JSP 페이지 내의 선언문, 처리문, 표현문 등 스크립트 태그를 사용하여 자바 코드의 구문 오류를 검사한다. 

JSP 페이지를 컴파일한 *.class에는 jspInit(), _jspService(), jspDestroy()메소드가 존재한다. jspInit()에서는 로딩과 초기화, _jspService() 에서는 코드를 실행하고 jspDestry()에서는 소멸한다.

 

- Initialzation

*.class를 로딩하고 클래스의 인스턴스를 작성한다. 이때 인수가 없는 생성자를 사용한다. *.class가 로딩되고 인스턴스가 만들어 진다. 이때 JSP컨테이너는 jspInit()를 호출하여 인스턴스가 된 객체를 초기화한다. 일반적으로 초기화는 한 번만 수행되고 데이터베이스 연결, 파일 열기, 룩업 테이블 생성 등을 초기화한다.

 

- Execution

각 클라이언트의 요청에 대해 JSP 컨테이너가 요청 및 응답 객체를 전달하는 _jspService() 메소드를 실행한다. 이 단계는 JSP 생명주기가 끝날 때까지 모든 클라이언트의 요청에 대해 상호 작용한다.

 

- Destruction

JSP 생명 주기를 완료한다. JSP 컨테이너는 실행되고 있는 JSP를 jspDestroy() 메소드를 사용하여 제거한다. 이 메소드는 데이터베이스 연결 해제, 파일 닫기 등을 수행해야 할 때, jspDestroy()메소드를 오버라이딩한다.


* 서블릿(Servlet)이란

네트워크 환경에서 클라이언트가 서버에게 서비스를 요청하고 서버는 요청 받은 서비스를 클라이언트에게 제공하는 과정을 처리하기 위해 웹 서버에서 실행되는 작은 프로그램 단위인 Java 객체를 의미