ASP (Active Server Page) Programming
1. ASP 시작하기
차 례 1.1 웹 서버 동작 방식 1.2 ASP와 동적 웹 페이지 1.3 ASP를 실행하기 위한 준비 차 례 1.1 웹 서버 동작 방식 1.2 ASP와 동적 웹 페이지 1.3 ASP를 실행하기 위한 준비 1.4 첫번째 ASP 예제 요점 정리
1.1 웹 서버 동작 방식
HTTP의 클라이언트의 서버 요청 4단계(Cont.) HTTP는 무상태(stateless) 프로토콜 지나간 요청에 대한 기억이 남지 않음 HTTP의 클라이언트의 서버에 대한 요청 4단계 (1/2) 1 단계) 연결 설정하기 2 단계) 요청하기 프로토콜 버전 method 파일 URL GET /index.html HTTP/1.1 Accept: text/html User Agent: Mozilla/4.0(compatible; MSIE 5.01; Windows 98) (빈 줄) Keyword, 다룰 수 있는 종류 클라이언트가 사용중인 브라우저 종류 요청 완료 표시
Get HEAD: 파일 제목만 받을 때 Post: form 데이터를 서버에 올릴 때 Put: 서버에 파일을 올릴 때
HTTP의 클라이언트의 서버 요청 4단계(Cont.) HTTP의 클라이언트의 서버에 대한 요청 4단계 (2/2) 3 단계) 응답하기 4 단계) 연결끊기 성공을 가리키는 응답코드 HTTP/1.1 OK 200 Server: Microsoft-IIS/5.0 MIME-version:1.0 Content-type:text/html Content-length: 107 (빈줄)
1.2 ASP와 동적 웹 페이지
정적 웹 페이지 정적 웹 페이지 정적 웹 페이지의 한계 일반 텍스트 편집기로 입력된 *.htm 또는 *.html로 구성된 페이지 정적 웹 페이지의 한계 페이지를 요청한 시점에서 새로운 정보를 보여줄 수 있는 새로운 개념의 웹 페이지가 필요
동적 웹 페이지 동적 웹 페이지의 ASP 정적 웹 페이지 동적 웹 페이지
동적 웹 페이지의 장단점 동적 웹 페이지의 장점 동적 웹 페이지의 단점 브라우저에서 지원되지 않는 프로그래밍 언어로 웹 페이지 작성 가능 클라이언트쪽 프로그래밍 요소와 독립적 구성가능 클라이언트에게 없는 데이터도 제공 가능 개선된 보안 기능 제공 각 사용자의 요청을 하나의 ASP 엔진 프로세스내에서 처리하므로, CGI보다 부하 적음 동적 웹 페이지의 단점 원도우즈 제품군에서만 가동
1.3 ASP를 실행하기 위한 준비
IIS (Internet Information Server) 5.0 운영
디렉토리 구성 확인 디렉토리 구성을 다음과 같이 확인할 수 있다. C:\Inetpub\..
MMC를 사용한 IIS 5.0 설정 관리 MMC를 사용한 IIS 5.0 설정 관리하기 MMC(Microsoft Management Console) 실행 스냅인 추가 (iis.msc)
MMS 시작>프로그램>관리도구>인터넷 서비스 관리자 실행: MMC 열기: c:\winnt\system32\inetsrv\iis.msc
가상 디렉토리 만들기 다음 과정에 의해 가상 디렉토리를 만든다. 물리적인 디렉토리에 가상으로 별칭을 할당
권한 설정 하기 아래와 같은 대화상자에서 권한을 설정한다. [등록 정보]의 접근 권한 설정
1.4 첫 번째 ASP 예제
ASP 예제 first.asp first.asp <HTML> <HEAD> <TITLE>First ASP</TITLE> </HEAD> <BODY> 이것은 일반 HTML 문서인데, 확장자를 ASP로 하였습니다. </BODY> </HTML>
ASP 예제 Welcome.asp Welcome.asp <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" content="text/html; charset=ks_c_5601-1987"> <TITLE>내 홈 페이지</TITLE> </HEAD> <BODY TopMargin="0" Leftmargin="0"> <FONT FACE='굴림' SIZE='-2'> <TABLE width='100%' height='100%' cellpadding='0' cellspacing='0' border='0'> <TR><TD Valign='TOP' Align=center><H1><BR>내 홈 페이지</H1></TD></TR> <TR><TD Valign='TOP' Align=center><br><h4>환영합니다!</h4><h5>오늘은 ASP를 처음 배우는 날입니다.</h5></TD></TR> <TR><TD Valign='TOP' Align=center>오늘 날짜 및 현재 시각은 <%=now%> 입니다.</TD></TR> </TABLE></FONT></BODY></HTML>
ASP 코드의 작성 일반적인 HTML코드 작성 가능 확장자가 ASP이므로 ASP엔진을 거침 소스 부분은 <%로 시작, %>로 닫힘 <%= now %>의 ASP코드는 VBScript에 있는 now함수를 ASP가 이용하는 개념 ASP를 이루는 요소 일반 텍스트 HTML 코드 VBScript
요점 정리
요점 정리 마이크로소프트사에서 1996년 7월 16일 데날리(denali)라는 코드명으로 공식 발표 현재 IIS5.0, ASP3.0 버전 출시 HTTP는 무상태(stateless) 프로토콜 동적 웹 페이지는 페이지를 요청하는 시점에 그 페이지를 새롭게 구성하는 행위 ASP는 기존의 스크립트 언어를 사용하여 일정한 형식에 따라 웹 페이지를 동적으로 구성할 수 있는 새로운 도구
Chap2. 기본적인 ASP 문법
차 례 2.1 클라이언트쪽 스크립트와 서버쪽 스크립트 2.2 사용자로부터 정보 얻어오기 차 례 2.1 클라이언트쪽 스크립트와 서버쪽 스크립트 2.2 사용자로부터 정보 얻어오기 2.3 ASP를 위한 변수와 유용한 함수 2.4 ASP 연산자 및 제어구조 2.5 서브 프로시져와 함수 요점 정리
2.1 클라이언트쪽 스크립트와 서버쪽 스크립트
서버쪽 / 클라이언트쪽 스크립트 서버쪽 스크립트 클라이언트쪽 스크립트 서버에 있는 스크립트 엔진에 의해 처리, 최종적으로 브라우저에 보낼 HTML을 생성 클라이언트쪽 스크립트 브라우저 자체가 스크립트 처리 사용자 컴퓨터의 브라우져 웹 서버 2)요청한 페이지를 찾는다. 1)스크립트가 포함된 페이지를 요청한다. 5)브라우져가 우선 클라이언트쪽 스크립트를 처리한다. 3)웹서버가 스크립트 엔진에게 요청하여 서버쪽 스크립트를 처리하여 최종 HTML내용을 얻어낸다. 4)HTML 내용이 브라우져로 전달된다. 6)최종 HTML문서내용이 브라우져 화면에 보여진다.
서버쪽 스크립트 서버쪽 스크립트의 사용 방법 인라인 서버 스크립트 기호 <%…%> 사용 HTML태그인 <SCRIPT>를 사용 <% … 이곳에 VBScript 가 들어간다. … %> <SCRIPT LANGUAGE=VBScript RUNAT=server> … 이곳에 VBScript 가 들어간다. … </SCRIPT>
IIS 의 ASP 페이지 처리 과정 IIS 의 ASP 페이지 처리 과정은 다음과 같다. ① 확장자가 .asp이면 asp.dll에게 파일 처리 넘김 ② 스크립트를 적절한 스크립트 엔진으로 전달 ③ 결과를 다시 asp.dll로 전달 ④ 순수 HTML 문서를 만들어 냄 ⑤ 결과를 웹 서버에 전달 ⑥ 웹 서버가 브라우저에게 그 내용 전달
클라이언트쪽 스크립트 클라이언트쪽 스크립트의 사용 방법 웹 서버에서 실행될 스크립트의 양을 줄여, 서버의 부하를 적게 한다. <SCRIPT>..</SCRIPT>는 기본적으로 client에게 수행되는 것으로 인식 <SCRIPT LANGUAGE=VBScript RUNAT=client> … 이곳에 VBScript 가 들어간다. … </SCRIPT>
2.2 사용자로부터 정보 얻어오기
<FORM> 태그 (Cont.) 사용자에게 정보를 요청 사용자로부터 대답을 얻어낼 수 있는 텍스트 박스나 체크박스 등을 제공 사용자로부터 정보를 서버에게 전달할 수 있는 Submit 버튼을 가짐 Submit 버튼은 새 페이지를 열기 위해 사용 Post를 사용하면 사용자측에서 넘어가는 데이터들의 내용을 전혀 볼 수 없다.
<FORM> 태그 (Cont.) <Form Action="Target ASP Page" Method="get|post" Enctype="…" Script="…"> <Input [Type=Text(default)|PASSWORD|CHECKBOX|RADIO|HIDDEN|SUBMIT|RESET|FILE] Name="name" [Value="value"] [Size="n"] [MaxLength="n"]> <Select Name="name" [Size="n"] [Multiple]> <Option [Selected]>Value </Select> <Textarea Name="name" [Rows="n"] [Cols="n"]> ... </Textare></Form>
<input> 태그의 Type 속성의 종류 설 명 모 습 Text 일반적인 텍스트 입력, 즉 사용자의 ID 및 주소, 주민등록번호등을 입력받을 때 이용된다. Password 입력된 문자가 암호형식(‘***’) 으로 표시되게 하기 위한 것으로, 사용자의 비밀번호등을 입력받기 위해 이용된다. Checkbox On/Off 형식의 선택으로 네모난 상자에 ∨ 표시를 하여 항목 선택을 할 수 있다. Radio 2개 이상의 항목들 중 하나만을 택하기 위해 사용된다. Submit 입력된 내용을 Action 이 지정하는 ASP 파일에 전달하기 위한 것으로 버튼 모양으로 되어있다. Reset 입력된 내용을 초기화시키기 위한 것으로 역시 버튼 모양으로 되어있다. Hidden 브라우저에는 아무 모양이 나오지 않지만, Action 이 지정하는 ASP 파일에 전달할 값이 있을 경우 Value를 이용하여 값을 지정해 줄 수 있다. 모양 없음
<Select> 태그와 <textarea> 태그 태그 종류 HTML 코드 모 습 <Select> 태그 <select name="select"> <option selected>item1</option> <option>item2</option> <option>item3</option> </select> <select name="select2" size="3"> <Textarea> 태그 <textarea name="textfield"></textarea>
Text, Password, Textarea로부터 정보 가져오기 textForm.html 가입할 ID 와 Password 및 자기소개를 입력하세요. <FORM Action="textform.asp" Method="Post" Name="textform"> ID : <Input Type="text" name="id"><BR> Password: <Input Type="password" name="pw"><BR> 자기소개<BR> <Textarea name="desc" Cols=50 Rows=4></Textarea><BR> <center> <Input type="submit" value="전송" name="submitbtn"> <Input type="reset" value="초기화" name="resetbtn"> </center></FORM>
Text, Password, Textarea로부터 정보 가져오기 textForm.asp 당신이 입력한 정보입니다.<BR> <B>ID</B> : <%=Request.Form("id")%><BR> <B>Password</B> : <%=Request.Form("pw")%><BR> <B>자기 소개</B><BR> <%=Request.Form("desc")%>
Checkbox 및 Radio로부터 정보 가져오기
Checkbox 및 Radio로부터 정보 가져오기 <FORM Action="rcform.asp" Method="Post" Name="textform"> <table border=1> <tr><td>관심분야</td><td> <input type="checkbox" name="cp" value="엔터테인먼트"> 엔터테인먼트<br> <input type="checkbox" name="cp" value="컴퓨터/인터넷" checked>컴퓨터/인터넷<br></td></tr> … <P> <Input type="submit" value="전송" name="submitbtn"> <Input type="reset" value="초기화" name="resetbtn"> </FORM>
Checkbox 및 Radio로부터 정보 가져오기 당신의 관심분야와 결혼여부는 다음과 같습니다.<BR><BR> <% Response.Write "<B>" + Request.Form("cp") + "</B> 과 “ … %>
Select로부터 정보 가져오기 선택할 항목의 개수가 많거나, 화면을 더욱 간결하게 꾸미기 위해 사용.
Select로부터 정보 가져오기 <FORM Action="selectform.asp" Method="Post" Name="textform"> <table border=1><tr><td>학력</td><td> <select name="edu"> <option selected>재학생</option> <option>학사</option> <option>석사</option> <option>박사</option> </select></td></tr>………
Select로부터 정보 가져오기 과제 체크 <% Response.Write "<B>" + Request.Form("edu") + "</B> 과 “ %> <% for each Hobby in Request.Form(“intr") Response.Write "<B>" & Hobby & "</B>" + "<BR>" next %>
2.3 ASP를 위한 변수와 유용한 함수
변수의 생성법과 데이터 타입 변수를 생성하는 방법과 데이터 타입 변수의 생성 및 선언 : Dim 하나의 데이터 타입만으로 모든 변수 다룸 : Variant Dim yourCity Dim yourAge Dim yourBirthday yourCity = "Seoul" yourAge = 28 yourBirthday = #7/14/1973# 문자 숫자 날짜
다양한 Subtype 유형의 파악 특수한 Subtype 에 대한 설명 Empty Null 데이터베이스를 이용할 때 사용되며 빈 스트링(“ ”)등과 다르게 아무런 값도 가지고 있지 않음을 나타낸다. Object 특별한 개체를 가리키기 위해 사용된다. Error 오류번호를 포함하며 사용되는 일이 거의 없다.
변수의 선언 방식 변수의 선언 방식 세가지 명시적 선언 (Explicit Declaration) Dim문을 선언하려는 변수 앞에 적는 방식 묵시적 선언 (Implicit Declaration) 미리 선언하지 않고, 필요할 경우 즉시 사용하는 방식 Option Explicit 선언되지 않은 변수의 오류 검출
변수의 형 변환(Type Conversion) 정수형 변수에 소수가 있는 값을 할당하면, 반올림을 통해 가장 가까운 정수값으로 반올림되어 값이 할당 4conversion.asp 함수 설 명 Abs 숫자의 절대값을 반환한다. Asc 문자열의 첫 번째 문자의 ASCII Code를 반환한다. Chr Asc 의 반대되는 기능을 하며, 특정 문자 코드의 해당 문자를 반환한다. CBool 서브타입 Boolean 으로 변환한다. CByte 서브타입 Byte 로 변환한다. CCur 서브타입 Currency 로 변환한다. CDate 서브타입 Date/Time 으로 변환한다. CDbl 서브타입 Double 로 변환한다. CInt 서브타입 Integer 로 변환한다. CLng 서브타입 Long 으로 변환한다. CSng 서브타입 Single 로 변환한다. CStr 서브타입 String 으로 변환한다.
날짜/시간/수학 관련 함수 날짜/시간 관련 함수 수학 관련 함수 Now : 날짜 및 시간을 동시에 가져옴 Data : 날짜만 가져옴 / Time : 시간만 가져옴 Weekday( ) : 인자로 주어진 날짜의 요일을 반환 수학 관련 함수 Cos(pi/3) = <%= Cos(pi/3) %><BR> Sin(pi/3) = <%= Sin(pi/3) %><BR> Tan(pi/3) = <%= Tan(pi/3) %><BR> 자연로그 : Log(num) = <%= Log(num) %><BR> e의 자승 : Exp(num) = <%= Exp(num) %><BR> Sqr(num) = <%= Sqr(num) %><BR> 1부터 100 사이의 난수 : <%= randomInt %>
문자열 관련 함수 (Cont.) Left(string, numChar) : 주어진 인자 string의 원쪽부터 numChar개수만큼 문자들을 추출 Right(string, numChar) : 주어진 인자 string의 오른쪽부터 numChar 개수만큼 문자들을 추출 Mid(string, beginIndex, numChar) : 주어진 인자 string에서 중간에 위치한 문자들을 추출 Len(string) : 주어진 인자 string의 문자 개수를 반환 UCase(string) : 대문자로 변환 LCase(string) : 소눔자로 변환
문자열 관련 함수 (Cont.) InStr(string, word) : 특정 단어 word를 주어진 문자열 string에서 찾아내어 그 단어가 시작되는 첫 번째 문자의 인덱스를 돌려줌 Replace(string, word1, word2) : 주어진 문자열 string에서 특정 단어를 바꾸어 변환 Trim(string) : 앞 뒤 공백문자를 제거한 뒤 반환 LTrim(string) / RTrim(string) : 각각 주어진 문자열 string의 왼쪽과 오른쪽 공백만을 제거한 뒤 반환
이 밖에 유용한 함수들 FormatCurrency(intData) : 통화정보로 변환 FormatDateTime(Date, type) : 여러 형태의 날짜와 시간 출력 FormatPercent(doubleDate) : %형태로 숫자를 나타냄 Split(string, delaminators) : 주어진 string내의 단어들을 하나씩 뽑아 냄. isArray : 변수가 배열이면 True, 아니면 False 리턴 isDate : 변수가 날짜로 변환 가능하면 True, 아니면 False 리턴 isEmpty : 변수가 초기화 되어 있지 않으면 True, 아니면 False 리턴 isNull : 유요한 데이터를 포함하고 있으면 True, 아니면 False 리턴 IsNumeric : 숫자 데이터를 포함하고 있으면 True 리턴 isObject : 유요한 ActiveX or OLE 자동화 개체를 포함하면 True VarType : 변수의 서브타입을 나타내는 숫자를 리턴
초기에 값을 할당 받은 후 다시는 그 값이 변경 되지 않아야 하는 경우 사용. 서브타입에 대응되는 상수 목록 Const ASCIIVALUE = 10 상 수 값 VbEmpty VbNull 1 VbInteger 2 VbLong 3 VbSingle 4 VbDouble 5 VbCurrency 6 VbDate 7 VbString 8 VbObject 9 VbError 10 VbBoolean 11 VbVariant 12 VbByte 17 VbArray 8192
배열 ASP의 배열 일련의 관련 데이터 항목들을 저장 데이터들이 인덱스(index)로서 구분된다. 일련의 데이터들을 조작하기에 쉬운 방법 제공 배열의 선언 : Dim EmployeePay(49) (0부터 49까지 50개의 저장 장소) 배열의 인덱스는 0부터 시작 Redim : 배열의 크기 재 조정 Preserve : 기존의 데이터를 보존, 배열의 크기 재조정 Redim Preserve RmployeePay(50) 2차원 배열 선언 : Dim array2(3, 3) Multi.asp
2.4 ASP 연산자 및 제어구조
할당 연산자 : 사용자가 정의한 변수에 임의의 값을 저장 strVar2 = strVar1 + " Hello" 산술 연산자 : 사칙연산 및 다양한 연산에 사용 연산자 기능 + 더하기 - 빼기 * 곱하기 / 나누기 Mod 나머지 구하기 \ 정수 나누기 ^ 지수승 구하기 & 문자열의 결합연산
비교 연산자 비교 연산자의 표현 방법 Boolean 서브타입 연산자 기 능 = 2개의 비교대상 값이 동일한 경우 True 기 능 = 2개의 비교대상 값이 동일한 경우 True <> 2개의 비교대상 값이 다른 경우 True > 왼쪽의 값이 오른쪽 값보다 큰 경우 True < 오른쪽의 값이 왼쪽의 값보다 큰 경우 True >= 왼쪽의 값이 오른쪽 값보다 크거나 같은 경우 True <= 오른쪽의 값이 왼쪽의 값보다 크거나 같은 경우 True
논리 연산자 문자열 연산자 논리 / 문자열 연산자 문자열과 문자열의 결합 연산 : &, + 2개의 비교 대상 값을 True, False로 받아. 그 값들을 논리적으로 비교하여 그 결과를 True, False로 돌려준다. 문자열 연산자 문자열과 문자열의 결합 연산 : &, + 문자열과 숫자의 결합 연산 : & 만 사용가능 4conversion.asp 연산자 기 능 AND 2개의 비교대상이 모두 True 인 경우 True가 된다. OR 2개의 비교대상 값 중 어느 한쪽이 True 이면 True가 된다. NOT NOT 연산자 오른쪽에 True 값에 해당하는 것은 False 로 바꾸고, False 값에 해당하는 것은 True 로 바꾼다.
① IF ‥ Then ‥ 분기 제어 구조 Else ‥ iftest.html, iftest.asp 제어문 형식 사용 상황 If test Then 문장 test가 참이면 Then이하의 한 개 문장을 수행하고, 거짓이면 아무 것도 하지 않는다. 문장 1 문장 2 End If test가 참이면 Then 이하 두 개 이상의 문장을 수행하고, 거짓이면 아무 것도 하지 않는다. If test1 Then ElseIf test2 Then 문장 3 문장 4 Else 문장 5 문장 6 test1 이 참이면 그것의 Then 이하 문장들을 수행하고, 그렇지 않고 test2가 참이면 그것의 Then 이하 문장들을 수행한다. 이런 식으로 End if를 만날 때까지 진행한다. 제어문 형식 사용 상황 If test Then 문장 1 문장 2 Else 문장 3 문장 4 End If test가 참이면 Then 이하 문장(들)만 수행하고, 거짓이면 Else이하의 문장(들)만 수행한다.
② Select Case ‥ 분기 제어 구조 (Cont.) <HTML> <BODY BGCOLOR=white> 당신의 이름과 나이를 입력하세요. <FORM Action="iftest.asp" Method="Post" Name="textform"> 이름 : <Input Type="text" name="name"><BR> 나이 : <Input Type="text" name="age"><BR> <Input type="submit" value="전송" name="submitbtn"> <Input type="reset" value="초기화" name="resetbtn"> </center> </FORM> </BODY> </HTML>
① For ‥ Next 루프 제어 Dim total total = 0 For idx = 0 To 100 Step 5 total = total + idx If total > 100 Then Response.write "합이 100 이 초과되었습니다." Exit For End if Next
② Do While ‥Loop 루프 제어 (Cont.) 반드시 테스트 하는 구문이 있어야 한다. <% varCount = 1 varTodayDate = day(now()) Do While varCount <= varTodayDate Response.Write varCount & " " varCount = varCount + 1 Loop %>
③ Do Until ‥Loop 루프 제어 (Cont.) <% counter = 0 num = 20 Do num = num - 1 counter = counter + 1 Loop Until num = 10 Response.write "루프 반복 횟수 : " & counter & ", num : " & num %>
2.5 서브 프로시저와 함수
서브 프로시저와 함수 동일 코드를 여러 곳에서 사용해야 할 경우, 따로 독립 시켜 놓고 메인 코드에서 빠져 나와 독립적으로 수행하도록 만든 코드를 말함
서브 프로시저 프로시저는 그 결과 값을 반환하지는 않는다. Subpro.asp 예제 프로시저 선언 방법 Sub 프로시저 이름 프로시져 내용 end sub Sub 프로시저 이름( ) Sub 프로시저 이름 (인자, [인자, …, 인자]) 프로시저는 그 결과 값을 반환하지는 않는다. Subpro.asp 예제
함 수 서브 프로시져와 비슷한 방식으로 작성 수행이 끝난 후에 반드시 임의의 값을 돌려준다 함수 작성시 주의 할 점 함 수 서브 프로시져와 비슷한 방식으로 작성 수행이 끝난 후에 반드시 임의의 값을 돌려준다 Function 함수이름 함수 내용 End Function Function 함수이름() Function 함수이름(인자, [인자, …, 인자]) 함수 작성시 주의 할 점 함수는 한 개의 값만을 반환한다. 인자에는 올바른 서브타입을 가지는 값을 전달해야 한다
예(function.asp) <HTML> <BODY BGCOLOR=white> <% Function greeting(name) if hour(now()) < 12 Then greeting = name & "님... 참으로 좋은 아침" else greeting = name & "님... 활기찬 오후" End If End Function Function printLink() printLink = "<a href=http://www.microsoft.com>www.microsoft.com</a><P>" Dim strName strName = "박찬호" %> 안녕하세요! <%= greeting(strName) %>입니다.<BR> Dim link link = printLink() ASP 를 공부하기 위해선 이 사이트를 반드시 이용하세요.<BR> <%= link %> </BODY> </HTML>
function.asp의 수행모습