[CS] JSP (1) - 웹 애플리케이션이란?

정유진·2024년 9월 16일
0

etc

목록 보기
3/4

Web Application

구성요소 4가지

  1. 웹 클라이언트
  • 웹 브라우저는 웹 서버에 요청을 보내고 응답 결과를 출력한다.
  • 우리가 흔히 쓰는 크롬 브라우저를 생각하면 됨
  1. 웹 서버
  • 클라이언트의 요청을 처리하도록 프로세스 관리
  • 요청을 처리한 결과인 응답을 클라이언트에 보냄
  • 정적 자원 반환
  1. 웹 애플리케이션 서버 (웹 컨테이너)
  • WAS
  • 웹 애플리케이션의 실행환경
  • JSP 프로그램 / 서블릿을 실행시키고 결과를 웹 서버에 전달
  • 비지니스 로직에 따라 동적으로 결과 생성 (웹 컨테이너)
  • 동시성 관리, 보안, 부하, 장애 처리까지 포괄적으로 봤을 때 WAS라고 칭함
  1. 데이터베이스
  • 웹 서비스 수행에 필요한 데이터를 저장하고 제공

클라이언트 렌더링

  • 웹 문서 자체에 동적 요소를 포함시켜 클라이언트에 전송
  • script를 브라우저가 해석해서 페이지를 생성
  • dovmfflt, Javascript, 플래시
  • 서버 부담을 줄일 수는 있지만 보안 이슈

서버 렌더링

  • 클라이언트에게서 받은 요청 메시지를 기반으로 응답 문서를 서버에서 동적으로 생성
  • 웹 애플리케이션 서버가 수행한 결과가 웹서버를 통해 브라우저에 전송
  • 서블릿, JSP, ASP, PHP, CGI
  • 서버에 자원 사용의 부담이 있음

컴파일 방식

  • 컴파일 과정을 통해 실행 파일이나 바이트 코드로 만들어져서 사용됨
  • 컴파일을 통해 중간 과정 코드가 생성됨, 이후에는 생성된 바이트 코드를 재사용함
  • java 서블릿, JSP도 컴파일 방식임
  • Perl, C, C++ 을 이용한 CGI 방식

vs. 비컴파일 방식

  • 매 요청마다 스크립트를 해석하여 실행하는 방식
  • javascript같은 스크립트 언어

CGI가 무엇이죠?

  • Common Gateway Interface
  • 고급 언어 프로그램을 실행시켜 HTML 코드를 생성한 후 전달함
  • 초기에 사용된 기술
  • WAS와 비교하여, 클라이언트 요청이 있으면 해당 프로그램을 실행시키기 위해 개별 프로세스를 생성 -> 요청의 개수만큼 프로세스를 생성하기 때문에 요청이 증가할 경우 서버 부하가 발생

WAS

  • 웹 애플리케이션을 실행하고 관리하는 별도의 전담 프로그램
  • 서버 렌더링으로 문서를 만드는 것은 CGI와 다르지 않지만 모든 요청에 대해 매번 프로세스를 생성하지 않고 하나의 자바 JVM내에서 수행함
  • 하나의 프로세스 안에서 스레드를 만들어서 처리함
  • 훨씬 실행 효율적
  • 웹 페이지 생성 외에도 많은 기능을 수행할 수 있음!
  • API 제공, 부하 균형(로드밸런싱), 고장 조치 등
  • 자바 기반이지만 .NET 지원하는 것도 있음
  • 서버 성능 개선을 위해 웹서버의 기능을 분리한 것이라고 생각하면 됨 (비즈니스 로직에 따른 정적 저리를 웹 서버가 WAS에 일임)

웹 서버와는 무슨 차이?

  • 클라이언트로부터 요청을 받고 결과를 전달함
  • Apache HTTP Server, lls (MS Window 한정), Nginx 등이 있음
  • HTTP 프로토콜을 사용해 클라이언트와 통신하기에 HTTP 서버라고도 함
  • 클라이언트가 요청한 웹 문서를 찾아 전달
  • 클라이언트 요청에 대한 기본적 사용자 인증을 처리하고 문제가 있으면 정해진 코드 값으로 응답

서블릿

  • Server + Applet (클라이언트에서 작동하는 Java 프로그램)
  • 웹 페이지를 동적으로 생성하기 위한 서버 단 자바 클래스
  • 자바로 서블릿 클래스를 만들고 컴파일 된 바이트 코드(클래스 파일)를 서버에 탑재하여 웹 서비스 제공
    - 소스가 수정되면 다시 컴파일 하여 서버에 탑재해야 함
    • jsp는 따로 컴파일할 필요가 없고 파일만 교체해두면 자동으로 WAS가 바이트 코드를 만들어 두는 것과는 차이가 있음

웹컨테이너로서의 WAS

  • 서블릿 컨테이너라고도 함
  • 웹 컴포넌트를 저장하고 서블릿의 생명 주기를 관리함
  • 클라이언트의 서블릿 요청을 실행시키는 역할
  • JSP를 서블릿으로 변환하는 기능 (이 기능에만 집중해서 JSP 컨테이너라고 부르기도 함)
  • Tomcat, WidFly, WebLogic, WebSphere, JBoss

JSP

  • 서블릿 대신에 사용할 수 있는 간단한 스크립트 형식의 언어로 HTML 페이지 내에 삽입
  • WAS 가 자동으로 JSP 페이지를 서블릿으로 변환(번역)하고 컴파일하여 웹서비스를 제공함
  • Java EE (Enterprise Edition) 를 구성하는 기술 중의 하나

특징

  • 스크립트 언어
  • Java 언어의 특성 활용
  • 표현 언어, 표현식, 액션 태그 등 스크립트 적 요소 제공
  • 다양한 개발환경이 오픈 소스로 제공됨
  • 플랫폼 독립적 (.NET이 윈도우 기반 환경에서만 동작하는 것과 대조됨)

HTTP 프로토콜

  • 전송 계층의 프로토콜인 TCP 프로토콜에 기초한 응용 계층 프로토콜
  • 웹서버와 클라이언트가 통신하는 규약
  • Connection oriented: 연결 설정이 필요함
  • Stateless: 응답 후 서버는 클라이언트의 상태를 유지하지 않음. 웹 서버의 부담이 줄어들지만 상태 관리를 위해 쿠키나 세션 기술을 사용
  • 요청과 응답 절차: 1.연결 설정 2.요청 메시지 전송 3.응답 메세지 전송 4.연결 끊기

요청 메시지 구조

  1. 시작라인
  • 요청 방식, URI, 버전 번호
  • GET /index.html HTTP/1.1
  1. Request Header
  • 한 라인에 하나씩 헤더 정보를 기술
  • "헤더필드이름:값" 요청 헤더의 끝에 공백 라인을 둠
  1. Request Body
  • POST 요청 방식에서 사용
  • HTML 폼에서 작성한 데이터를 POST 방식으로 전송할 때 사용

응답 메시지 구조

  1. 시작 라인
  • HTTP 버전, 서버의 응답 코드, 설명
  1. Response Header
  2. Response Body
profile
느려도 한 걸음 씩 끝까지

0개의 댓글