관리 메뉴

거니의 velog

(2) 웹 프로그래밍과 JSP - 웹 프로그래밍의 기본 본문

Java_Servlet

(2) 웹 프로그래밍과 JSP - 웹 프로그래밍의 기본

Unlimited00 2023. 8. 21. 09:33

1. 웹 프로그래밍의 기본

* JSP가 나오기 이전에도 웹 브라우저를 통해 웹 페이지를 보여주는 기능은 있었다. 아파치 같은 웹 서버를 이용해서 웹 페이지들을 브라우저에 표시하는 방식이었다. 이러한 방식을 정적(static) 웹 프로그래밍이라 한다.
- 정적 웹 프로그래밍은 웹 서버에 미리 보여줄 HTML, CSS, 이미지, JS 파일을 저장해 놓고 브라우저에서 요청할 경우 그대로 전달하는 방식이다. 따라서 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 보게 된다.
하지만 요즘에는 환율 정보나 주가 정보, 날씨 정보 등 실시간으로 변하는 정보를 웹 페이지에 표시해야 할 일이 많기 때문에 이 방식은 거의 사용되지 않는다.
그래도 여전히 정적 웹 프로그래밍 구성 요소는 JSP에서도 화면 디자인과 기능 처리를 담당하므로 알아두어야 한다.

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

2. 정적 웹 프로그래밍

* 인터넷이 발전하면서 사용자들은 점차 웹 브라우저로 실시간 정보를 제공받기 원한다. 하지만 기존의 정적 웹 프로그램이 새로운 정보를 제공하려면 관리자가 HTML 페이지에서 해당 정보가 표시되는 곳을 찾아 정보를 수정한 후 해당 정보를 클라이언트에게 제공해야 한다.
이런 방식은 웹 기반 프로그램이 처음 나온 초기에는 가능했으나 지금처럼 사용자들에게 제공하는 정보의 변경 속도가 급속도로 빨라지고 있는 현실에서는 사실상 불가능하다.

* 정적 웹 프로그래밍의 특징 요약
(1) 사용자에게 화면 디자인 같은 고정된 정보만 제공한다.
(2) 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보를 제공한다.

3. 동적 웹 프로그래밍

* 동적인 방식 : 관리자가 하던 역할인 정보 변경 및 수정, 삭제 등을 웹 애플리케이션 서버(WAS)가 수행한다.
예를 들어, 실시간 환율 정보가 저장되어 있는 데이터베이스에 클라이언트의 요청이 있을 때마다 데이터베이스에 접근하여 실시간 정보를 클라이언트에게 제공할 수 있다. 최근에는 빠르게 변하는 사용자들의 요구를 만족시키고자 이처럼 동적으로 기능을 처리하는 방식으로 웹 프로그래밍을 수행한다.
* 처음에 동적인 방식으로 프로그램을 제공하는 기능은 CGI(Common Gate Interface, 공용 게이트웨이 인터페이스)였다. 프로그래밍 언어인 펄(perl)이 대표적인 CGI 프로그래밍 언어이다.

* CGI 동작 방식의 대표적인 특징

(1) 초기 웹 프로그램에서 사용하는 방식

(2) 프로세스 방식으로 실행

(3) 서버의 부하가 심함

* CGI 방식은 웹 애플리케이션 서버에서 실행되는 기능들이 모두 프로세스(process) 방식으로 실행된다.
- 클라이언트 1이 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 수행하는 프로세스를 메모리에 생성한다. 그리고 데이터베이스와 연동하여 클라이언트 1에게 환율 정보를 반환한다. 그리고 다시 클라이언트 2에게 환율 정보 요청을 받으면 또다시 환율 조회 기능을 하는 프로세스를 메모리에 생성한 후 기능을 수행한다.
- 이처럼 CGI 방식은 같은 기능을 수행하더라도 각 경우에 대해 처음부터 메모리에 기능을 로드(load)하여 수행해야 한다. 물론 초기 인터넷 환경에서는 사용자 수도 적고 수행해야 할 기능도 적어 이런 방식으로 수행하도 큰 문제는 없었다. 하지만 요즘처럼 인터넷 환경이 발전하고 사용자 수가 급격히 늘어나 동시에 처리해야 할 일이 많은 상황에서 이런 방식으로 서비스 한다면 메모리에 과부하가 걸려 기능 수행에 어려움이 생길 수밖에 없다.
- 이러한 CGI의 문제점을 개선하여 나온 것이 JSP, ASP, PHP 등과 같은 동적 웹 프로그래밍 기술이다.


4. JSP 프로그램의 특징

* JSP는 기본적으로 스레드(thread) 방식으로 실행하기 때문에 CGI 방식보다는 효율적으로 기능을 수행한다.
- 클라이언트 1이 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 메모리에 로드한 후 환율 정보를 얻어 와서 클라이언트 1에게 전송한다. 그리고 다시 클라이언트 2가 동일한 정보를 요청하면 이번에는 기존에 서비스를 담당했던 환율 조회 기능이 메모리에 존재하므로 이 환율 조회 기능을 이용해 환율 정보를 가져온다. 따라서 각각의 요청에 대한 기능을 메모리에 따로따로 로드하지 않아도 된다.
- 실제로 프로그램의 수행 속도를 떨어뜨리는 요인 중 하나가 프로그램을 외부 장치에서 메모리로 로드하는 것이다. 그런데 스레드로 수행하면 이 과정을 거치지 않아도 되니 기존 CGI 프로그램보다 훨씬 빠르게 동작한다.
- 요즘처럼 다수의 사용자가 접속해서 기능을 수행해야 하는 환경에서는 JSP나 ASP, PHP 등과 같이 스레드 방식으로 동작하는 프로그램이 유리하다. 따라서 현재 대부분의 웹 프로그램이 스레드 방식으로 동작한다고 보면 된다. 

* JSP 동작 방식의 특징

(1) 프로세스 방식이 아닌 스레드 방식으로 실행

(2) 클라이언트의 요구를 처리하는 기능은 최초 한 번만 메모리에 로드됨

(3) 클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용함