본문 바로가기

자바

웹 프로그래밍의 기본

다른 분야도 그렇지만 jsp가 어느 순간 갑자기 나탄 것이 아닙니다

jsp를 사용하는 이유와 장점을 이해한다면 확실한 목표를 가지고 학습할 수 있을 것 같습니다.

 

jsp가 나오기 전에도 웹 브라우저를 통해 웹 페이지를 보여주는 기능은 있었습니다. 아파치(Apache) 같은 웹 서버를 이용해서 웹 페이지들을 브라우저에 표시하는 방식입니다 

이러한 방식을 정적 웹 프로그래밍 이라고 합니다

 

정적 웹 프로그래밍의 방식은 웹 서버에 미리 보여줄 HTML 페이지, CSS 이미지, 자바스크립트 파일을 저장해놓고

브라우저에서 요청할 경우 그대로 전달합니다

따라서 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 보게 됩니다 

요즘에 환율정보다 주가정 보등 실시간으로 변하는 정보를 웹 페이지에 표시해야 할 일이 많기 때문에

이방식은 거의 사용하지 않지만 정적 웹 프로그래밍 구성 요소는 JSP에서도 여전히 화면 디자인과 기능 처리를 담당하므로 알아두어야 합니다.

 

다음은 정적 웹 프로그래밍의 여러 가지 구성요소들 중 핵심만 요약한 것입니다

JSP, ASP, PHP를 학습할 때 기본이 되는 내용이므로 숙지하기 바랍니다

 

웹서버 : 각 클라이언트 어게 서비스를 제공하는 컴퓨터를 의미합니다

클라이언트 : 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터를 의미합니다

HTTP 프로토콜 : Hyper Text Transfer Protocol의 약자로 www 서비스를 제공하는 통신 규약을 의미합니다

웹 서버와 클라이언트는 이 프로토콜을 이용해 정보를 주고받습니다

HTML : Hyper Text Markup language의 약자로, www 서비스를 제공하기 위한 표준 언어입니다 

자바스크립트 : HTML 웹 페이지의 여러 가지 동적인 기능을 제공하는  스트리트 언어입니다

CSS(style sheet) : HTML 문서에서 서체나 색상 정렬 등 세부적인 HTML 페이지의 디자인에 관련된 여러 가지 기능을 제공합니다

 

정적 웹 프로그래밍

인터넷이 발전하면서 사용자들은 점차 웹 브라우저로 실시간 정보를 제공받기 원합니다

하지만 정적 웹 프로그래밍이 새로운 정보를 제공하려면 관리자가 HTML 페이지에서 해당 정보가 표시되는

곳을 찾아 정보를 수정한 후 해당 정보를 클라이언트에 제공해야 한다

이런 방식이 초기에는 가능하였으나 점차 정보의 변경 속도가 급속 도로 빨라지고 있는 지금 사실상 불가능합니다

 

정적인 방식으로 환율정보를 얻는 과정 

 

                      환율 정보 요청                                                   

                             ->                          환율정보를 수시로 업데이트

       클라이언트                          웹서버                  <-                   관리자

                             <-

                      환율 정보 반환

 

물론 여기서 '환율 정보'는 실시간 변경 사항을 반영한 정보가 아닙니다

하지만 클라이언트는 실시간으로 변경되는 정보를 원합니다

여기서 정적인 웹 프로그래밍 방식의 한계가 명백히 드러납니다

 

지금까지의 정적인 웹 프로그래밍 특징 요약

- 사용자에게 고정된 정보만 제공합니다

- 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보를 제공합니다

동적 웹 프로그래밍

정적인 웹 프로그래밍에서 관리자가 한 역할을 웹 애플리케이션 서버가 수행합니다

따라서 이번에는 실시간 환율 정보 정보가 저장되어 있는 데이터베이스에 클라이언트의 요청이

있을 때마다 데이터베이스에 접근하여 실시간 정보를 클라이언트에 제공할 수 있습니다

빠르게 변하는 사용자들의 요구를 만족시키고자 이처럼 동적으로 기능을 처리하는 방식으로

웹 프로그래밍을 수행합니다.

 

             클라이언트 1        환율정보 요청                                                       환율정보 질의

                                            ->                       ->                                        ->

             클라이언트 3                         웹서버                    웹 애플리케이션 서버               데이터베이스

'                                           <-                       <-                                        <-

             클라이언트3        환율정보 반환

 

 

처음에 동적인 방식으로 프로그램을 제공하는 기능은 CG였습니다 프로그래밍 언어인 펄이 대표적인

CGI 동작 방식의 대표적인 특징은 다음과 같습니다

- 초기 웹 프로그램에서 사용되는 방식입니다

- 프로세스 방식으로 실행됩니다

- 서버의 부하가 심합니다 

CGI 방식은 웹 애플리케이션 서버에서 실행되는 기능들이 모두 프로세스 방식으로 실행됩니다

 

             클라이언트 1    환율정보 요청                                                           환율정보 질의

                                            ->                       ->                                        ->

             클라이언트 2                        웹서버                    웹 애플리케이션 서버               데이터베이스

'                                           <-                       <-                                        <-

             클라이언트 3    환율정보 반환                                 /환율 조회 가능/환율 조회가능

      

 위의 보기는 프로세스 방식으로 동작하는 과정입니다

 

클라이언트 1이 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 수행하는 프로세그를 메모리에

생성합니다. 그리고 데이터베이스와 연동하여 클라이언트 1에게 환율 정보를 변환합니다

그리고 다시 클라이언트 2에게서 환율 정보를 요청받으면 또다시 환율 조회 기능을 하는 프로세스를 메모리에

생성한 후 기능을 수행합니다

 

이처럼 CGI 방식은 같은 기능을 수행하더라도 각 경우에 대해 처음부터 메모리에 기능을 모드 하여 수행해야 합니다

초기 인터넷 환경에서는 사용자 수도 적고 수행해야 할 기능도 적어서 이런 방식이 가능했지만

요즘에는 인터넷 환경이 발전하고 사용자 수가 급격히 늘어나 동시에 처리해야 할 일이 많은 상황에서 이런

방식으로 서비스한다면 메모리에 과부하가 걸려 기능 수행에 어려움이 생길 수밖에 없습니다

 

이러한 CGI의 문제점을 개선하여 나온 것이 JSP, ASP, PHP와 같은 동적 웹 프로그래밍 기술입니다

JSP 프로그램의 특징

JSP는 기본적으로 스레드 방식으로 실행하기 때문에 CGI 방식보다는 효율적으로 기능을 수행합니다

 

 

             클라이언트 1    환율정보 요청                                환율 조회 기능        환율정보 질의

                                            ->                       ->                                        ->

             클라이언트 2                        웹서버                    웹 애플리케이션 서버               데이터베이스

'                                           <-                       <-                                        <-

             클라이언트 3    환율정보 반환                                톰캣, 제우스, 웹로직 - - -

 

클라이언트 1이 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 메모리에 로드한 후 환율 정보를

얻어와서 클라이언트 1에게 전송합니다 그리고 다시 클라이언트 2가 동일한 정보를 요청 시 이번에는 기존에 서비

스를 담당했던 환율 조회 기능이 메모리에 존재하므로 이 환율 조회 기능을 이용해 환율 정보를 가져옵니다

따라서 각각의 요청에 대한 기능을 메모리에 따로따로 로드하지 않아도 됩니다

 

실제로 프로그램의 수행 속도를 떨어트리는 요인중 하나가 프로그램을 외부 장치에서 메모리로 로드하는 것입니다

그런데 스레드로 수행하면 이 과정을 거치지 않아도 도니 기존 CGI 프로그램보다 훨씬 빠르게 동작하겠죠

 

요즘처럼 다수의 사용자가 접속해서 기능을 수행해야 하는 환경에서는 JSP, ASP, PHP와 같이 스레드 방식으로 동작하는

프로그램이 유리합니다 따라서 현재 대부분의 웹 프로그램이 스레드 방식으로 동작한다고 보면 됩니다

 

JSP 동작 방식의 특징은 다음과 같습니다

- 프로세스 방식이 아닌 스레드 방식으로 실행합니다

- 클라이언트의 요구를 처리하는 기능은 최초 한 번만 메모리에 로드됩니다

- 클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용합니다

'자바' 카테고리의 다른 글

서블릿 이해하기  (0) 2020.01.31
웹 애플리케이션  (0) 2020.01.28
자료형(Data Type)  (0) 2019.08.13
변수  (0) 2019.08.12
자바 설치및 변환상수 설정  (0) 2019.08.12