login register Sysop! about ME  
qrcode
    최초 작성일 :    2003년 06월 04일
  최종 수정일 :    2004년 01월 06일
  작성자 :    Dukyoung (김덕영)
  편집자 :    Taeyo (김 태영)
  읽음수 :    81,259

강좌 목록으로 돌아가기

필자의 잡담~

새해에도 언제나처럼 건강하세요... 건강하기만 하다면 언제라도, 뭐든지 다시 시작할 수 있으니까요 ^^

안녕하세요. 초보자를 위한 ASP 강좌 다섯 번째 시간입니다. 지난 시간까지 우리는 ASP 에 대한 개념 정리와, 또 ASP를 본격적으로 공부하기에 앞서 상식적으로 먼저 알고 있어야 하는 사전 지식들에 대해 전반적으로 살펴보았습니다.

오늘은 지난 강좌에서 광고(?)드린 대로, 간단한 ASP 페이지를 직접 만들어보겠습니다. (정말 오래 기다리셨습니다. 이제부터는 '고생 끝 노가다 시작' 되겠습니다. ^^)

그러면 오늘 강좌에서 사용되는 용어에 대해서 잠시 살펴보고 넘어가도록 하겠습니다.

용어 정리
1. 인자 - 함수(Function) 를 실행하기 위해 제공되는 요소. 예를 들어 PLUS 라는 함수가 있고, 이 함수를 PLUS(3, 7) 처럼 실행한다고 하면 괄호 안에서 사용된 3과 7을 PLUS 함수의 '인자' 라고 한다.
2. 소스(source) - 사전적인 의미는 '근본, 원천' 의 뜻을 가지고 있다. 하지만 우리가 말하는 '소스' 란 해당 페이지를 구성하는 '전체 코드' 를 의미한다. 즉 누군가가 여러분에게 '소스를 보여 주세요' 라고 한다면 이 말의 뜻은, '여러분께서 작성한 페이지의 코드를 보여주세요' 라는 말이 되는 것이다. (이때 핫 소스나 토마토 소스를 가져다 주면 상당히 썰렁해진다. 휘잉~)
3. 팝업 메뉴 - 유동적으로 떠다니는 메뉴를 의미한다. 보통 일반적인 메뉴는 상단에 고정되어 있지만, 팝업 메뉴는 위치에 구애받지 않는다. 보통 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나타난다.

여러분들께서 사용하실 편집기 프로그램을 열어주시고 파일을 하나 만들어 보도록 하겠습니다. 바로 아래에 있는 소스(index.asp)를 참고하셔서 asp 페이지를 하나 작성하신 다음 '홈 디렉토리' 안에 'index.asp' 라는 이름으로 저장하시기를 바랍니다.

(제가 이 상황에서 '홈 디렉토리의 위치는 C:\Inetpub\wwwroot가 되겠습니다'  라고 한다면, 여러분들께서는 슬슬 '그 이야기는 이제 지겨운걸?' 이라고 생각하셔야 합니다. 만약 아직도 '홈 디렉토리' 가 무엇인지 모르는 분이시라면 문제가 있습니다. 빨리 ASP 를 익히고 싶은 마음은 이해합니다만, 기초가 없으면 나중에 분명 후회하십니다. 살포시 이전 강좌를 클릭하셔서 '홈 디렉토리' 의 개념을 이해하고 돌아오시기 바랍니다.)

index.asp
<HTML>
<HEAD>
<TITLE>Welcome To Dukyoung.net</TITLE>
</HEAD>
<BODY>
<CENTER>
<% IF Hour(Now) < 12 THEN %>
지금은 오전입니다.
<% ELSE %>
지금은 오후입니다.
<% END IF %>
</CENTER>
</BODY>
</HTML>

생각보다 간단하지 않습니까? 우리가 전에 살펴본 HTML 과 별 큰 차이가 없어 보입니다. '긴장했는데 별거 아니군' 이런 자신감을 가지고 위의 내용을 한번 분석해 보도록 하겠습니다.

위의 소스에서 ASP 부분은 빨간색으로 표시해 보았는데요. 눈치 빠른 분들께서는 ASP 와 HTML 의 차이를 금방 파악하셨을 겁니다. ('글자가 빨갛구만' 은 아닙니다. 눈에 잘 띄라고 빨간색 글씨를 사용한 것입니다. -_-a)

네. 그렇습니다. 저번에 ASP의 개념을 다루면서 이 내용을 잠시 언급한 적이 있었습니다. ASP 는 '<%' 로 열고 '%>' 로 닫는 것이 HTML 과의 결정적인 차이가 된다고 했었지요. 즉, '<% ~ %>' 안에 있는 내용은 HTML 이 아니라 ASP 로 인식한다는 것입니다.

예로 든 index.asp 페이지에서는 세군데의 ASP 코드 부분이 나오는 것을 보실 수 있는데요. 가장 먼저 나온 ASP 코드는 다음과 같습니다.

<% IF Hour(Now) < 12 THEN %>

이 문장을 제대로 이해하기 위해서는 다음 세가지의 내용을 이해하셔야 합니다.

1. Now() 함수
2. Hour() 함수
3. IF ~ THEN (조건문)

그럼 이제부터 이 세가지 친구들을 하나하나 살펴보도록 하겠습니다.

1. Now() 함수

- 영어로 Now 는 '지금' 이라는 뜻입니다. (기쁘게도 아는 단어 나왔습니다.) 이 함수는 컴퓨터 시스템에서의 '현재 시간' 을 표시해 줍니다. (컴퓨터 시스템에서의 현재 시간은 '작업 표시줄' 의 오른쪽 아래에 있습니다.) HTML 과 ASP 의 차이를 설명할 때, 이 함수를 예로 들었었는데 혹시 기억하시나요? 기억하신다면 여러분들께서는 제 강좌를 아주 열심히 공부한 분들이십니다. ^^

Now 함수는 단지 '현재의 시간'을 표시하는 함수이므로 딱히 인자가 필요없습니다. 때문에 'Now()' 또는 'Now' 와 같이 사용할 수 있습니다.(저는 후자를 사용했습니다.)

2. Hour() 함수

- 영어로 Hour 는 '시간' 을 의미합니다. (아는 단어가 계속 나옵니다.) Hour() 의 괄호 안에는 '시간' 을 나타내는 인자가 들어가야 하는데요. Hour() 함수는 '인자로 들어온 시간' 중에서 오로지 '시(時)' 만 반환해 줍니다. 어렵지 않지요?

주의하실 점은 '시(時)' 를 반환할 때에는 24시간으로 환산하여 반환한다는 것입니다. 즉, 오후 6시를 Hour 함수로 나타내면 18 이라는 숫자를 반환하게 되는 것이지요.

여기서 깜짝 광고를 하나 하겠습니다! Hour() 함수의 자매품이 있는데요.. 년(年)을 나타내는 Year(), 월(月)을 나타내는 Month(), 일(日)을 나타내는 Day() 함수가 있습니다. 아는 단어가 마구 나와서 기분이 좋지 않습니까?

3. IF ~ THEN (조건문)

- '만약 ~ 이라면' 이라는 뜻을 가진 'IF ~ THEN' 문에 대해 알아보겠습니다. 이 함수는 ASP 에서 사용되는 수많은 함수들 중에서 가장 많은 빈도수를 자랑하는 함수입니다. 그만큼 유용하고, 또한 미리 친해두면 두고두고 좋은 함수라는 뜻이지요. (비단 ASP 뿐만 아니라 어떤 프로그래밍 언어에도 존재하는 약방의 감초같은 함수입니다.)

IF 와 THEN 사이에는 '참(TRUE)' 또는 '거짓(FALSE)' 을 판별할 수 있는 조건이 들어갑니다. 그래서 참이냐 거짓이냐에 따라서 각기 다른 행동을 취하게 됩니다. (즉, 결과가 달라지지요.) IF ~ THEN 문은 다음과 같은 형식을 가지게 됩니다.

IF 조건 THEN
    참일 때의 처리 실행.
ELSE
    거짓일 때의 처리 실행.
END IF

여기에 대한 간단하게 예를 하나 들어보겠습니다.

IF (덕영이 = 꽃미남) THEN
    message = "당근이지"
ELSE
    message = "그럴리가 없어"
END IF

참으로 깜찍하고 진실된 예라 아니할 수 없는데요. (돌 던지지 마세요. -_-a) 위의 예제는 message 라는 변수에 값을 입력하는 간단한 IF ~ THEN 구문이 되겠는데요. 보시다시피 조건의 결과에 따라서 message 변수에 각기 다른 문자열을 입력하게 됩니다.

만약 '덕영이가 꽃미남이라면' message 라는 변수에는 "당근이지" 라는 문자열이, 만약 (그럴리는 없지만) '덕영이가 꽃미남이 아니라면' message 라는 변수에는 "그럴리가 없어" 라는 처절한 문자열이 들어가게 되는 것이지요.즉, message 에 어떤 값이 들어있을지는, 이 조건문을 실행해 봐야 알 수가 있는 것입니다.

자 그럼.. 아까 예로 든 index.asp 페이지 본문으로 다시 돌아가 보도록 하겠습니다.

이제는 처음 등장한 ASP 부분인 'IF Hour(Now) < 12 THEN' 이 이해가 되시나요? 이 부분을 풀어서 설명하면 '지금 현재 시간 중에서 시(時)가 12보다 작다면'.. 즉 '지금이 오전인가?' 라는 물음이 되겠습니다. (풀어 놓으니 별거 아니지요?)

만약 지금이 오전 10시라면 어떻게 될까요? 그렇다면 일단 IF ~ THEN 은 '참(TRUE)' 이 될 것입니다. 지금이 오전이기 때문이지요. 그러므로 IF 문 바로 다음줄에 있는 '지금은 오전입니다.' 라는 내용이 출력되겠습니다.

그렇다면 만약 지금이 오후라면 어떻게 될까요? 이 경우에는 IF ~ THEN 은 '거짓(FALSE)' 이 되겠습니다. 지금은 오전이 아니니까요. 그러므로 'ELSE' 이후의 문장인 '지금은 오후입니다.' 라는 내용이 출력될 것입니다.

ASP 부분인 IF ~ THEN 과 ELSE, END IF 를 사용할 때 시작과 끝에 '<% ~ %>'로 감쌌다는 사실을 여러분들께서는 절대로(!) 잊지 마시기 바랍니다.

자, 그러면 이제 이 페이지를 직접 웹브라우저에서 확인하는 작업이 필요하겠지요? 우리는 지난 강좌에서 내 컴퓨터의 주소(IP)를 확인하는 방법에 대해서 배워보았습니다. 그렇다면 여러분들께서 지금 '홈 디렉토리' 에 저장한 index.asp 페이지를 보려면 웹 브라우저의 주소창에 'http://여러분의 IP 주소/index.asp' 를 입력하시면 됩니다.(잘 뜨는지 실제로 한번 확인해 보시기 바랍니다.)

그런데 내 IP 주소와 상관없이 간편하게 이 index.asp 페이지를 볼 수 있는 방법이 있는데요. 웹브라우저를 열고 주소창에 http://localhost/index.asp' 를 입력해 보시기 바랍니다. 어떻습니까? IP 주소를 찾아서 쳤을 때와 동일한 화면을 보실 수가 있나요? (만약 보이지 않는 분이시라면 그 증상을 '질문과 답변' 게시판에 올려주시기 바랍니다.)

localhost 라는 것은 '현재 사용하고 있는 내 컴퓨터의 주소'를 의미합니다. 하지만 '내 컴퓨터의 주소' 라고 해서 자동으로 나의 진짜 IP 주소를 찾아주는 것은 아닙니다.

지난 강좌에서 잠시 살펴 보았던 'ping' 이라는 명령어를 혹시 기억하실런지 모르겠네요. 'ping' 이라는 명령어는 도스창에서 실행하는 명령어로서 IP 주소를 알아내는 역할을 합니다. 'ping localhost' 라는 명령어를 실행하면 '127.0.0.1' 이라는 값을 확인하실 수가 있는데요. 이 '127.0.0.1' 이라는 IP 주소는 여러분의 진짜 IP 주소가 아닙니다. 여러분들 컴퓨터 자체 내에서만 인식하는, localhost 만을 위한 내부적인 아이피 주소지요.

자, 다음 세가지 주소를 각각 웹 브라우저 주소창에 입력해 보시기 바랍니다.

1. http://여러분의 IP 주소/index.asp
2. http://localhost/index.asp
3. http://127.0.0.1/index.asp

어떻습니까? 모두 같은 페이지가 보이시나요? 다음 그림처럼 말이지요.

그렇다면.. 도대체 1,2,3 번의 차이는 과연 무엇일까요? 1번은 실제의 IP 주소를 통해 접근하는 방식이기 때문에, 지난 시간에 말씀드린 것과 같이 어느 곳에 있는 사람이라도 인터넷만 연결되어 있다면 볼 수 있는 페이지가 되는 것입니다.

하지만 2번과 3번은 말 그대로 '내 컴퓨터' 이기 때문에 오직 '나' 만 볼 수 있는 것입니다. 따라서 이 방법으로는 외부에 있는 사람들은 볼 수가 없는 것이지요. 이해가 되시나요?

자, 그러면 위의 그림의 내용을 살펴보도록 하겠습니다. 제 컴퓨터의 시계는 지금 오후 3시 30분을 가리키고 있습니다. 따라서 위의 화면에서는 '지금은 오후입니다' 라는 글자가 보여지는 것이지요. (현재 시간에 따라서 '오전' 과 '오후' 가 다를 수 있다는 사실은.. 위에서 말씀드렸지요?)

이 화면에서 '마우스 오른쪽 버튼' 을 클릭하시면 팝업 메뉴가 뜨게 됩니다. 이 팝업 메뉴의 중간쯤에 있는 '소스보기(V)' 를 클릭해 주시기 바랍니다. 이 메뉴는 현재 HTML 페이지의 코드인 소스(Source)를 보는 기능인데요. 이 메뉴를 선택하시면 메모장(또는 에디터 프로그램)이 열리면서 여러분들께서 아까 작성하신 ASP 페이지의 소스가 보여지는 것을 확인하실 수가 있습니다. 어떻습니까? 잘 보이나요?

그런데.. 자세히 보시면 우리가 아까 작성했던 소스와 다르다는 것을 발견하실 수가 있습니다. 어디가 다를까요? 그렇습니다. ASP 코드가 살짝~ 빠져 있습니다.

우리는 분명 index.asp 페이지를 이렇게 작성했었습니다.

index.asp
<HTML>
<HEAD>
<TITLE>Welcome To Dukyoung.net</TITLE>
</HEAD>
<BODY>
<CENTER>
<% IF Hour(Now) < 12 THEN %>
지금은 오전입니다.
<% ELSE %>
지금은 오후입니다.
<% END IF %>
</CENTER>
</BODY>
</HTML>

하지만 화면에서의 '소스보기(V)' 로 확인한 소스는 다음과 같습니다. (이것은 현재 시간이 '오후' 일때의 예입니다.)

index[1] - 메모장
<HTML>
<HEAD>
<TITLE>Welcome To Dukyoung.net</TITLE>
</HEAD>
<BODY>
<CENTER>

지금은 오후입니다.

</CENTER>
</BODY>
</HTML>

우리는 ASP 개념을 배우던 지난 강좌에서 ASP 와 HTML 의 차이를 설명하면서, ASP 는 웹서버의 ASP.dll이라는 특별한 파일을 거친다는 말씀을 드린 적이 있습니다.

클라이언트가 서버에게 ASP 페이지를 보여달라고 요청(Request)했을 때, 웹서버는 일단 해당 ASP 페이지를 ASP.dll 파일을 거치게 한다는 내용이었습니다. 이 때 ASP 에 해당되는 부분은 해석 및 실행 과정을 거쳐서 HTML 로 변환이 되고, 클라이언트들은 그렇게 변환된 HTML 을 웹브라우저를 통하여 볼 수 있게 되는 것이지요.

네네.. 말로 하면 쉬운 이야기도 어렵습니다. 다음 그림을 참고하시기 바랍니다.

1. 클라이언트가 웹서버에 index.asp 페이지를 보여달라고 요청을 합니다.
2. 클라이언트가 보여달라고 요청한 페이지가 HTML 이 아닌 ASP 이므로,
   
웹서버는 일단 이 페이지를 ASP.dll 에게 보내서 해석해 달라고 부탁합니다.
3. ASP.dll 은 의뢰 받은 페이지 안에 있는 ASP 부분을 열심히 해석합니다.
    (현재 시간이 오전인지 오후인지 계산하여 오전이라면 '지금은 오전입니다.<BR>' 부분을, 
     오후라면 '지금은 오후입니다.<BR>' 부분을 웹서버로 다시 돌려줍니다.)
4. 웹서버는 이렇게 완전히 해석된 HTML 페이지를 클라이언트에게 돌려줍니다.

그러므로 클라이언트는 ASP 페이지를 요청해도 결과적으로 ASP 코드를 볼 수는 없고, ASP 코드의 실행이 완료된 결과물인 HTML 페이지만을 볼 수가 있는 것입니다. 어떻습니까? 이제 슬슬 이해가 가시나요? (음. 반드시 이해가 가셔야 하는데...)

자. 오늘의 강좌는 여기까지입니다. 오늘은 비록 단순하지만, 우리 손으로 직접 ASP 페이지를 만드는 시간을 가져보았습니다. 오늘 내용이 아무 것도 아닌 것처럼 느껴지실지 모르겠지만, 사실은 상당히 중요한 내용입니다. ASP 의 작동 원리를 이해하는 것이기 때문이지요. 그렇기에 중요하다는 말씀입니다.

여러분들께서 알고 계신, 또한 만들고 싶어하는 '게시판' 이나 '커뮤니티' 같은 친구들도 모두 오늘 배운 ASP 의 작동 원리를 토대로 이루어지는 것입니다. 때문에 이제 여러분들께서도 그런 것들을 만드실 수 있는 준비가 된 것입니다. (아, 물론 지금 당장 만들기는 어렵지요. 성질도 급하셔라.. -_-a)

다음 시간에는 ASP 에서 사용되는 기본 문법에 대해서 알아보려고 합니다. 시원한 음료수라도 한잔 하시면서 오늘 강좌의 내용을 다시 한번 살펴보시기 바랍니다.

마지막으로 오늘 공부해 본 ASP 의 특징에 대해서 가볍게 정리해 보도록 하겠습니다.

1. ASP 는 '<%' 으로 시작하여 '%>' 으로 끝난다.
즉, ASP 의 모든 소스는 '<% ~ %>' 안에 위치한다.
2. ASP 의 소스는 일반 클라이언트들이 해킹을 하지 않는 한 절대로 볼 수 없다.
클라이언트들은 오직 ASP 코드가 실행된 후의 HTML 페이지만을 볼 수 있다.

날씨가 많이 추워지고 있습니다. 모두들 건강 조심하시기 바랍니다. 그러면 다음 강좌에서 뵙겠습니다.

감사합니다. ^^


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})