본문 바로가기
Back/Servlet

Web 개요

by Hyeon_ 2021. 12. 27.

웹(Web) 개념

웹 서비스

  • 인터넷을 기반으로 제공되는 서비스

웹 애플리케이션

  • 웹을 기반으로 작동되는 프로그램
  • 웹 프로그래밍을 통해 구현

웹 프로그래밍

  • 기본적인 클라이언트(Client) / 서버(Server) 방식
  • 정적인 HTML만으로는 데이터가 실시간으로 변화하는 것을 처리하거나 저장하기에는 불가능
  • 동적으로 변화하는 데이터를 처리하고 표시하기 위해서 개발된 것이 CGI, ASP, PHP, JSP, Servlet

정적 웹 프로그래밍

  • 웹 서버에서 보여줄 HTML 페이지, CSS, 이미지, 자바스크립트 등의 파일을 미리 저장해 놓고 브라우저에서 요청할 경우 그대로 전달하는 바식
  • 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 보게 됨
  • 주로 화면의 디자인을 구성하거나 클라이언트의 이벤트를 처리함
  • 환율 정보나 주가 정도 등 실시간으로 또는 데이터베이스에 저장된 데이터를 표시하는 데는 적합하지 않은 방식

정적 웹 프로그래밍 구성 요소

클라이언트

  • 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터 및 소프트웨어(웹 브라우저)

웹 서버

  • 각 클라이언트로부터 요청을 받고 서비스를 제공하는 컴퓨터 및 소프트웨어

HTTP 프로토콜

  • Hyper Text Transfre Protocol
  • www 서비스를 제공하는 통신 규약
  • 웹 서버와 클라이언트는 이 프로토콜을 이용해서 정보를 주고받음

HTML

  • www 서비스를 제공하기 위한 표준 언어

JavaScript

  • HTML 웹 페이지의 여러 가지 동적인 기능을 제공하는 스크립트 언어

CSS

  • HTML 페이지의 디자인 관련된 기능 제공 언어

동적 웹 프로그래밍

  • 관리자의 역할을 웹 애플리케이션 서버(Web Aplication Server: WAS)가 수행
  • 클라이언트의 요청이 있을 때 데이터베이스에 접근해서 실시간 정보를 얻어와서 클라이언트에게 전송
  • 초기 동적 웹 프로그래밍에서 사용하는 방식
    • CGI(Common Gate Interface: 공용 게이트웨이 인터페이스)
    • 대표적인 CGI 언어 : 펄(Perl)
    • 프로세스 방식으로 실행
    • 프로세스 마다 메모리에 로드하는 방식으로 메모리에 과부하 발생하는 문제
  • 문제 해결을 위해 나온 기술 : JSP, ASP, PHP
    • 브라우저 요청 시 스레드 방식으로 실행하기 때문에 CGI보다 효율적으로 기능 수행
    • 클라이언트 요청을 처리하는 기능은 최초 한 번만 메모리에 로드
    • 동일한 기능 요구 시 기존에 사용한 기능 재사용
    • => 프로세스 방식으로 동작하는 것보다 훨씬 빠르게 수행

웹 서비스 구성 요소(동적 웹 프로그래밍 기반 의미)

  • 웹 브라우저 : 클라이언트, 사용자의 작업 창 (HW/SW)
  • 웹 서버 : 웹 브라우저의 요청을 받아들이는 곳 (HW/SW)
  • 웹 애플리케이션 서버 (WAS)
    • 요청된 페이지의 비즈니스 로직 및 데이터베이스와의 연동을 처리
    • Apache Tomcat
  • 데이터베이스 : 데이터 저장소

웹 서비스 구조 및 처리 순서

웹 서버

  • 웹에서 서버 기능을 수행하는 프로그램
  • HTTP 프로토콜을 기반으로 웹 클라이언트(웹 브라우저)로부터 요청을 서비스하는 기능을 담당한다.
  • 정적인 컨텐츠(HTM, CSS 등) 제공
  • 동적인 컨텐츠 요청은 웹 컨테이너에게 보내고 웹 컨테이너가 처리한 결과를 클라이언트에게 응답

웹 서버 종료

  • Apache
  • IIS (Internet Infromation Server) : MS

웹 컨테이너 (Web Container)

  • 웹 애플리케이션을 실행할 수 있는 컨테이너
  • JSP와 서블릿(Servlet)을 실행시킬 수 있는 소프트웨어
  • 서블릿 컨테이너라고도 함
    • 웹 서버가 서블릿 자체를 실행하지 못하므로 JVM을 내장한 컨테이너라고 하는 서블릿 실행 환경 필요
  • 서블릿과 JSP에 대한 실행 환경 제공
  • 정적 페이지(static page)에 대한 요청 처리 가능
  • 웹 서버에서 JSP를 요청하면 톰캣(웹서버 + 컨테이너)에서 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고 서블릿 수행 결과를 웹 서버에 전달한다
  • 서블릿의 생명 주기 관리
  • Web Application당 한 개의 Servlet Context객체 생성

웹 컨테이너가 사용자의 요청에 응답하는 순서

  1. 클라이언트가 HTTP rdquest를 HTTP service (웹 서버)에게 전송
  2. HTTP service는 요청 데이터를 웹 컨테이너에게 전송
  3. 웹 컨테이너가 HttpServletRequest객체와 HttpServletResponse 객체 생성
  4. 웹 컨테이너는 요청된 Servlet의 서비스 메소드를 호출하여 Servlet을 활성화시킴
  5. 웹 컨테이너는 Servlet에 의해 생성된 응답 데이터를 HTTP service(웹 서버)에게 전송
  6. HTTP service(웹 서버)는 HTTP response를 클라이언트에게 전송

요약

클라이언트 요청 -> 웹 서버 -> 웹 컨테이너 (서블릿 활성화) 응답 -> 웹 서버 -> 클라이언트

웹 애플리케이션 서버 (Web Application Server : WAS)

  • 웹 서버로부터 오는 동적인 요청을 처리하는 서버
  • 웹 서버 기능 + 웹 컨테이너 기능
  • 기타 기능
    • 트랜잭션, 보안, 트래픽 관리, DB 커넥션 풀, 사용자 관리 등 다양한 기능 제공
  • Apache Tomcat

웹 컨테이너에서 웹 애플리케이션 요청 처리

  • 그 동안 우리는 HTML /CSS / 자바스크립트 실습 시 톰캣을 server로 생성해서 사용했음
  • HTML 파일 입력하고 서버 실행하고
  • 웹 브라우저에서 실행해서 결과 확인
  • http://localhost:8080/HTML01/start.html
  • 서버로 데이터 전송 못했고, 서버로부터 데이터 받지 못했음
  • 이후 JSP와 서블릿, DB 연동을 통해 서버 페이지와 데이터 주고 받을 것임

'Back > Servlet' 카테고리의 다른 글

서블릿 DB 연동(3)  (0) 2021.12.28
서블릿 DB 연동(2)  (0) 2021.12.28
[Intellij]서블릿 DB 연동  (0) 2021.12.28
Servlet 요청 API  (0) 2021.12.28
JSP와 Servlet(서블릿)  (0) 2021.12.28