웹(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객체 생성
웹 컨테이너가 사용자의 요청에 응답하는 순서
- 클라이언트가 HTTP rdquest를 HTTP service (웹 서버)에게 전송
- HTTP service는 요청 데이터를 웹 컨테이너에게 전송
- 웹 컨테이너가 HttpServletRequest객체와 HttpServletResponse 객체 생성
- 웹 컨테이너는 요청된 Servlet의 서비스 메소드를 호출하여 Servlet을 활성화시킴
- 웹 컨테이너는 Servlet에 의해 생성된 응답 데이터를 HTTP service(웹 서버)에게 전송
- 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 |