웹프로그래밍/Jsp&Servlet

[JSP/Servlet] 웹프로그래밍의 이해

닥스훈스 2019. 6. 25. 01:17

웹 문서

웹에서 클라이언트가 서버에 정보를 요청하면 응답하는 콘텐츠

  • 정적인 웹 문서: 클라이언트가 웹 문서를 요청하면, 웹서버는 이미 만들어져 있는 문서를 클라이언트에게 제공
    Ex) HTML, GIF, JPG, PDF, PPT 
  • 동적인 웹 문서:  요청 시마다 다른 웹문서의 내용을 클라이언트로 전달하는 것
    EX) CGI, API, 서블릿, JSP
    다음의 두 가지 방법 중 하나에 의해 처리됨
    1. 클라이언트가 서버에 웹문서를 요청하면 웹문서에 동적인 요소를 포함하는 방식(스크립트 방식) → JSP
    2. 클라이언트가 서버에 웹문서를 요청하면 서버가 다른 애플리케이션을 통해 웹문서를 재생성하여 제공하는 방식 → Servlet

 

웹 어플리케이션

간단하게 웹에서 수행되는 애플리케이션
수행되는 위치에 따라 클라이언트 사이드, 서버 사이드로 나뉜다.

  • 클라이언트 사이드(Client Side): 클라이언트에서 요청한 웹 애플리케이션이 클라이언트에 전송된 다음에 클라이언트 자원을 이용하여 클라이언트에 의해 수행됨
  • 서버 사이드(Server Side): 웹 애플리케이션이 서버에서 일차 수행되면서 서버의 자원을 활용하고, 그 결과를 클라이언트에 전송함

또, 컴파일에 따라 다음과 같이 나뉜다.

  • 컴파일 방식: 웹 어플리케이션이 미리 컴파일되고 실행 파일이 만들어진 후 사용되면
  • 비컴파일 방식: 요청이 있을때 마다 해석되거나 컴파일이 필요 없을 때

 

웹 서비스

네트워크상에 분산된 자원들을 이기종 같에 서로 연동하여 자원을 공유하기 위한 추상적인 서비스 형태
Ex) SOAP 기반 웹 서비스, RESTful 기반 웹 서비스

 

웹 서버

웹에서 서버 기능을 수행하는 프로그램
HTTP프로토콜을 기반으로 하여 웹클라이언트(브라우저)부터의 요청을 서비스하는 기능 담당
HTTP라는 프로토콜을 기반으로 동작하므로 웹서버를 HTTP서버라고도 한다
역할은 클라이언트로부터의 요청을 받는 일, 처리된(서비스) 결과를 클라이언트 응답하는 일로 나뉜다.

  1. 클라이언트가 요청한 웹문서를 찾아 전달한다.
  2. 요청파일이 없거나 문제가 발생하면 정해진 코드 값으로 응답한다
  3. 클라이언트로부터의 요청에 대한 기본 사용자 인증 처리
  4. 서버 프로그램에 대한 요청을 웹 애플리케이션 서버에 수행시키고 그 결과를 응답

웹서버에서 실행되는 애플리케이션 개발 기술은 서블릿, JSP가 있다.

 

서블릿

자바 언어로 구현되는 서버 프로그램

  • 클라이언트가 웹 브라우저를 통해 요청하면 서버에서 실행한 후 결괏값만 클라이언트로 전송한다
  • 컨트롤러(Controller) 페이지를 만들 때 사용한다
컨트롤러(Controller)
뷰에서 들어온 요청을 받아서 처리하는 페이지

JSP를 수행하려면 다음과 같은 환경을 구성해야 한다.

  • 자바 수행 환경
  • 웹서버
  • 서블릿 컨테이너

 

JSP

HTML페이지 안에서 스크립트 형태로 구현 하는 서버 프로그램

  • 서블릿 객체는 변수 선언과 초기화 작업없이 바로 사용할 수 있다
  • 뷰(View) 페이지를 만들 때 사용한다
뷰(View)
단순히 클라이언트가 보는 화면으로서 클라이언트로부터 요청받거나 처리된 결과를 보여주는 페이지

JSP를 수행하려면 다음과 같은 환경을 구성해야 한다.

  • 자바 수행 환경
  • 웹서버
  • 서블릿 컨테이터
  • JSP 컨테이너

 

이렇듯 서블릿과 JSP와 같은 웹서버 애플리케이션들을 동적 콘텐츠를 생성하는 웹 컴포넌트이다.
이 때, 웹 클라이언트로부터의 요구를 웹서버 단독으로 처리하면 서버의 처리량이 많아지고 속도, 보안의 문제가 생긴다

따라서, 웹 서버의 기능을 분리해서 처리하려는 목적으로 웹 어플리케이션 서버를 사용한다.

 

웹 어플리케이션 서버(WAS)

클라이언트로부터 요청받은 일과 화면에 표현하는 로직 → 웹서버
다양한 기능을 수행하는 로직 → 컨테이너가 담당하도록 WAS에서 역할 분담

  1. 웹서버 기능
  2. 컨테이너 기능

이외의 트랜잭션, 보안, 트래픽 관리, DB 커넥션 풀, 사용자 관리 등의 기능 제공
Java EE 기술 지원 웹 서비스 기능 + 서블릿/JSP컨테이너 + EJB 컨테이너 기능
Ex) 톰캣

 

컨테이너

웹컴포넌트를 저장하는 저장소 역할, 메모리 로딩, 객체 생성 및 초기화 등 서블릿의 생명주기 관리, JSP를 서블릿으로 변환하는 기능을 수행하는 프로그램

1. 서블릿 컨테이너

JSP컨테이너에 의해 변환된 서블릿을 수행하는 프로그램

2. JSP 컨테이너

JSP를 서블릿소스로 변환 및 컴파일까지만 담당하는 프로그램