370 likes | 1.16k Views
12 장 웹 활용 기술 : CGI 와 ASP. 이 재 광 한남대학교 컴퓨터공학과. 12.1 HTML 문서에서 CGI 의 활용 12.1.1 CGI 의 작동원리 Common Gateway Interface 의 약자 웹 서버와 응용프로그램을 연결하기 위한 표준 CGI 의 동작과정. CGI 를 이용하면 사용자의 요구에 따라 웹 문서를 만들어 낼 수 있음 대표적인 예 : 웹 문서 검색 시스템 1. 사용자가 질의어를 입력 2. 웹 서버가 질의어를 CGI 프로그램에 전달
E N D
12장 웹 활용 기술 : CGI와 ASP 이 재 광 한남대학교 컴퓨터공학과
12.1 HTML 문서에서 CGI의 활용 • 12.1.1 CGI의 작동원리 • Common Gateway Interface의 약자 • 웹 서버와 응용프로그램을 연결하기 위한 표준 • CGI의 동작과정 2
CGI를 이용하면 사용자의 요구에 따라 웹 문서를 만들어 낼 수 있음 • 대표적인 예 : 웹 문서 검색 시스템 • 1. 사용자가 질의어를 입력 • 2. 웹 서버가 질의어를 CGI 프로그램에 전달 • 3. CGI 프로그램은 질의어를 데이터베이스 시스템에 서찾아냄 • 4. 결과에 따라 HTML 문서를 만들어냄 • 5. 브라우저를 통해 결과를 볼 수 있음 3
12.1.2 FORM의 활용 • Form의 개요 • <FORM>...</FORM> • ACTION : 데이터가 전달될 URL (보통 CGI 프로그램) • METHOD : 메시지의 전달 방법 (GET과 POST) • <INPUT>...</INPUT> • TYPE : 입력 필드의 형식을 결정 (TEXT, PASSWORD, SUBMIT, RESET, CHECKBOX, RADIO) • NAME : 입력 필드의 데이터가 CGI 프로그램으로 넘어 갈 때 입력필드의 이름 • VALUE : 해당 입력필드에 나타나는 기본값 4
텍스트와 암호 입력 양식 • <INPUT TYPE="TEXT" MAXLENGTH="n" SIZE="n"> : 텍스트 입력 양식 • <INPUT TYPE="PASSORD" MAXLENGTH="n” SIZE="n"> : 암호 입력 양식 • 이름이나 ID를 입력받을때나 암호를 입력 받을 때 사용 • 암호 입력 양식은 입력된 내용을 '*'로 표시함 • MAXLENGTH : 입력 받을 수 있는 최대 길이의 문자 수 • SIZE : 텍스트 박스의 수평크기로 문자 수로 결정 5
버튼 • <IMG S<INPUT TYPE="SUBMIT" VALUE="버튼 이름"> • <INPUT TYPE="RESET" VALUE="버튼 이름"> • SUBMIT 버튼은 양식 안에 입력된 내용을 <FORM>태 그 안에서 지정된 곳으로 보냄 • RESET 버튼은 양식 안에 입력된 내용을 모두 지움 • VALUE는 버튼 위에 보여지는 이름을 지정 6
라디오 버튼 • <INPUT TYPE="RADIO" NAME="..." VALUE="..."> • 여러 항목들 중에서 하나만 선택 가능한 버튼 • 같은 선택군의 같은 NAME 값을 갖고 각각의 항목은 고 유의 VALUE값을 갖음 • 체크박스 • <INPUT TYPE="CHECKBOX" NAME="...” VALUE="..."> • 라디오 버튼은 선택군에서 하나만 선택가능하지만 체 크박스는 여러개 선택 가능 • 같은 선택군의 같은 NAME 값을 갖고 각각의 항목은 고 유의 VALUE값을 갖음 7
긴 텍스트 입력받기 • <TEXTAREA NAME="..." ROWS="n” COLS="n">...</TEXTAREA> • 위의 텍스트 입력 받기 보다 긴 텍스트를 입력 받을 때 사용 • NAME은 지정된 곳(보통 CGI프로그램)으로 넘어갈 때 필드의 이름 • ROWS : 입력 영역 행의 글자수 • COLS : 입력 영역 열의 글자수 8
선택 목록 만들기 • <SELECT NAME="...">...</SELECT> • 선택 목록은 풀 다운 메뉴(Full Down Menu)를 말함 • <SELECT> 와 </SELECT>사이에 <OPTION> 태그 로 항목을 만든다. • <SELECT> 태그의 속성 • NAME : 지정된 곳(보통 CGI프로그램)으로 넘어 갈 때 필드의 이름 • MULTIPLE : 하나 이상의 선택이 가능 • SIZE : 드롭다운 항목에 표시되는 옵션의 수 • <OPTION> 태그의 속성 • SELECTED : 그 항목이 초기 선택 값으로 결정 9
12.1.3 CGI 프로그램의 기초 • 웹 서버의 종류에 따른 사용 가능한 CGI 프로그래밍 언어 • UNIX 계열 : Perl, C/C++, 쉘 스크립트 언어 • 윈도우즈 계열 : Perl, C/C++, 비주얼 베이직 • 매킨토시 계열 : Perl, C/C++, 애플 스크립트 • HTML 문서에서 CGI 실행 시키기 • <A HREF="CGI 프로그램?NAME=VALUE">...</A> • <FORM ACTION="CGI 프로그램" ...>...</FORM> 10
데이터 받기 • <FORM METHOD="GET 또는 POST" ...>...</FORM> • GET • QUERY_STRING 이라는 환경변수를 통해 입력 받음 길이의 제한이 있슴 • POST • 표준 입력방법에 따라 입력 받음 • 길이의 제한이 없슴 • 입력양식의 정보를 NAME=VALUE 의 형태로 보냄 • 2개 이상의 정보일 경우 '&'로 연결 • 공백(Space) : '+'로 변환 • 'CR+LF' : %아스키코드 로 변환 • CGI 프로그램에서 다신 원래대로 변환 해야함 11
데이터 보내기 • 헤더 • 웹 브라우저에게 어떤 종류의 데이터인지 명시 • HTML : content-type: text/html텍스트 : text/plain MPEG : video/mpeg JPEG : image/jpeg • Location: 문서의 위치와 이름 : 웹 브라우저에 출력할 문서를 직접 보여줌 • 헤더를 출력한 다음 한 줄을 띄어 헤더가 끝났음을 브라우저에게 알려야 함 • 데이터 : 헤더에서 정의된 문서의 종류에 따라 맞는 형식을 출력 12
환경 변수 • 웹 서버에서 환경변수 설정 • 환경 변수의 예 13
12.1.4 CGI로 방명록 만들기 • 우선 방명록의 입력양식 • 이름 : 방문자의 이름 E-mail : 방문자의 저자 우편(E-mail)주소 홈페이지: 방문자의 홈페이지 URL 남기고 싶은 말 : 방문자의 의견 • 입력양식으로부터 넘겨 받은 데이타를 파라메타 별로 나누고 원래의 데이터로 복원하는 작업이 필요 • 방문자의 기록을 HTML 문서 형태로 파일로 저장 • 방문자의 요구가 있을 경우 방문록 파일을 볼 수 있도록 함 • 데이터 베이스 시스템과 연계할 수 있다면 좀더 좋은 방명록 을 만들 수 있음 14
12.2 ASP의 개요 12.1.1 CGI의 작동원리 • Active Server Page의 약자 • 사용자가 웹페이지를 인터랙티브하게 사용할 수 있도록 고안된 스크립트 언어 • ASP를 사용하기 위해서 Windows 기반 웹서버인 IIS(Internet Information Server)가 필요 • Windows95/98/ME에서는 IIS를 지원하는 PWS(Personal Web Server)를 추가로 설치하여 가상 서버 환경을 구축 • WindowsNT에서는 Windows NT Server 4.0 Option Pack을 설치하여 IIS를 설치 • Windows2000에서는 제어판의 프로그램 추가삭제 메뉴에서 설정을 변경하여 IIS를 설치 15
서버측 스크립트 • ASP에서는 비주얼 베이직 스크립트나 자바스크립트를 사용하여 프로그램을 작성 • 서버에서 이러한 스크립트를 해석하여 HTML 태그로 변환하여 클라이언트에게 전송 • 따라서 소스코드의 보안성이 보장됨 • CGI도 ASP와 마찬가지로 서버측 스크립트이나 CGI는 클라이언트의 요청마다 프로세스가 생성되어 서버에 부담을 줌 • ASP는 쓰레드(Thread)를 이용하여 많은 사용자에도 서버에 부하가 적음 • ASP는 ADO(ActiveX Data Object)기능을 이용하여 ODBC 호환 데이터베이스를 사용할 수 있는 장점이 있음 16
12.1.2 ASP의 기본 문법과 함수 • 비주얼베이직 스크립트와 자바스크립트 사용으로 객체지향 개념 사용 • ASP의 스크립트들은HTML문서내의 <%와 %>사이에 위치 ASP 스크립트의 처리과정 18
변수 및 논리 구문 • 변수 • 다른 프로그래밍 언어와 마찬가지로 어떤 값을 저장하기 위한 곳 • 변수명은 첫글자는 항상 알파벳 문자이고 알파벳 또는 '_' 문자나 숫자를 포함한 255이내의 문자로 구성 • 명시적 선언법 : <% %>태그 안에 Dim 명령어를 사용 • <% Dim myVariable %> • 묵시적 선언법 : <% %>태그 안에 새 변수명을 사용하여 값을 부여 • <% myVariable = 1 %> • ASP의 변수형은 Variant로 설정되어 변수에 어떤 형태의 값이 주어지는가에 따라 변수형이 결정됨 19
논리 구문 • If...Then 구문 : 가장 자주 사용되는 논리 구문If 조건 Then조건을 만족할 경우 실행End If혹은 If 조건 Then조건을 만족할 경우 실행Else조건이 만족되지 않는 경우 실행End If 20
For...Next 구문 : 시작값과 종료값에 따라 변수를 증감시키며 스크립트들을 반복 실행For 변수 = 시작값 To 종료값 [Step 증감값]실행문Next 21
VBScript 함수 • 날짜와 시간에 관련된 함수 • VBScript는 웹페이지에서 자주 쓰이는 날짜와 시간에 관련된 정보를 제공하는 다양한 함수를 제공 22
문자열에 관련된 함수 • VBScript는 사용자와 웹페이지 간에 교환되는 문자열들의 처리를 위해 다양한 함수를 제공 • 문자열 연결하기 : & 기호를 사용하여 간단히 연결 • <%text1 = "인터넷 배움터"text2 = "입니다"text3 = text1 & text3%>이와 같은 예에서 text3에는 "인터넷 배움터입니다"란 문자열이 저장됨 • 문자열 나누기 : 문자열을 단어들로 나누어 배열에 각 단어를 저장 • HTML의 Form 태그에서 Get 메쏘드를 이용했을 경우 인자로 넘어오는 문자열 집합의 처리등에 유용 23
12.1.2 ASP의 기본 문법과 함수 • ASP는 객체(Object)를 이용하여 클라이언트-서버간 통신을 함 • 통신을 위해 총 12개의 클라이언트 객체와 서버 객체를 사용 • 클라이언트 객체 : Window, Document, Frame, Form, Element, Location, Link 객체 • 서버 객체 : Request, Response, Application, Session, Server 객체 • Request 객체 • Request 객체 : 사용자의 정보를 입력받아 처리하는 것이 주요 기능 • QueryString, Form, Cookies, ServerVariable등의 컬렉션을 가지고 있음 24
QueryString 컬렉션 • 서버가 클라이언트로부터 GET방식으로 넘어오는 정보를 받기 위한 것 • GET방식은 웹페이지간에 정보를 주고 받을때 URL뒤에 정보를 추가하여 넘기는 방식 • QueryString은 URL에 추가되어 전달되는 정보를 처리하여 반환하는 기능 • Form 컬렉션 • QueryString 컬렉션과 유사하나 이것은 POST방식으로 정보를 주고 받을 때 사용 25
Response 객체 • Response 객체 : 서버가 클라이언트(사용자)에게 정보를 전달하는 것이 주요 기능 • Write, Redirect, Flush, End, Clear등의 메쏘드을 가지고 있음 • Write 메쏘드 • 브라우저 화면에 어떤 값을 출력할때 쓰임 • <% Response.Write 출력할 내용 %>과 같이 사용하며 간단히 <%= 출력할 내용%>으로 표현할 수도 있음 • Redirect 메쏘드 • 현재 페이지에서 다른 페이지로 화면전환을 할때 사용 • <% Response.Redirect "http://kr.yahoo.com" %>와 같이 사용 26
Application 객체와 Session 객체 • Application 객체 : 한 웹사이트에 관한 모든 정보를 관리하는 역할 • Session 객체 : 웹사이트에 액세스하는 각 사용자의 정보를 관리하는 역할 • Application 객체의 OnStart/OnEnd 이벤트 • OnStart 이벤트 : 사용자가 웹사이트를 처음 방문했을 때 발생 • OnEnd 이벤트 : 마지막 사용자가 웹사이트를 떠났을 때 발생 • Session 객체의 OnStart/OnEnd 이벤트 • OnStart 이벤트 : 각각의 사용자에 대해서 웹사이트를 방문했을 때 발생 • OnEnd 이벤트 : 각각의 사용자가 웹사이트를 떠났을 때 발생 • Session은 기본적으로 사용자가 웹사이트를 떠나고 20분후에 종료 27
Server 객체 • Server 객체 : 다른 Server객체를 생성하는 역할 • 예 : 데이터베이스 Server 객체를 생성하여 손쉽게 데이터베이스를 액세스 • CreateObject, MapPath, ScriptTimeout등의 메쏘드를 가지고 있음 • CreateObject : 가장 자주 쓰이는 메쏘드로써 새로운 객체를 생성함 • 다음은 서버의 Database Access 컴포넌트를 사용하기 위해 ADO(ActiveX Data Object)인스턴스를 생성하는 구문 • Set myDB = Server.CreateObject("ADODB.Connection") • myDB는 ADO의 인스턴스로 myDB.Open과 같은 메쏘드로 데이터베이스를 자유롭게 이용할 수 있음 • ASP는 ADO를 이용해서 ODBC(Open Database Connectivity)를 통해 다양한 데이터베이스를 이용할 수 있는 장점을 가짐 29
12.1.4 ASP 프로그램의 예 • Application/Seesion 객체의 이벤트와 Server 객체의 CreateObject 메쏘드를 이용한 간단한 ASP 카운터 작성 • 기본원리 : Application/Session 객체의 이벤트시 수행되는 Global.asa 파일을 이용하여 카운트 값을 증가시킴 • 주의사항 : 카운터 파일의 입출력시에 다수의 사용자가 동시에 파일에 접근 할 수 있으므로 Application.lock/unlock으로 한번에 한 사용자만 파일에 접근이 가능하도록 하고 파일의 입출력이 끝나면 close 명령으로 파일을 닫는것이 좋다. 31
Application 객체 이벤트 • Sub Application_OnStart • 첫 사용자가 서버에 접속하였을때 한번 실행됨 • szFilename = "c:\Inetpub\wwwroot\counter.txt" • 사용자가 접속할 때 마다 카운트가 증가되고 이 카운트 값을 파일로 저장하기 위해 경로를 지정 • Set objFile = Server.CreateObject("Scripting.FileSystemObject") • 카운터 값이 저장된 파일을 사용하기 위하여 파일시스템 인스턴스를 생성 • Set objOut = objFile.OpenTextFile(szFilename, 1) • 생성된 파일시스템 인스턴스를 사용하여 위에서 지정된 파일을 읽기 모드로 열어 카운터 값이 저장된 파일의 내용을 읽을 수 있도록 한다. 파일을 열 때 첫 번째 인자로 파일의 위치를 지정하고 두 번째 인자로 읽기 모드를 뜻하는 1을 넘겨줌 32
Application("count") = objOut.ReadLine • ReadLine은 파일의 한줄을 읽어 반환을 하는데 여기서는 count라는 application 전역 변수에 카운트 파일의 내용인 방문횟수를 읽어 저장함 • Application("filename") = szFilename • Session 함수에서 증가된 카운터 값을 저장하기 위해 다시 카운터 파일의 경로가 필요함으로 filename이라는 application 전역 변수에 파일의 경로를 저장 33
Session 객체 이벤트 • Sub Session_OnStart • 각각의 사용자가 서버에 접속할때 마다 실행됨 • Application("count") = Application("count") + 1 • count 전역 변수의 값을 1만큼 증가 • Set objFile = Server.CreateObject("Scripting.FileSystemObject") • Application_OnStart에서와 마찬가지로 파일 시스템 인스턴스를 생성 • Set objOut = objFile.CreateTextFile(Application("filename"), 8) • 여기서는 카운터 파일에 증가된 카운터 값을 저장하기 때문에 쓰기 모드를 뜻하는 8을 인자로 넘겨줌 • objOut.WriteLine(Application("count")) • WriteLine은 인자로 넘어온 값을 파일에 한줄 쓰는 역할을 한다. 즉 1만큼 증가된 카운터 값을 파일에 갱신 34
화면 출력 • Global에서 지정된 경로에 counter.txt란 파일을 생성하고 원하는 초기값을 지정 • ASP 파일의 적당한 곳에 <%= Application("count") %> 코드를 넣어 카운트값을 출력 • 한 사용자가 카운트 값을 증가하기 위해서는 새로운 Session을 받아야 하므로 새로운 브라우저로 접속하거나 세션이 종료되길 기다려 재접속해야 함 35
12.3 PHP와 JSP • PHP • PHP(PHP : Hypertext Preprocessor)는 ASP나 CGI와 마찬가지로 서버측 스크립트 언어 • Windows 용 Apache 서버나 Apache 서버를 사용하는 UNIX 또는 Linux 환경에서 사용됨 • Perl이나 C와 유사한 문법을 가지며 Class개념을 가지고 있어 객체지향적 프로그래밍 언어의 특성을 가짐 • ODBC, Oracle, Informix, Sybase, MySQL과 같은 다양한 데이터베이스를 지원하고 쉬운 인터페이스를 제공함 • 그래픽 라이브러리인 GD Library를 지원하여 그래픽 이미지의 생성이 가능하고 여러 효과를 줄 수있는 기능을 가짐 36
JSP • JSP(Java Server Page)는 ASP와 유사한 서버측 스크립트 언어 • JSWDK(Java Server Web Development Kit)라는 자바 서버를 사용하여 플랫폼에 독립적 • ASP와 마찬가지로 <% %>내에 스크립트 언어를 사용하며 VBScript대신 Java를 사용함 • JavaBeans라는 컴포넌트를 이용하여 다양한 기능을 수행 • JDBC라는 Sun Microsystems사에서 개발한 SQL 데이터베이스 인터페이스로 데이터베이스를 액세스 할 수 있음 37