본문 바로가기

JSP

Servlet 이란 ? JSP 란?

Servlet 과 JSP의 개념

Servlet 개념

  • 서블릿이란 자바 기반으로 만드는 웹 어플리케이션 프로그래밍 기술
  • 자바로 구현 된 CGI(Common Gateway Interface) 라고들 흔히 말한다.
  • 클라이언트(View) 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servelt 클래스 구현 규칙을 지킨 자바 프로그램.
  • 웹 서버의 web.xml 파일서블릿 클래스URL을 함께 등록하여 사용
    (하지만 현재는 어노테이션을 사용하여 URL 맵핑)
    (웹 서버에 있는 web.xml파일은 서블릿 클래스와 URL이 묶음으로 등록. 그래야만 URL로 해당 서블릿 클래스를 찾아서 작동할 수 있기 때문)
  • 웹 브라우저로부터 web.xml 파일에 등록한 URL을 요청받으면 해당 url과 함께 묶음 등록된 서블릿 클래스를 찾아 서버 쪽에서 작동되고 그 결과를 웹 브라우저로 전송.

Servlet 특징

  • 동적 웹어플리케이션 컴포넌트.
  • .java 확장자.
  • 클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용.
  • java thread이용하여 동작.
  • MVC패턴에서 Controller로 이용됨.

Servlet Container

그렇다면 서블릿을 관리해주는 누군가가 있어야 한다고 느낀다. 왜냐면 서블릿은 정의서라고 보았을 때 그 정의서에 따라 누군가 행동을 하기 때문… 그것이 바로 서블릿 컨테이너

  • 서블릿 컨테이너는 서블릿을 관리해주는 역할
  • 서블릿 컨테이너는 서블릿의 생몀ㅇ주기를 관리하여 요청에 따른 스레드를 생성.
  • 클라이언트의 Request를 받아주고 Response를 보낼 수 있게 웹 서버와 소켓을 만들어 통신.

대표적인 Container는 Tomcat이 가장 대중적이다.

Servlet Container 역할

통신 지원
서블릿과 웹 서버가 통신할 수 있는 손쉬운 방법을 제공한다. 우리가 통신을 한다고 생각할 때 소켓을 만들고, 특정 포트를 리스닝하고, 연결 요청이 들어오면 스트림을 생성해서 요청을 받는다고 알고있는데 이 과정을 서블릿 컨테이너가 대신 해주는 것이다. 서블릿 컨테이너는 이런 통신 과정을 API 로 제공하고 있기 때문에 우리가 쉽게 사용할 수 있다.

생명주기 관리
서블릿 컨테이너가 기동되는 순간 서블릿 클래스를 로딩해서 인스턴스화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 찾아서 호출한다. 만약 서블릿의 생명이 다하는 순간 가비지 컬렉션을 진행한다.

멀티스레딩 관리
서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다. 즉 동시의 여러 요청이 들어온다면 멀티스레딩 환경으로 동시다발적인 작업을 관리한다.

선언적인 보안관리
서블릿 컨테이너는 보안 관련된 기능을 지원한다. 따라서 서블릿 코드 안에 보안 관련된 메소드를 구현하지 않아도 된다.
JSP 지원

JSP(Java Server Page) 개념

  • 자바 소스 코드 속에 HTML소스코드가 들어가는 서블릿과는 반대로(예를 들면 writeln(“html 소스코드”) 형태로 Html 소스코드 작성) HTML 소스 코드 속에 자바 소스 코드가 들어가는 구조를 갖는 웹 어플리케이션 프로그래밍 기술.
  • HTML 소스 코드속에 들어가는 자바 소스 코드는 <% 소스코드 %> 또는 <%= 소스코드 =%> 형태로 사용합니다.
  • 자바 소스 코드로 작성된 이 코드는 웹 브라우저로 보내는 것이 아니라 웹 서버 쪽에서 실행되는 부분.
  • 웹 프로그래머가 소스코드를 수정할 경우에도 디자인 작업을 신경 쓸 필요없이 자바 소스부분만 수정하면 되기에 작업효율 상승.
  • 서블릿 기술처럼 컴파일 과정과 웹 서버 등록과정을 할 필요없이 JSP페이지를 작성하여 웹 서버의 디렉터리에 넣기만 하면 된다.
  • 하지만 JSP는 서블릿의 업그레이드 버전이라 생각하면 될 것 이고, JSP또한 WAS에 의하여 JSP페이지를 서블릿 클래스로 변환하여 사용되어 진다.