터넷을 여행하다보면 ‘우와! 이런 사이트도 있구나!’라고 감탄할 정도로 잘 만들어진 웹페이지를 만나게 됩니다. 이런 웹페이지는 자바, Perl, 자바 스크립트, 비주얼 베이직 스크립트 등 다양한 방법으로 제작된답니다. 이와 더불어 동적 느낌을 더욱 강조하기 위해 최근 각광받고 있는 기법이 바로 ASP(Active Server Pages)죠. 이번호는 독자들과 함께 할 ASP 연재의 첫 시간이므로 ASP가 무엇인지에 대해 꼼꼼히 살펴보도록 하겠습니다.
ASP 개념 따라잡기
ASP는 윈도우 NT서버가 웹서버로 대중화되고 이를 이용한 인터넷 기업이 생겨나면서 더욱 활성화됐습니다. ASP는 기업뿐만 아니라 자신의 홈페이지를 다이나믹하게 꾸미고 싶어하는 일반인에게도 매우 흥미로운 존재로 다가가고 있죠.
자바 스크립트나 비주얼 베이직 스크립트가 웹브라우저에서 실행되는 반면, ASP는 말 그대로 서버에서 실행됩니다. 즉, 겉모습은 비주얼 베이직 스크립트나 자바 스크립트와 비슷한데, 단지 서버에서 실행되는 스크립트라는 점이 다릅니다. 이렇듯 서버에서 실행되는 스크립트이기 때문에 서버 사이드 스크립트라고도 부릅니다.
ASP는 확장자가 *.asp이고, 구분자는 <%...%> 로 나타냅니다. <%...%> 안에 있는 스크립트들은 서버에서 실행되죠. 참! 갑자기 제가 겪었던 일이 생각나네요. 제가 있는 연구실 홈페이지에는 ASP로 짜여진 카운터가 있습니다. 어떤 학생이 브라우저에서 HTML 보기를 한 후 카운터가 ‘4034’를 나타내자 다음과 같은 글을 남겼습니다.
“여기 홈페이지에 달린 카운터는 카운터가 아니네요. 쉽게 카운터를 달 수 있는데... 빨리 고치면 좋겠군요.”
지금 생각하면 웃기는 일이지만, 그 친구도 ASP인지 모르고 한 얘기죠. 다시 말하면 서버에서 실행돼 그 결과만 HTML 형태로 웹브라우저에 보내기 때문에 HTML 보기를 해도 ASP 코드는 볼 수 없습니다.
ASP 파고들기
이제 구체적인 ASP의 개념 파악에 접근해 봅시다. 이미 언급했듯 ASP는 서버에서 실행되고, 그 결과만을 클라이언트에게 제공합니다. 클라이언트가 ASP 페이지를 요구하면, 서버는 요구하는 ASP 페이지를 실행해 그 결과를 HTML 문서 형태로 클라이언트의 웹브라우저에 반환합니다. ASP는 클라이언트의 웹브라우저가 무엇인가 판단해 해당 웹브라우저의 입맛에 맞는 HTML 문서를 제공할 수도 있습니다.
하이퍼텍스트의 역사
ASP는 앞서 얘기했듯이 웹에 대단한 혁신을 가져올 기술입니다. 정적 웹페이지에서 동적 웹페이지로의 전향인 ASP의 발전 과정에 대해 살펴보겠습니다.
◆ HTML
HTML은 단순히 텍스트에 기초한 언어로, 브라우저에 의해 보여지는 문서를 만들기 위해 여러 개의 태그를 이용합니다. 이러한 스크립트가 포함되지 않은 단순한 HTML이나 웹페이지를 ‘정적이다’라고 하지요.
◆ 클라이언트 측 스크립트
일부 개발자들이 HTML 웹페이지의 상호 작용성을 증가시키기 위한 초기 단계에서 스크립트 언어를 선택했습니다. 즉, 프로그래밍 언어를 HTML과 결합해 코드 기반의 기능성을 첨가한 스크립트 언어로 해결하려는 생각이었죠. 이것이 동적인 HTML의 시작이라고 할 수 있습니다.
◆ DHTML
DHTML(Dynamic HTML)은 스크립트를 이용해 태그를 변환시킬 수 있게 하며, 현재 인터넷 익스플로러 4.0 이상에서만 지원되고 있습니다. 마이크로소프트의 노력에도 불구하고 국제적 표준으로 자리잡지 못하고 있지만, 사용이 계속 증가하는 추세입니다.
◆ XML
‘XML(Extensible Markup Language)이 무엇인가?’에 대한 대답은 그리 명확하지 않습니다. XML은 HTML과 달리 사용자 자신이 원하는 태그를 만들 수 있으며, 웹기반 문서의 표현 방식을 사용자가 정의하고, 솔루션을 배포하는 방법을 제시하고 있습니다. 이러한 XML은 차세대 인터넷 문서 작성용 언어로 발전할 가능성이 충분하다고 할 수 있습니다.
◆ ASP
ASP는 어떠한 브라우저에서도 사용 가능한 플랫폼 독립적인 내용을 생성할 수 있기 때문에 새로운 인터넷 기술 중 가장 돋보입니다. 또한 DHTML과 같이 플랫폼 특성을 최대한 활용하는 장점을 이용하기 위해, 인터넷 익스플로러 4.0 이상에 바로 대응할 수 있는 액티브 서버 페이지를 생성할 수도 있습니다.
액티브 서버 페이지의 가장 기본적인 것은 서버 상에 구현된 스크립트라는 것이고, 이러한 스크립트 코드는 클라이언트로부터 페이지 요청이 있을 때 서버 상에서 처리되고, 처리 결과로 나오는 HTML은 호출한 브라우저에 전송됩니다. 또한, ASP는 상호 대화가 가능한 웹애플리케이션 개발을 가능케 합니다. ASP를 사용해 웹기반 인트라넷 애플리케이션뿐만 아니라 인터넷 애플리케이션 까지 손쉽게 개발할 수 있습니다.
ASP를 위한 점검 사항
우선 ASP를 위한 환경이 마련돼야 하겠죠? 먼저 서버 역할을 하는 윈도우 NT서버가 필요합니다. 여기에는 IIS(Inter net Information Server) 3.0 이상이 설치돼 있어야 하구요. 물론, 윈도우 95나 98에서도 퍼스널 웹서버(Personal Web Server)만 설치하면 네트웍 없이도 개인용 컴퓨터에서 공부할 수 있습니다.
◆ 윈도우 NT 4.0 이상 - NT 옵션 팩 4.0 이상
◆ 윈도우 95/98 - 퍼스널 웹서버
이제 기본적인 개발 환경은 준비됐습니다. 다음으로 필요한 것이 ASP를 쉽게 개발할 수 있는 툴입니다. 제 경우에는 비주얼 인터데브(Visual Interdev)를 주로 사용하고, 가끔 메모장을 사용하기도 합니다. 초보자의 경우에는 인터데브를 사용하는 편이 훨씬 나을 듯 하네요. 비주얼 인터데브 6.0은 ASP를 포함한 웹페이지 만들기에 편리한 기능을 제공하고 있습니다.
간단한 ASP 만들기
자, 이제부터 본격적인 ASP 프로그래밍에 들어가겠습니다. 모든 프로그램이 그렇듯 예제를 직접 작성해보지 않고서는 배울 수 없죠. 먼저 ‘Hello World!!!’를 예로 들어 볼까요.
Hello World!!!
Hello.htm로 저장하고 실행하면 ‘Hello World!!!’라고 브라우저 화면에 나타납니다. Html을 이용해 Hello World!!!를 여러 번, 다른 크기로 화면에 나타내고 싶다면 단순한 작업을 반복해야 하기 때문에 번거롭겠지만 ASP를 사용하면 다음과 같이 간단하게 작업할 수 있습니다.
<% For i = 3 To 7 %>
>
Hello World!
<% Next %>
이렇게 작성한 후, Hello.asp로 저장하고 웹브라우저에서 부르면 Hello World!!!가 점점 커지면서 여러 번 보일 것입니다. <% %>안에 있는 스크립트 언어는 ASP 명령어이고, 사용된 코드는 비주얼 베이직에서 사용하는 구문과 동일한 VB스크립트입니다.
보통 ASP는 VB스크립트를 기본 코드 언어로 사용하고 있는데, 만약 J스크립트와 같은 다른 스크립트를 기본 스크립트 언어로 정하고 싶다면 코드의 가장 처음에 <%@LANGUAGE = 스크립트 언어명 %>라 쓰고 작성하면 됩니다. VB스크립트의 경우에는 이 부분을 생략해도 무방하죠.
이번엔 코드 내용을 살펴봅시다. 앞에서 Hello.htm과 Hello.asp가 다른 부분은 <%For i=3 to 7%>, <%Next%>입니다. i가 3부터 7까지 반복하라는 구문인 것을 쉽게 짐작하겠죠? ASP를 하려면 비주얼 베이직 언어를 알아야 합니다. 그렇다고 너무 겁먹지 마세요. 비주얼 베이직은 말 그대로 베이직, 기본이기 때문에 쉽게 배울 수 있답니다.
스크립트 살펴보기
ASP를 만들 때는 단연 스크립트 언어가 필요하죠. 먼저 스크립트의 역할을 살펴보고 스크립트가 뭔지 알아보는 시간을 갖도록 합시다.
◆ 변수에 어떤 값을 할당한다.
◆ 웹서버에 어떤 값을 보내도록 명령한다.
◆ 명령어를 묶어서 하나의 프로세스를 만든다. 프로세서란 컴퓨터가 한 건의 일을 처리하는 단위를 말한다.
스크립트를 실행한다는 것은 스크립트 엔진에 명령어를 보내고 스크립트 엔진이 이 명령어를 해석해 컴퓨터에 전달해 주는 것입니다. 스크립트는 정해진 규칙을 가지고 있고 특정 스크립트, 자바, VB스크립트로 적은 것은 서버가 해당 스크립트를 해석할 수 있도록 스크립트 엔진을 실행시켜야 합니다.
ASP는 VB스크립트와 J스크립트를 지원하지만 대부분의 개발자는 VB스크립트를 사용하고 있습니다. 스크립트 언어를 명시하지 않고 <% %> 를 바로 사용하면 기본적으로 VB스크립트로 인식하게 됩니다.
VB스크립트를 이용한 ASP 프로그래밍
이제 ASP에서 기본적으로 가장 많이 사용하는 VB스크립트 문법을 이용해 ASP 프로그래밍을 실습해 봅시다.
스크립트 헤더
ASP가 스크립트 언어를 인식하려면 다음과 같은 스크립트 헤더가 필요합니다.
<%@LANGUAGE = VBSCRIPT%>
...
<%Response.Write Hello World!!!%>
...
스크립트 헤더는 ASP 파일 맨 앞에 선언돼야 하고, 쓰지 않으면 자동적으로 VB스크립트로 인식합니다.
변수
변수는 데이터를 저장하는 장소를 의미합니다. 변수를 선언할 때는 변수 타입을 정의해 줘야 하지만 꼭 그럴 필요는 없습니다. 다시 말하면, 변수를 정의하는 것은 VB스크립트에서와 마찬가지로 원래는 ‘Dim MyString As Stirng’과 같이 해야 되지만, 바로 ‘MyString=값’과 같이 할 수 있다는 뜻입니다. 다음은 여러 가지 형태의 변수 사용에 대한 예제입니다.
<%@LANGUAGE = VBSCRIPT%>
<%MyNumber=1 '정수형
MyPi=3.141592 '부동소수점
MyString=Hello World '문자열
MyBoolean=True 'Boolean
MyDate=#1999-01-01 12:00:00 AM# '날짜
Set MyObject=CreateObject(Scripting.FileSystemObject) '객체%>
주석문
주석은 프로그램 실행에 관계없이 부가적인 설명을 적어 나중에 프로그램을 볼 때 쉽게 알 수 있도록 달아놓은 설명입니다. VB 스크립트에서의 주석문은 단일 인용부호(‘)로 표시하고 주석 처리부분의 맨 앞에 놓이게 됩니다. 주석문 처리시 단점은 여러 줄을 주석 처리할 때 줄마다 일일이 단일 인용부호(‘)를 표시해 주어야 한다는 것입니다.
<%@LANGUAGE = VBSCRIPT%>
<%Dim MyString'ASP 연습하고 있습니다. ''MyString = Hello World!!! 'MyString = Welcome to My Homepage!Response.Write MyString%>연산
VB스크립트에서 사용하는 연산자는 대부분 익숙할 것입니다. <표 2>를 참고해 여러 가지 계산하는 예제를 살펴봅시다.
아래의 예제는 연산자 &를 이용해 MyString1의 ‘Hello World!’와 HTML 태그의 ‘< BR >’과 MyString2의 ‘Welco me to My Homepage!’라는 문자열을 연결해 브라우저에 보내주는 예제입니다.
<%
Dim MyString1, MyString2, MyString3
MyString1 = Hello World!
MyString2 = Welcome to My Homepage!
MyString3 = MyString1 &
& MyString2
Response.Write MyString3
%>
다음과 같이 해도 결과는 똑같습니다.
<%
Dim MyString1, MyString2, MyString3
MyString1 = Hello World!
MyString2 = Welcome to My Homepage!
MyString3 = MyString1 +
+ MyString2
Response.Write MyString3
%>
<표 1> 데이터 타입에 따른 설명
문자열 변수에서는 +연산자도 &연산자와 마찬가지로 연결시켜주는 역할을 하게 됩니다. 예를 좀더 살펴볼까요.
<%
Dim a, b, c
a = 3
b = 0.141592
c = a & b
Response.Write c
%>
앞과 같이 하면 어떻게 될까요? 3.141592가 출력될까요? 아니면 30.141592가 출력될까요? a는 정수이고 b는 문자열입니다. 연산자 &를 사용하면 &는 문자열 연결 연산자로서 30.141592가 출력됩니다. 이해가 안되면 <표 2>를 참고하세요. 그럼, 다음과 같이 &를 +로 바꾸면 어떻게 될까요?
<%
Dim a, b, c
a = 3
b = 0.141592
c = a + b
Response.Write c
%>
<표 2>를 보면 +는 더하기 연산자이지요. 당연히 3 + 0.141592해서 3.141592가 나올 겁니다. 한 쪽이 숫자와 숫자형 문자열을 + 연산하면 그냥 더하기가 됩니다. 만약 a, b 변수 모두 문자열로 되어 있고 +연산을 한다면 어떻게 될까요? 두 수가 합해져 3.141592가 나올 것 같지만, 마소 독자들은 30.141592라고 대답했겠죠? +연산자일지라도 문자열일 경우에는 연결 연산자인 &연산자와 똑같은 역할을 하지요.
조건문
If∼Then 문장은 다른 프로그램에서와 같이 조건의 참과 거짓을 판별해 그 결과에 따라 정보를 처리하는 역할을 합니다. 예제를 통해 사용법을 익혀 봅시다.
<%
If Time >= #06:00:00 AM# And Time < #12:00:00 PM# Then
Greeting = Good Morning!
Else
Greeting = Hello!
End If
%>
<%=Greeting%>
앞의 코드를 작성해 실행하면, 오전 6시부터 12시까지는 “Good Morning!”을, 나머지 시간에는 “Hello”를 브라우저에 나타내 줍니다. <%=변수%>는 변수값을 출력하라는 뜻입니다. 이것을 이용하면 자신의 홈페이지에 들어오는 방문객에게 시간별로 다른 형태의 홈페이지를 보여줄 수 있죠. 예를 들어, 낮에는 해가 뜨게 하고 밤에는 달이나 별이 뜨게 하는 홈페이지를 만들 수 있겠죠? 그리 어렵지 않습니다. 도전해 보세요.
반복 구문
반복 구문에는 For∼Next, Do∼Loop, For Each∼Next, While Wend의 문장이 있습니다. 조건에 따라 반복을 행하는 것을 말합니다. 다음은 pic1.jpg, pic2.jpg, pic3.jpg라는 그림을 반복 구문을 이용해 웹브라우저에 보여주는 예제입니다.
<%
For i=1 to 3
MyImage = image/pic & i & .jpg
%>
Width=100 Height=100>
<%Next%>
<표 2> 연산자
<표 3> 자주 쓰는 비교 연산자
예제에서 자신의 홈페이지 디렉토리에 image란 디렉토리가 있고, 그 안에 pic1.jpg, pic2.jpg, pic3.jpg가 저장돼 있습니다. i가 1부터 3까지 증가해 변수 MyImage에 그림 파일 위치가 저장되고 Img 태그를 사용해 이미지를 브라우저에 나타내고 하이퍼링크했습니다. 이를 이용하면 자신의 홈에 있는 이미지를 전시할 수 있는 이미지 갤러리를 만들 수 있겠죠.
For∼Next와 Exit For를 결합한 형태가 Do∼Loop입니다. <%Do Until x=25%>를 그대로 해석하면 ‘x가 25와 같을 때까지 Do 아래의 문장을 실행하라’는 말이 됩니다. 그냥 그대로 해석하세요. 만약, <%Do While x<100%>라면 ‘x가 100보다 작은 동안 Do 아래 문장을 실행하라’라는 식으로 해석할 수 있습니다. 예제를 통해 더 자세히 알아보도록 하죠. 다음 예제는 모두 구구단 중 2단을 출력하는 것입니다. 방금 알려드린 대로 그냥 그대로 해석해서 보면 이해가 될 것입니다.
2단
<%
Dim x,y,z
x=2
y=1
Do Until y=10
z=x*y
%>
<%=x%> x <%=y%> = <%=z%>
<%
y=y+1
Loop
%>
2단
<%
Dim x,y,z
x=2
y=1
Do While y<10
z=x*y
%>
<%=x%> x <%=y%> = <%=z%>
<%
y=y+1
Loop
%>
2단
<%
Dim x,y,z
x=2
y=1
Do
z=x*y
%>
<%=x%> x <%=y%> = <%=z%>
<%
y=y+1
Loop Until y=10
%>
While∼Wend는 마이크로소프트에 따르면 VB스크립트에 포함되어 있다고는 하지만, 자세히 설명하고 있지 않습니다. 대신에 Do∼Loop를 권하고 있죠. 간략히 살펴보면 While∼Wend도 마찬가지로 ‘∼하는 동안 그 안에 문장을 실행하라’는 말입니다. 다시 말하면 While∼Wend 사이의 문장은 While 부분의 값이 참이 될 때까지 반복된다는 것입니다. 다음은 1∼10까지의 값이 브라우저에 나타납니다.
<%
Dim x
x = 0
While x<10
x=x+1
%>
<%=x%>
<%Wend%>
배열
배열은 목록과 같다고 할 수 있습니다. 식품의 목록을 정해두고 그 것을 불러 올 때 이런 식으로 하면 되겠죠.
<%
Dim food(3)
food(0) = 사과
food(1) = 배
food(2) = 복숭아
For i=0 to 3
%>
<%=food(i)%>
<%Next%>
Dim food(3)에서 3이 food라는 변수에 3개의 기억 장소를 만들어 준다는 것이구요. food(0), food(1), food(2)와 같은 식으로 0부터 배열이 시작되죠. 생각보다 쉽죠? 하지만 일일이 다 사과나 배 복숭아…등등을 하나의 ASP 파일에서 주먹구구식으로 집어넣기보다는 깔끔하게 정리정돈해 줄 수 있는 저장 창고, 즉 데이터베이스에 보관해 둔다면 더 좋겠죠? 데이터베이스 관련 사항은 다음 기회에 자세히 살펴보겠습니다.
DB의 기본기를 다져봅시다
이번호에서 ASP의 개념과 준비 사항, ASP 프로그래밍을 위한 VB스크립트 문법에 대해 살펴보았습니다. ASP의 기본적인 개념을 알고 VB스크립트 문법을 숙지하는 것이 이번호의 핵심이라고 할 수 있겠죠.
처음엔 필자도 인트라넷을 만들라는 교수님의 말씀에 울며 겨자먹기 식으로 ASP를 접했지만, 지금은 어느 정도 실력이 쌓여 재미와 자부심을 느끼고 있답니다. ASP가 인터넷 전자상거래를 비롯해 기업이나 연구소의 인트라넷, 학교에서의 원격 강의 등에 다양하게 이용되고 있다는 사실, 잘 아시죠?
이렇게 거창한 것 말고도 자신의 홈페이지를 데이터베이스와 연결해 게시판이나 방명록, 자료실 등 좀 더 멋지게 꾸밀 수 있을 것입니다. 다음호에서는 ASP의 다양한 객체와 Global.asa, 데이터베이스의 기초에 대해 예제를 통해 자세히 살펴보도록 하겠습니다. @











