Dim : 변수를 선언. (예: Dim strName, Dim strName (5) : 배열로 선언, 0~5인덱스인 '6칸' 배열이다) (dimension의 약자)
Set : 객체를 생성. (예: Set rs = Server.CreateObject("ADODB.RecordSet")) 객체는 다 쓰고 메모리에서 해제하는 것이 중요하다.
Dim myPhone
Set myPhone = Server.CreateObject("Telephone.Headphone")
myPhone.color = "black"
myPhone.number = "010-1234-5678"
myPhone.call("02-000-9876")
myPhone.hangup()
Set myPhone = Nothing // 객체를 메모리에서 해제.(더이상 사용하지 않을 때)
IF ~ THEN 샘플
<%
IF intNumber = 1 THEN
Response.Write "intNumber 에 들어있는 수는 1입니다!"
ELSEIF intNumber = 2 THEN
Response.Write "intNumber 에 들어있는 수는 2입니다!"
ELSEIF intNumber = 3 THEN
Response.Write "intNumber 에 들어있는 수는 3입니다!"
ELSE
Response.Write "intNumber 에 들어있는 수는 1,2,3 이 아닌 다른 숫자입니다!"
END IF
%>
SELECT CASE 샘플
<%
SELECT CASE intNumber
CASE 1
Response.Write "intNumber 에 들어있는 수는 1입니다!"
CASE 2
Response.Write "intNumber 에 들어있는 수는 2입니다!"
CASE 3,4,5
Response.Write "intNumber 에 들어있는 수는 3,4,5 중 하나입니다!"
CASE ELSE
Response.Write "intNumber 에 들어있는 수는 1부터 5 사이의 정수가 아닙니다."
END SELECT
%>
FOR ~ NEXT
<%
DIM intLoop
FOR intLoop = 1 TO 10 STEP 1
Response.write intLoop & "<BR>"
NEXT
%>
DO WHILE
<%
DIM intLoop
intLoop = 11
DO WHILE intLoop <= 20
Response.write intLoop & "<BR>"
intLoop = intLoop + 2
LOOP
%>
실습
<%@Language="VBScript" CODEPAGE="65001" %>
<%
Response.CharSet="utf-8"
Session.codepage="65001"
Response.codepage="65001"
Response.ContentType="text/html;charset=utf-8"
%>
<HTML>
<HEAD><title>main.asp</title>
</HEAD>
<BODY>
<P> </P>
가상 디렉토리입니다.<br />
<% for i = 1 to 3 step 1 %>
Hello world! ASP <br>
<% next %>
<br />
<%
DIM intLoop
FOR intLoop = 1 TO 10 STEP 2
Response.write intLoop & "<BR>"
NEXT
intLoop = 2
DO WHILE intLoop <= 10
Response.write intLoop & "<BR>"
intLoop = intLoop + 2
LOOP
%>
</BODY>
</HTML>
1 ) 제어판 > 모든 제어판 항목 > 프로그램 및 기능 > 'Windows 기능 켜기/끄기'
Classic ASP를 사용할 것이기 때문에 '인터넷 정보 서비스 > World Wide Web 서비스 > 응용 프로그램 개발 기능'에서 'ASP' 'ASP.NET 3.5' 'ISAPI 확장' 3개를 더 설치해준다. (Classic ASP는 'ASP'랑 'ISAPI 확장' 2개만 더 설치해주면 될 것 같은데 이렇게 해보니까 아래 IIS 관리자 설정에서 'Classic .NET AppPool'이 안 떠서 3.5까지 설치하니까 뜬다.')
2 ) IIS 관리자 설정
IIS 관리자 실행 > 좌측 연결 탭에서 '사이트 > Default Web Site' 클릭 > 우측 작업 탭에서 '고급 설정...'
'응용 프로그램 풀'을 DefaultAppPool > Classic .NET AppPool로 변경한다.
이 디렉토리에 'test.asp'라는 이름으로 텍스트 문서를 저장해두면, 서버에 'test.html'을 요청하는 request가 들어오면 ASP.DLL이 'test.asp'를 해석해 response를 보낸다.
가상 디렉토리
문제는 하나의 서버에 홈 디렉토리가 하나라는 것이다. 즉, 서버 하나에 사이트를 하나만 띄울 수 있다. 따라서 가상 디렉토리를 이용해 이러한 문제를 해결할 수 있다.
IIS 관리자에서 만들면 되고, 방법은 위 설치 과정을 참고한다.
'실제 경로'는 '서버 내 디렉토리'를 뜻하며, '별칭'에 해당하는 것은 톰캣 서버에서 'Context Path'에 해당한다. 'aspnet_client'는 홈 디렉토리다.
'C:\greendreamtrre'에 'main.asp'파일을 만들고 아래와 같이 저장한다.
<%@Language="VBScript" CODEPAGE="65001" %>
<%
Response.CharSet="utf-8"
Session.codepage="65001"
Response.codepage="65001"
Response.ContentType="text/html;charset=utf-8"
%>
<HTML>
<HEAD><title>main.asp</title>
</HEAD>
<BODY>
<P> </P>
가상 디렉토리입니다.<br />
<% for i = 1 to 3 step 1 %>
Hello world! ASP <br>
<% next %>
</BODY>
</HTML>
위 코드에서 이 부분은 Visual Basic 스크립트 코드다.
<% for i = 1 to 3 step 1 %>
Hello world! ASP <br>
<% next %>
URL에 아래와 같이 요청을 보내보자.
http://localhost/tree/main.asp
- 서버는 ASP 페이지를 그 확장자로 인식하며, ASP 페이지임이 확인되면 ASP.DLL을 거치게 한다.
- ASP.DLL을 거친 ASP파일은 사용자의 브라우저로 건네어질 때는 이미 원래의 ASP파일이 아니다. 즉, 사용자는 결과 HTML코드만을 보게 되며, 원래의 ASP 소스코드는 결코 알 수가 없다.
- ASP 소스는 <% 로 시작하여 %> 로 끝난다. 즉, <% ~~~ %> 사이에 있지 않은 것은 HTML이다. 반대로 생각하면 HTML코드 안에 ASP 코드가 들어가있는 것이다. (생각해보니 jsp에서 HTML 코드 사이에 자바 코드 넣을 때도 <% ~~~ %> 사이에 넣었다...)
Active Server Pages로 1995년 말에 등장한 IIS(Internet Information Server)의 세 번째 버전으로 Microsoft사 NT 머신 IIS 3.0 이상에서만 동작하는 특별한 페이지이다.
ASP.NET Core 와의 비교
Classic ASP
ASP.NET Core
최초 릴리즈
1996년
2016년
최신 업데이트
3.0버전, 2000년 11월
3.1 버전, 2019년 12월 (5.0 버전 2020 말 예정)
개발 언어
Visual Basic Script
C#, 등
구동 환경
Windows Only(IIS)
Cross-Platform 지원 (Windows, Linux, Unix 등)
객체지향 여부
Not Object Oriented
Object Oriented
디버깅 용의성
어려움
쉬움
성능
낮음
높음
MPA/SPA 관점에서의 비교
Multi Page Application
Single Page Application
UX
메뉴 이동 간 페이지 전환 (화면 깜빡임)
페이지 전환이 발생하지 않음
데이터/디자인의 분리
어려움
분리, 테스트 용이
디버깅 용의성
어려움
쉬움
초기 로딩
빠름
느림(데이터 외 기능요소를 초기에 다운로드)
객체지향 여부
Not Object Oriented
Object Oriented
Classic ASP를 사용한다는 것은 MPA를 사용한다는 것이다. 따라서 사용자가 요청한 페이지는 서버의 ASP.DLL을 통해 해석되어 HTML 코드로 바뀌게 되고, 사용자는 그 HTML코드를 브라우저가 해석된 것을 보게 된다. 즉, 페이지 빌딩을 서버에서 만들어 클라이언트에 보내준다.