01. JSP 개요

  1. 서블릿(Servlet)과 JSP(Java Server Page)
    • 서블릿은 자바를 이용한 서버 프로그래밍 기술이다.
    • 초기 웹 프로그래밍 기술인 CGI(Common Gateway Interface)를 대체하기 위해 개발되었으나, 느린 처리 속도, 많은 메모리 요구, 불편한 화면 제어 등의 한계로 PHP, ASP 등 서버 스크립트 언어 등장
    • JSP는 PHP와 유사한 형태로 HTML을 중심으로 자바 프로그램과의 유기적인 연결을 지원
    1. JSP의 특징
      1. 자바의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다
      2. 서블릿으로 컴파일된 후 메모리에서 처리되기 때문에 많은 사용자의 접속도 원활하게 처리할 수 있다.
      3. JSP 또는 다른 서블릿 간의 데이터를 쉽게 공유 할 수 있다.
      4. 빈즈(Beans)라고 하는 자바 컴포넌트를 사용할 수 있다.
      5. 커스텀 태그를 만들어 사용할 수 있으며, JSTL(JSP Standard Tag Library)과 같은 태그 라이브러리를 이용할 수 있다.
      6. 스트러츠, 스프링 @MVC 등 다양한 프레임워크와 결합하여 개발할 수 있다.
  2. JSP 학습에 필요한 기술
    • JSP는 웹 프로그래밍 기술로 HTML, 자바스크립트, CSS와 같은 기본 웹 프로그래밍 경험이 요구됨
    • JSP는 자바언어 기반이며 개발 시 순수 자바 코드가 50% 이상으로 탄탄한 자바 기본기가 요구
    • 이외 추가적으로 다음 기술들에 대한 경험이 있다면 고급 웹 프로그래밍 학습에 도움이 됨
02. JSP 처리 과정의 이해
  1. JSP 전체 동작 과정
    • JSP는 HTML과 유사한 처리 과정을 거치나 HTML이 단순 서버 파일을 브라우저로 보내주는 것에 비해 JSP는 서버에서 프로그램이 실행된 결과를 웹 브라우저로 전달하는 차이가 있음                                                        
      1. 웹 브라우저에서 URL을 입력한다
      2. DNS 서버로부터 입력한 URL을 변환한 IP 주소를 받는다
      3. 받은 IP 주소의 웹 서버 8080번 포트에 JSP 페이지를 요청한다
      4. 웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다
      5. 화면에 보일 내용을 HTML 문서 혀애로 웹 브라우저에 전송한다.
  2. 서블릿 컨테이너 내부 과정
    1. JSP와 서블릿 차이
      • JSP는 HTML과 같은 일반적인 텍스트 파일 구조
      • 서블릿은 자바 소스로 작성된 클래스 파일 구조
      • JSP는 서블릿 컨테이너에 의해 서블릿 형태의 자바 소스로 변환되어 클래스로 컴파일 됨
    2. 서블릿 컨테이너
      • 서블릿 컨테이너는 서블릿을 실행하고 JSP를 서블릿 코드로 변환하는 기능을 수행
      • 변환된 JSP의 서블릿 클래스를 실행하고 웹 서버의 메모리에 적재하고 사용자 요청에 따라 실행
        1. 웹 서버로부터 JSP에 대한 사용자 요청이 컨테이너로 전달된다.
        2. 요청 JSP에 대한 서블릿이 존재하면 다음 단계로 진행하고, 존재하지 않을 경우 JSP를 .java 파일로 변환한 다음 .class 파일로 컴파일한다.
        3. 컴파일된 서블릿 클래스를 컨테이너의 메모리에 적재하고 실행한다.
        4. 데이터베이스 처리 혹은 별도의 기능을 위한 클래스 호출 등이 있다면 실행하고 결과를 취합해 HTML 형태로 구성한다.
        5. 4번과 동일
        6. HTML 형태의 결과를 웹 서버를 경유해 사용자 브라우저에 전달한다.
      • JSP 파일은 일반 텍스트를 비롯해 HTML 코드와 특수태그, 자바 코드가 섞여 있다.
      • 서블릿으로 변환된 JSP는 컨테이너에 의해 생명주기가 관리된다.
      • 서블릿으로 변환된 JSP는 jspInit() 메서드에 의해 실행되고 Ready 상태가 되며 이후 사용자 요청은 _jspService() 메소드가 쓰레드 형태로 호출되어 실행된다.
      • 컨테이너에 의해 JSP 서블릿이 종료될 때에는 jspDestroy() 메서드가 실행된다.
    • JSP에 관해 이것만은 알고 있자.
      1. JSP는 일반 텍스트 파일로 되어 있다.
      2. JSP는 HTML 코드와 몇몇 특수한 태그, 그리고 자바 코드가 섞여 있다.
      3. 사용자가 요청할 경우 JSP는 컨테이너(톰캣)에 의해 서블릿 형태의 .java 소스로 변환되고 컴파일 된다.
      4. 컴파일된 .class는 컴퓨터에서 실행할 수 있는 형태로 특정한 기능을 수행할 수 있게 된다. 이후 소스 변경 전까지 해당 파일은 메모리에 상주하면서 다시 컴파일 되지 않고 서비스된다.
03. JSP 프로그램 기술 변천
  1. 서블릿과 JSP 기술 변천
    • 서블릿 : 일반 자바 프로그램을 통해 웹 컨텐츠를 표현함
    • JSP : HTML 기반으로(즉 화면을 중심으로) 프로그램과의 연동을 지원함
    • JSP와 HTML 코드의 혼용으로 인한 문제점 해결을 위한 MVC 패턴 등장
    • 개발 생산성과 확장성 등 개발 수준 향상을 위한 오픈소스 프레임워크 등장
    • 새로운 웹 기술과 새로운 디바이스의 보급 확산
  2. JSP 프로그램 모델 유형 비교
    • 프로그램 모델은 구조와 관련된 것으로 실행결과는 동일하나 프로그램 개발 및 유지보수에는 많은 차이가 있을 수 있다.
    • 빈즈를 이용한 JSP 처리 과정
      1. 웹 브라우저 요청에 대해서 웹 서버가 http 프로토콜에 따라 사용자 요청을 처리한다.
      2. 웹 서버는 HTML과 JSP인 경우를 구분해서 처리한다
      3. 2번과 동일
      4. JSP의 경우 useBean 액션을 이용해서 빈즈 클래스와 연동한다.
      5. 필요한 경우 데이터베이스 관련 작업 등을 처리한다.
      6. 처리한 결과를 보여주는 JSP를 호출한다.
      7. 필요한 경우 결과를 보여주는 JSP에서도 빈즈를 사용할 수 있다.


Posted by OnewayK
,