서블릿(Servlet)
자바를 이용한 동적 페이지를 생성하는 서버 프로그래밍 기술
JSP(java server page)
HTML 내에 자바 코드를 삽입하여 동적 페이지를 생성하는 스크립트 언어
- 지시자: 웹 컨테이너가 jsp페이지를 서블릿 클래스로 변환할 때 필요한 정보를 기술
- <%page %> <%include %> <%taglib %>
- 스크립트릿: jsp 문서 내에 자바 코드를 기술하는 부분
- <% 내용 %>
- 표현식: jsp 페이지내에 자바 식을 표현
- <%= 내용 %>
JSP 전체 동작 과정
- 웹 브라우저에서 URL을 입력
- DNS 서버로부터 입력한 URL을 변환한 IP 주소를 받는다.
- 받은 IP주소의 웹 서버 8080번 포트에 JSP페이지를 요청한다.
- 웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다.
- 화면에 보일 내용을 HTML 문서 형태로 웹 브라우저에 전송한다.
JSP 처리 과정
- JSP는 서블릿 컨테이너에 의해 서블릿 자바 소스로 변환되고, 다시 클래스 파일로 컴파일 됨
- hello.jsp -> hello_jsp.java -> hello_jsp.class
- 변환된 JSP의 서블릿 클래스를 실행하고 웹 어플리케이션 서버의 메모리에 적재하고 사용자 요청에 따라 실행
JSP와 서블릿 컴파일 처리 과정
- 웹 서버로부터 JSP에 대한 사용자 요청이 컨테이너로 전달
- 요청 JSP에 대한 서블릿이 존재하면 다음 단계로 진행하고, 존재하지 않을 경우 JSP를 .java 파일로 변환한 다음 .class 파일로 컴파일 한다.
- 컴파일 된 서블릿 클래스를 컨테이너의 메모리에 적재하고 실행한다.
- 데이터베이스 처리 혹은 별도의 기능을 위한 클래스 호출 등이 있다면 실행하고 결과를 취합해 HTML 형태로 구성한다.
- HTML 형태의 결과를 웹 서버를 경유해 사용자 브라우저에 전달한다.
서블릿과 JSP 차이 그리고 서블릿 컨테이너
- JSP는 HTML과 같은 일반적인 텍스트 파일 구조
- 서블릿은 자바 소스로 작성된 파일 구조
- 서블릿 컨테이너 는 서블릿과 JSP를 실행할 수 있는 환경을 말한다.
- ex)아파치 톰캣: 웹 서버 소프트웨어의 하나로, 서블릿 컨테이너라고도 한다.
JSP와 서블릿 변환과 상태변화
- JSP파일은 일반 텍스트를 비롯해 HTML 코드와 특수태그, 자바 코드가 섞여 있다.
- 서블릿으로 변환된 JSP는 컨테이너에 의해 생명주기가 관리된다.
- 서블릿으로 변환된 JSP는 jspinit() 메서드에 의해 실행되고 ready 상태가 되며 이후 사용자 요청은 _jspService() 메서드가 쓰레드 형태로 호출되어 실행된다.
- 컨테이너에 의해 JSP 서블릿이 종료될 때에는 jspDestroy() 메서드가 실행된다.
Reference
- 모교 웹 프로그래밍 강의 요약