Programming/Java

[Servlet / JSP] 웹 프로그래밍 기본

seandoesdev 2023. 8. 13. 21:37

 

정적 웹 프로그래밍

정적 웹 프로그래밍 : 아파치와 같은 웹 서버를 이용해서 웹 페이지들을 브라우저에 표시하는 방식. 클라이언트 요청이 오면 응답으로 정적인 파일들(HTML, CSS, JS)을 전송한다. 정적 파일들은 사용자 입장에서 변경되지 않기 때문에 요즘과 같은 real time(실시간)으로 변동이 생기는 홈페이지에는 부적합하다고 볼 수 있다.

정적 웹 프로그래밍의 여러 가지 구성 요소에 대해서 알아보자.

  • 웹 서버 : 각 클라이언트에게 정적인 데이터만 서비스하는 컴퓨터를 의미한다.
  • 클라이언트 : 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터를 의미한다.
  • HTTP Protocol : Hyper Text Transfer Protocol의 약자로, www 서비스를 제공하는 통신 규약을 의미한다. 웹 서버와 클라이언트는 이 프로토콜을 이용해 정보를 주고받는다.
  • HTML : Hyper Text Markup Language의 약자로, www 서비스를 제공하기 위한 표준 언어이다.
  • Javasrcript : HTML웹 페이지의 여러 가지 동적인 기능을 제공하는 스크립트 언어이다.
  • CSS : HTML 문서에서 서체나 색상, 정렬 등 세부적인 HTML 페이지의 디자인에 관련된 여러 가지 기능을 제공한다.

동적 웹 프로그래밍

정적 웹 프로그래밍은 요청이 오면 단순 파일만 클라이언트에게 전송하고 브라우저로 화면을 띄우기 때문에 이펙티브한 결과를 도출해낼 수 없는 단점이 있다. 그래서 나온 방식이 동적 웹 프로그래밍이다.

동적 웹 프로그래밍 : 웹 애플리케이션 서버가 수행되어 클라이언트의 요청이 있을 때마다 데이터베이스에 접속하여 실시간 정보를 클라이언트에게 제공한다.

처음에 동적인 방식으로 프로그램을 제공한 기능은 CGI(Common Gateway Interface)였다. 프로그래밍 언어인 펄(Perl)이 대표적인 CGI 프로그래밍 언어이다.

CGI 동작 방식의 특징

  • 초기 웹 프로그램에서 사용하는 방식
  • 프로세스 방식으로 실행된다. ➡️ 3번째 문제의 원인
  • 서버의 부하가 심하다.

클라이언트가 정보를 요청하면 웹 애플리케이션 서버는 조회 기능을 수행하는 프로세스를 메모리에 생성한다. 긜고 데이터베이스와 연동하여 클라이언트에게 필요한 정보를 반환한다. 다른 클라이언트가 정보를 요청해도 똑같이 프로세스를 생성해서 작업을 수행한다.

⇒ 사용자 수가 증가한 현재에는 서버의 메모리에 많은 부하가 가기에 부적합하다. 그래서 이 문제를 해결하기 위해 나온 것이 JSP, ASP, PHP와 같은 동적 웹 프로그래밍 기술이다.

JSP 프로그램이 특징

기본적으로 스레드(Thread) 방식으로 실행하기 때문에 CGI 방식보다는 효율적으로 기능을 수행한다. 그럼 스레드 방식으로 동작하는 JSP에 대해 알아보자.

클라이언트가 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 메모리에 로드 한 후 정보를 얻어 와서 클라이언트에게 전송한다. 그리고 다시 다른 클라이언트가 동일한 정보를 요청하면 이번에는 기존에 서비스를 담당했던 조회 기능이 메모리에 존재하므로 이 기능을 메모리에 따로따로 로드하지 않아도 된다.

실제로 프로그램의 수행 속도를 떨어뜨리는 요인 중 하나가 프로그램을 외부 장치에서 메모미로 로드하는 것이다. 그런데 스레드는 이 과정을 거치지 않으니 기존 CGI보다 훨씬 빠르게 동작한다.

JSP의 동작 방식의 특징

  • 스레드 방식으로 실행한다.
  • 클라이언트의 요구를 처리하는 기능은 최초 한 번만 메모리에 로드된다.
  • 클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용한다.