반응형
* 2-tier의 단점?
*Html과Java Server Page 동작원리
* servlet과 jsp
- client에서 거의 모든 기능을 처리하기 때문에 프로그래밍하는 것은 편하지만 유지 보수 및 확장을 하는데 힘들다.
요즘 세상 처럼 변화하는 사용자의 요구를 받아들이기 위해서는 확장성과 유지 보수성이 좋아야 한다.
* 3-tier
- client - web server - data server
- client : client는 단지 보여주기 위한 기능만 담당
- web server : client의 view의 기능을 제외한 기능을 담당
- data server : data를 처리하는 기능을 담당
*ASP와의 차이
- ASP가 각광 받던 이유는 SCRIPT 언어라 사용의 용이함 때문이었다. ASP는 매번 번역되는데 비해 JSP는 한번만 번역을 한다.
- 페이지 요청 -> JSP -> servlet(자바 파일이기때문에 컴파일이 있어나 클래스 파일이 생성되 web server에 컨테이너 pool에 들어가 있는다. 페이지에 대한 첫번째 요청때 생성되기 때문에 두번째, 세번째 요청때에는 컨테이너 풀에 있는 것을 사용한다. 일정시간 동안 요청이 없다면 컨테이너에서 자동 삭제 된다.)
*Compile 언어와 Script언어의 차이
Compile 언어는 실행파일을 만든다.(번역을 해서...)
Script 언어는 실행파일을 생성하지 않는다.(?) - web browser에서 번역
*servlet과 jsp
*Html과Java Server Page 동작원리
* servlet과 jsp
- Servlet은 말 그대로 서버에서 실행되는 프로그램입니다. 서버에서 프로그램을 처리하고 그 결과를 클라이언트에게 전송하는 방식을 사용합니다. JSP또한 같은 구조로 이루어져 있습니다. 하지만 Servlet은 JSP의 아버지 정도 될 것입니다. Servlet이 프로그램 레벨에서 서비스를 처리한다면 JSP는 스크립트레벨에서 서비스을 처리한다고 볼 수 있습니다. 일단 JSP는 내부적으로 Servlet을 사용하고 있으며 스크립트 페이지는 결국 Servlet으로 컴파일 되어 서비스 요청에 응하게 됩니다.
- ServletCGI를 자바에서 구현한 서버 전용 프로그램 모듈.
- Java Server Page서버페이지를 스크립트 레벨에서 프로그램한다. 스크립트로 작성된 JSP는 .class로 컴파일되고 이는 Servlet Container에 적재되어 서비스 된다. 서비스를 요청할 때 서블릿은 인프로세스방식으로 서비스된다.
* JavaScript의 특징
- 자바 스크립트의 장점
- 빨리 개발할 수 있다 - 자바 스크립트는 컴파일 언어가 아니기 때문에 컴파일하는데 시간을 허비할 필요가 없습니다. 그만큼 시간을 절약할 수 있겠죠.
- 배우기가 쉽다 - 자바 스크립트는 자바라는 언어와 매우 유사합니다. 하지만 자바라는 넘보다 가볍죠. 자바가 C++에서 포인터 개념만 제외한 것이라고 한다면 자바 스크립트는 그 밖의 더 복잡한 문법이나 룰을 제거한 거라고 생각하시면 됩니다.
- 플랫폼에 의존하지 않는다 - 자바 스크립트는 하드웨어나 O/S 에 상관없이 작동하도록 설계되어 있습니다. 넷스케이프나 익스플로어 같은 자바 스크립트를 지원하는 브라우저만 있다면 어디서나 작동을 한다는 말이죠!
- 객체지향 언어다 - 이것은 객체를 미리 만들어 놓고 계속 사용할 수 있다는 것을 의미합니다. 재 사용이 가능하다는 거죠.
- 자바 스크립트의 단점
- 적용하는데 한계가 있다 - 프로그램을 배우기가 쉽고 컴파일을 하지 않지만 그래서 표현하는데 한계가 있습니다.
- 개발된 코드가 웹상에 노출된다 - 자바 스크립트는 앞에서 말한 것과 같이 HTML Tag 안에 들어가기 때문에 자바 스크립트를 사용한 페이지를 소스보기로 보면 누구나 보고 재 사용할 수 있죠. 열씨미 혼자서 멋지게 만들어도 다른 사람이 카피해서 사용할 수 있다는 얘기입니다. 별도의 자바 스크립트 파일을 만들면 어느 정도는 감출 수도 있겠죠.
- 디버깅 하거나 개발할 수 있는 툴이 별로 없다 - C++이나 자바 애플릿 같은 것은 개발 툴이 따로 있죠. 하지만 자바 스크립트는 없습니다. 열씨미 노가다루 직접 만들어야 한다는 거죠. 하지만 디버깅 툴은 있습니다. 그렇게 파워풀 하지는 않지만 마이크로 소프트에서 제공하는 디버거가 있거든요. 익스플로어 4.0에서 작동하는 디버깅은 일반 공개자료실에서 구할 수 있을 겁니다. 5.0은 아마 비쥬얼 스튜디오 안에 있을 겁니다.
- 자바 스크립트의 구성요소
- 자바 스크립트로 프로그래밍 하는 데는 자바 스크립트의 구성요소를 이해하는 게 아마도 도움이 될 겁니다. 이 부분은 그냥 이런 게 있구나 라구 생각하고 넘어가세요.
- 자바 스크립트의 구성요소를 나누자면 다음과 같습니다.
- Client-side JavaScript - 웹 브라우저 상에서 사용되는 자바스크립트를 말합니다. 소스실행 중에 Stop 버튼을 클릭하면 HTML 파일이 나오다가 멈추는 것과 같이 자바 스크립트도 실행을 멈춥니다.
- Core JavaScript - 이 넘은 변수, 함수, 미리 정의된 Object로 구성되어 있습니다. 갑자기 내용이 어렵죠?
- Server-side JavaScript - 요넘은 데이터 베이스를 핸들링 할 수 있다고 하네요. 그리고 권한이 주어진 사용자에게 서버의 파일 시스템에 접근하게도 한다고 하네요
*php, jsp ,asp의 차이점 그리고 장단점
- html과 자바스크립트로 할 수 없는 일이 있답니다. html과 자바스크립트는 클라이언트...즉 웹 서핑하는 사람의 컴퓨터에서 현재 작동중인 브라우저가 실행할 수 있는 명령어(?) 셋트입니다. html로는 정적인 문서를 표현할 수 있구요. 자바스크립트는 CSS와 결합을 해서 클라이언트의 브라우저에서 동적인 화면구성을 지원한답니다. 다르게 말을 한다면 브라우저는 html과 자바스크립트 또는 VisualBasic 스크립트 , CSS 같은 클라이언트측의 웹 언어 외에는 실행 할 수 없답니다.
- 이에 반해 php, jsp, asp, asp.net등등의 서버측 동적 웹 기술은 클라이언트측의 브라우저에서 실행을 할 수 없는 것들입니다. 이들은 사용자의 컴퓨터 브라우저가 아니라 서버측에서 실행됩니다. 하지만 클라이언트측의 브라우저에서 이들 동적 웹 기술로 구현한 페이지에 접근이 가능하죠? 그것은 클라이언트측에서 서버측에 이들 서버측 동적 웹 구현 기술로 구현한 페이지에 접근하면 그것들을 서버측에서 실행해서 그 결과물들을 html로 반환한답니다. 그래서 웹 브라우저에서 접근 할 수 있는거죠. 실제로 asp같은 페이지를 접근해서 소스보기를 해 보면 asp에서 사용하는 VBScript같은 언어로 구현이 되어있지 않은 것을 볼 수 있습니다. 전부 html이죠. 위에서 말씀드린대로 서버측에서 asp명령들을 전부 html로 돌려주기 때문이죠.
- php, jsp, asp.net등도 마찬가지입니다.
이들이 왜 필요하냐면... 혹시 html잘 쓰신다면 궁금하시지 않았을까 싶습니다만... html로 게시판 구현이나 로그인이 가능한가요? 물론 자바스크립트로 억지로 비슷하게나마 만들 수 있습니다만... 이들은 서버측에서 실행되는것이 아니니 로그인 해봤자 자신의 컴퓨터에 로그인한거죠. 다른 컴퓨터의 사람들은 글을 남길수도 없고 볼 수도 없습니다.
asp같은 서버측 동적 웹 페이지 구현 기술은 게시판에 글을 남기면 보통 데이터베이스에 저장하였다가 누군가가 페이지 요청을 하면 글 내용을 불러와서 html태그에 글의 내용, 작성자, 날짜, 제목 등등을 결합시켜서 요청자의 컴퓨터에 뿌려주죠. 아까부터 "동적 웹 구현 기술"이라는 말이 계속 나왔는데... 이것은 사용자의 요청에 따라 다른 페이지를 보여줄 수 있다는 말입니다. 어떤 페이지를 보고싶어하면 그 해당 페이지의 내용을 보여주죠. 이해하기 쉬운 예로는 로그인구현이 있겠습니다. 사용자가 id와 password를 입력하여 id와 password가 일치하면 보통 "~님 환영합니다."등의 메시지를 보여주며, 만약 로그인했다는 기록이 없으면 로그인 페이지를 보여주는것... 대표적인 서버측 동적 웹 페이지 구현 기술이라고 할 수 있겠죠. - ASP
- ASP...초창기의 CGI로 대표되는 동적 웹 구현 기술을 간편화 시킨 대표적 기술이죠. 초창기의 CGI는 프로세스 기반이었습니다. 이 말은 사용자가 1사람 접속하면 하나의 게시판 프로그램이 서버에서 실행되고... 10명이 접속하면 10개의 게시판 프로그램이 서버측에서 실행되는 방식이죠. 이러한 방식은 소수의 사용자일경우는 괜찮으나 많은 사람들이 접속하면 서버가 다운되는 일이 잦았습니다. 이를 개선시킨 방법으로 스레드 기반 웹 프로그래밍이죠. 하나의 서버 프로그램이 작동하고 있는 상태로... 다른 사람들이 아무리 많이 작동해도 실행프로그램을 공유해서 실행시키는... 그래서 아무리 많은 사람이 접속해도 하나의 프로그램 인스턴스만 실행됩니다. 그래서 서버의 부담을 많이 줄여주었습니다. 요즘 대부분의 웹 프로그래밍 모델이 이 스레드 방식입니다. 그중에서 ASP는 마이크로소프트가 자사의 IIS라는 서버에서 실행될 수 있는 비주얼베이직 기반의 스크립트 언어를 주로 쓰는 웹 구현 기술입니다. 구현이 매우 쉬우며, 90년대 말에 많은 웹페이지가 ASP로 구현되었었습니다. 지금도 많이 마이크로소프트 윈도우 서버에서 많이 사용되는 기술입니다. 다른 동적 웹 프로그래밍 기술에 비해 보안 취약점이 상당히 많이 발견되었다고 하는데 지금은 많이 개선되었고, 제가 볼 때에는 프로그래머가 제대로 알고 쓰는 사람이라면 큰 문제없이 부담없이 쓸 수 있는 동적 웹 구현 기술입니다.
- PHP
- PHP는 마이크로소프트가 아닌 한 학생이 개인적인 용도로 개발을 시작해서... 지금은 아주 많은 리눅스 공동체에서 즐겨 사용하는 동적 웹 구현 기술입니다. 주로 Apache서버와 MySql데이터베이스와 함께 APM이라고 불리기도 합니다. 가장 이상적으로 구동될 수 있는 환경이란 거죠. 리눅스라는 운영체제부터 오픈소스이며 무료이고...위의 APM셋트 또한... 무료입니다. 마이크로소프트 관련 웹 기술 호스팅 비용의 1/2...작게는 1/3정도의 가격밖에 안하죠. 요즘은 MySql을 유료화 한다는 소문이 돌기도 합니다만... 수많은 PHP커뮤니티들이 있으며 자신이 능력만 있다면 얼마든지 확장도 가능한 것이 PHP입니다. 그리고 검증된 오픈소스 사이트 빌더인 제로보드가 많이 애용되고 있구요. 다만 절차지향의 스크립트 형태로서 요즘 5.0에서 객체지향언어로 많은 변화가 있었다고하나 아직 그리 많이 사용되고 있지는 않은 것 같습니다. 아직 4.x 버전이 많이 사용되죠.
- JSP
- 선의 자바는 초창기에 서블릿이라는 동적 웹 구현 기술을 발표하였었습니다. 철저히 객체지향적인 자바의 장점을 그대로 웹에서 구현 할 수 있는 기술이었죠. 하지만 가장 입문하기가 어려운 기술이었죠. 우선 자바에 대해 어느정도의 지식이 필요했고.... 절차지향에 익숙한 사람이 처음 접하면 상당한 혼란을 가져오는 자바의 장점인 객체지향성이 때로는 사람들에겐 걸림돌이었죠. 그리고 화면 인터페이스 구현에 너무 많은 코드가 비효율적이었습니다. 그리하여 인터페이스 구현이 쉬운 ASP의 장점을 수용하여 보다 효과적인 기술이 나오게 되었는데...이것이 JSP입니다. 서블릿과 함께 구동할 수 있으며, 자바 빈즈, EJB같은 기술로 보다 강력한 객체지향적 지원이 가능하죠. 물론 ASP도 윈도우 DNA모델을 사용하면 어느정도 객체지향적인 구현이 가능하나...엔터프라이즈급...돈 많은 회사가 아니면 구현할 환경을 갖추기 힘들었습니다. 자바는 개인 웹 호스팅서버에서도 빈즈를 이용할 수 있었지만... ASP는 서버를 통째로 하나 빌리지 않으면 COM같은 객체를 사용할 수 없거든요. 그리고 아무래도 후발주자인 자바측 기술이 ASP보다 우수해 보이는것은 당연해보입니다. 비교할 대상이 아닌지도 모르지만요.
- 닷넷
- 2000년대 초반부터 조금씩 소문이 퍼지기 시작한 플랫폼이 있습니다. 그것이 바로 21세기 초창기에 가장 많은 기사거리가 되었던 것 중의 하나인 "닷넷(.NET)"플랫폼이죠. 마이크로소프트의 닷넷 플랫폼 기반으로 작동하는 새로운 웹 프로그래밍 구현 기술이 나왔는데 그것이 ASP.NET 입니다. 기존의 ASP랑의 거의 연관이 없어보일정도로 많은 기술적 변화가 있었죠. 자바가 컴파일 기반의 웹 환경을 지원했었는데...닷넷또한 그러했죠. 그렇게 되니 인터프리트 방식의 기존의 ASP랑은 속도면에서 비교가 되지 않죠. 강력한 객체지향 언어의 지원사격을 받으며 등장한 ASP.NET은 현재까지 나온 웹 기반 기술중에는 가장 뛰어나 보입니다. 워낙에 마이크로소프트가 돈이 많은 회사다 보니...홍보도 많이 했고... 포장도 어찌나 잘 했는지...하여간 뭔가 좀 달라보이는 녀석이랍니다. 여타 다른언어에서 어렵게 구현해야 했던 것들을 많이 간편화 시켜줄 것이라고 다들 관심이 대단했었죠. 하지만 기대만큼 아직 그렇게 널리 사용되지는 않습니다. 편하리라는 기대와는 달리 의외로 어렵게 느꼈다는 분들이 많습니다. 자바에서도 마찬가지였지만... 닷넷은 객체지향 개념을 제대로 적용하지 못하고 사용한다면 프로젝트에서 실패할 확률이 높은 그런 기술이랍니다.
728x90
'Computer Science & Engineering > JSP' 카테고리의 다른 글
[JSP] 마지막날 (0) | 2008.02.01 |
---|---|
DataSource 설정 (0) | 2008.01.30 |
[JSP] 3일차 (0) | 2008.01.30 |
[JSP] get방식 (0) | 2008.01.29 |
[JSP] 경로 설정 (0) | 2008.01.28 |
댓글