[JSP] JSP란 무엇인가

mingsso·2024년 3월 12일

JSP

목록 보기
1/5

1️⃣ 웹의 동작

정적 페이지, 동적 페이지

웹으로부터 들어오는 요청에 대한 결과물을 만들기 위해, (=사용자가 보고자 하는 페이지를 생성하기 위해)
웹 서버가 요청을 받은 뒤에 요청을 적절히 처리할 수 있는 웹 서버 프로그램에게로 요청을 다시 재전송하게 됨

요청이 '웹 서버 프로그램'에게 넘겨지게 되면 그 요청을 받은 프로그램은 필요한 결과물을 생성하게 되고 그 결과물을 웹 서버가 다시 받아서 사용자에게로 넘겨주게 되는 것

CGI

Common Gateway Interface
웹 서버와 동적 콘텐츠 생성을 맡은 프로그램 사이에서 정보를 주고받는 인터페이스

  • 개발 언어로 Perl, C 등 어떤 언어도 사용이 가능함
  • 한 요청에 대해 한 프로세스가 생성돼서, 해당 요청을 처리한 뒤 프로세스가 종료되어 버림
    -> 시스템에 많은 부하 (큰 단점)

확장 CGI

  • 전통적인 CGI 방식의 단점을 보완한 기술
  • 동일한 프로그램에 대해서는 하나의 프로세스를 생성한 후 여러 개의 스레드 방식으로 요청이 처리되는 방식이기 때문에, 시스템의 부하를 줄일 수 있음
  • 확장 CGI에 속하는 기술은 ASP, PHP, Servlet, JSP 등이 있음

ASP

  • Active Server Page
  • MS에서 만들어진 확장 CGI 기술
  • 특정 웹 서버와 OS에서만 동작한다는 것이 단점

PHP

  • Personal Homepage Tools, Professional Hypertext Preprocessor
  • ASP와는 달리 특정 영역에서만 동작하지 않고, C언어의 문법과 유사해서 높은 접근성 가짐
  • 적은 명령어들만으로 개발이 가능함
  • 복잡한 요구들에 대한 기능들이 미약하다는 단점

Servlet/JSP

  • Server + Applet
  • 확장 CGI 방식으로 Sun사에서 내놓은 기술로, 자바 언어 기반
  • 자바 코드 안에 HTML 태그가 혼재되어 있어서 효율성이 떨어진다는 단점

JSP

  • Java Server Pages
  • ASP, PHP처럼 HTML 태그 사이 중간에 동적인 컨텐츠 생성을 담당할 자바 코드가 들어가 있는 형태
  • 컴포넌트 기반의 개발이 가능함



2️⃣ JSP란 무엇인가

JSP는 서버측에서 동작하고 웹 서버와 연동이 되어서 동적인 페이지를 생성함
JSP 컨테이너(JSP가 MP3 파일일 때, 플레이어)에는 웹 서버가 내장되어 있음 -> 톰캣이 대표적

JSP의 동작 구조

정적인 페이지에 대한 요청은 웹 서버에서 해결하고, 동적인 페이지(JSP)에 대한 요청은 웹 서버에서 JSP 컨테이너로 다시 전달됨

  1. 사용자의 웹 브라우저에서 http://servername.../***.jsp 의 형태로 요청함
  1. 웹 서버는 ***.jsp 형태로 온 요청에 대해 JSP 컨테이너로 처리하게끔 요청 정보를 넘김
  1. 해당 JSP 파일이 처음 요청된 것이라면 JSP 파일을 파싱(오류 없는지 검사)함
    JSP 파일은 실행을 위해 클래스 파일로 변환되는데 이러한 과정은 JSP 파일이 처음으로 호출되었을 때만 거침
  • JSP 파일로부터 서블릿이라는 새로운 자바 파일이 생성됨
  • 서블릿 파일은 실행 가능한 상태인 클래스 파일로 컴파일됨
  1. 클래스 파일이 메모리에 적재되어 실행됨
  1. 클래스 파일의 실행결과는 다시 웹 서버에게 넘겨져, 웹 서버는 HTML 형태로 사용자에게 응답 내용을 전송함
  1. 웹 서버로부터 받은 응답인 HTML로 구성된 페이지를 브라우저에서 실행시켜서 웹 페이지가 보이게 됨



JSP의 Life Cycle

  • init()
    • 프로그램 수행에 필요한 시스템 자원에 대해 할당 및 초기화 작업을 수행함
    • 메모리에 로드된 서블릿에 대해, service() 함수가 수행될 때 요구되는 자원에 대한 연결, 초기화 등의 작업을 수행함
  • service()
    • 사용자로부터 들어온 요청을 처리함
  • destroy()
    • 요청된 처리를 모두 마친 서블릿은 메모리에서 해제됨
    • 종료될 때 서블릿에서 꼭 수행되어야 하는 동작을 destroy() 메소드에 기술함



3️⃣ Servlet 이해하기

기본적으로 하나의 JSP 페이지는 하나의 서블릿으로 변환이 되고, 다시 컴파일 되어 실행됨
서블릿은 하나의 완전한 자바 프로그램으로, 컴파일을 거친 후에 실행 가능한 상태가 됨

서블릿의 Life Cycle

  1. 브라우저에서 서블릿을 호출하면 WAS는 서블릿 클래스를 로딩함
    (호출되는 서블릿은 web.xml에 매핑이 되어 있음)
  1. 서블릿 클래스가 로딩되면, 인스턴스가 생성되고 init() 메소드가 호출됨 (자바의 main 처럼)
  1. 호출된 서블릿 인스턴스로부터 스레드를 생성하고, 생성된 서블릿 클래스에 있는 service() 메소드를 호출함
  1. 서블릿 종료 시 destory() 메소드를 호출함
profile
🐥👩‍💻💰

0개의 댓글