ASP Global.asa 파일

Global.asa 파일은 ASP 어플리케이션의 모든 페이지에서 엑세스 할 수 있는 객체, 변수 및 메소드의 선언을 포함할 수 있는 선택적 파일임.

유효한 모든 프라우져 스크립트(JS, VBScript, JScript, PerlScript)등 Global.asa 파일내에서 사용 가능.

Global.asa 파일에는 다음 항목만 포함할 수 있음.

  • 어플리케이션 이벤트
  • 세션 이벤트
  • <object> 선언
  • TypeLibrary 선언
  • #include 지시문

Global.asa 파일은 ASP 어플리케이션의 루트 디렉토리에 저장해야 하며 각 어플리케이션에는 Global.asa 파일이 하나만 있을 수 있음

 


Global.asa의 이벤트

Global.asa에서 어플리케이션/세션이 시작될 때 수행할 작업과 어플리케이션/세션이 종료될 때 수행할 작업을 어플리케이션 및 세션 객체에 알릴 수 있음. 이에 대한 코드는 이벤트 핸들러에 배치됨. Global.asa 파일에는 네 가지 유형의 이벤트가 포함될 수 있음.

  • Application_OnStart : First 사용자가 ASP 어플리케이션의 첫 페이지를 호출할 때 발생.
    이 이벤트는 웹 서버를 다시 시작한 후 또는 Global.asa 파일을 편집 후에 발생함.
    Session_OnStart 이벤트는 이 이벤트 직후에 발생함.
  • Session_OnStart : 이 이벤트는 새 사용자가 ASP 어플리케이션에서 첫 페이지를 요청할 때마다 발생.
  • Session_OnEnd : 이 이벤트는 사용자가 세션을 종료할 때마다 발생함.
    사용자 세션은 지정된 시간(기본 20분) 동안 사용자가 페이지 요청하지 않으면 종료됨.
  • Application_OnEnd : 이 이벤트는 마지막 사용자가 세션을 종료한 후에 발생함.
    일반적으로 이 이벤트는 웹 서버가 중지될 때 발생함. 이 절차는 레코드 삭제 또는 텍스트 파일에 정보 쓰기와 같이 어플리케이션이 중지된 후 설정을 정리하는데 사용됨.

Global.asa

  <script language="vbscript" runat="server" >

    sub Application_OnStart
    'some code
    end sub

    sub Application_OnEnd
    'some code
    end sub

    sub Session_OnStart
    'some code
    end sub

    sub Session_OnEnd
    'some code
    end sub

  </script>

 

 


<객체> 선언

<object> 태그를 사용하여 Global.asa에서 세션 또는 어플리케이션 범위의 객체를 만들 수 있음.
<object> 태그는 <script> 태그 밖에 있어야 함.

  <object runat="server" scope="scope" id="id" {porgid="progID" | classid="classID"}>
    ...
  </object>
  • scope :
    Sets the scope of the object (either Session or Application)
  • id :
    Specifies a unique id for the object
  • progId :
    An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]
    Either ProgID or ClassID must be specified.
  • ClassId :
    Specifies a unique id for a COM class object.
    Either ProgID or ClassID must be specified.

ex

첫 번째 예는 ProgID 매개변수를 사용하여 MyAd라는 세션 범위 객체 생성임.
<obejct runat="server" scope="session" id="MyAd" progId="MSWC.AdRotator" > </object>

두 번째 예는 ClassID 매개변수를 사용하여 MyConnection이라는 어플리케이션 범위 객체 생성임.

  <object
    runat="server" scope="application" id="MyConnection"
    classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
  </object>

Global.asa 파일에 선언된 개체는 응용프로그램의 모든 스크립트에서 사용 가능함.

  <object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
  </object>
  <%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

 

 



TypeLibrary 선언

TypeLibrary는 COM 개체에 해당하는 DLL 파일의 내용에 대한 컨테이너임. Global.asa 파일에 TypeLibrary에 대한 호출을 포함하면 COM 개체의 상수에 엑세스할 수 있으며 ASP 코드에서 오류를 더 잘 보고할 수 있음. 웹 어플리케이션이 형식 라이브러리에서 데이터 형식을 선언한 COM 객체에 의존하는 경우 Global.asa에서 형식 라이브러리를 선언할 수 있음.

문법

  <!-- METADATA TYPE="TypeLib"
    file="filename" uuid="id" version="number" lcid="localeid"
   -->
Parameter Description
file 유형 라이브러리의 절대 경로를 지정함. 파일 매개변수 또는 UUID 매개변수가 필요함.
UUID 유형 라이브러리의 고유 식별자 지정. 파일 매개변수 또는 UUID 매개변수가 필요함.
version 선택사항으로 버젼을 선택하는데 사용. 요청된 버젼이 없다면 가장 최근 벼전이 사용됨.
lcid 선택사항으로 유형 라이브러리에 사용할 지역 식별자.

오류 값

서버는 다음 오류 메세지중 하나를 반환할 수 있음.

Parameter Description
ASP 0222 잘못된 라이브러리 사양
ASP 0223 라이브러리 찾을 수 없음
ASP 0224 라이브러리 로드 불가
ASP 0225 라이브러리 래핑 불가

METADATA 태그는 Global.sas 파일의 모든 위치에 나타날 수 있음. (<script> 태그 내 외부).
BUT, METADATA 태그는 Global.sas 파일의 상단에 표시하는 것이 좋음.

제한

Global.asa 파일에 포함할 수 있는 항목데 대한 제한 사항 :

  • Global.asa 파일에 작성된 텍스트는 표시할 수 없음. 이 파일은 정보를 표시할 수 없음.
  • Application_OnStart 및 Application_OnEnd 서브루틴에서는 서버 및 어플리케이션 개체만 사용할 수 있음.
    Session_OnStart 서브루틴에서 내장 객체를 사용할 수 있음.
    Session_OnEnd 서브루틴에서 서버, 어플리케이션 및 세션 개체를 사용할 수 있음.

서브루틴 사용법

Global.asa는 종종 변수를 초기화 하는 데 사용함.
방문자가 웹 사이트에 처음 도착한 시간을 감지하는 방법임.
시간을 "started"라는 세션 변수에 저장되며 "started" 변수의 값은 어플리케이션의 모든 ASP 페이지에 엑세스할 수 있음.

  <script language="vbscript" runat="server" >
    sub Session_OnStart
      Session( "started" ) = now()
    end sub
  </script>

아래 예는 모든 신규 방문자를 다른 페이지로 리다이렉션 하는 방법

  <script language="vbscript" runat="server">
    sub Session_OnStart
      response.redirect( "newpage.asp" )
    end sub
  </script>

그리고 Global.asa 파일에 기능을 포함할 수 있음.

Application_OnStart 서브루팅은 웹 서버가 시작될 때 발생함.
그런 다음 Application_OnStart 서브루틴은 "getcustomers" 라는 다른 서브루틴을 호출함.
"getcustomers" 서브루틴은 DB의 "customers" 테이블에서 데이터를 배열로 가져옴.

  <script language="vbscript" runat="server">
    sub Application_OnStart
      getCustomers
    end sub

    sub getCustomers
      set conn = Server.CreateObject( "ADODB.Connection" )
      conn.Provider = "Microsoft.Jet.OLEDB.4.0"
      con.Open "c:/webdata/northwind.mdb"

      set rs = conn.execute( "SELECT NAME FROM customers" )

      Application( "customers" ) = rs.GetRows

      rs.close
      conn.close
    end sub
  </script>

 

 

Global.asa 예

현재 방문자수를 계산하는 Global.asa 파일을 만들어 봄

  • Application_OnStart는 서버가 시작될 때 어플리케이션 변수 "visitors"를 0으로 할당.
  • Session_OnStart 서브루틴은 새 접속자가 접근할 때 마다 변수 "visitors"를 1씩 추가.
  • Session_OnEnd 서브루틴은 접속자가 나갈 때 마다 변수 "visitors"를 1씩 감소.
  sub Application_OnStart
    Application( "visitors" ) = 0
  end sub

  sub Session_OnStart
    Application.lock
    Application( "visitors" ) = Application( "visitors" ) + 1
    Application.unlock
  end sub

  sub Session_OnEnd
    Application.lock
    Application( "visitors" ) = Application( "visitors" ) - 1
    Application.unlock
  end sub
  <head>
    There are <%=application( "visitors" )%> on online now!
  </head>

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP IIS] 윈도우 10 IIS 및 클래식 ASP 설정  (0) 2021.09.06
[ASP] AJAX  (0) 2021.08.30
[ASP] #include  (0) 2021.08.27
[ASP] 어플리케이션  (0) 2021.08.27
[ASP] 세션  (0) 2021.08.27

ASP include file

#include 지시문

#include 지시문을 사용하여 서버가 실행하기 전에 한 ASP 파일의 내용을 다른 ASP 파일에 삽입할 수 있음.
#include 지시문은 여러 페이지에서 재사용될 함수, 머리글, 바닥글, 또는 요소를 만드는 데 사용됨.


#include 지시문 사용하는 방법

  <!DOCTYPE html>
  <html lang="ko">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
      * { background-color : black; color : white; margin : 1em; }
    </style>
    <title>include my page</title>
  </head>
  <body>
    <h1>include my page</h1>
    <br/><hr/><br/>

    <h3>Word of Wisdom :</h3>
    <p><!--#include file="01-wisdom.inc" --></p>

    <br/><hr/><br/>

    <h3>The Time is :</h3>
    <p><!--#include file="01-time.inc" --></p>

  </body>
  </html>

01-wisdom.inc

"One should never increase, beyond what is necessary,
the number of entities required to explain anything."

01-time.inc

<% response.write( time ) %>

파일 포함 구문

ASP 페이지에 파일을 포함하려면 주석 태그 안에 #include 지시문을 넣어야 함.

<!-- #include virtual = "someFileName" -->
of
<!-- #include file = "someFileName" -->

virtual 키워드

virtual 키워드를 사용하여 가상 디렉토리로 시작하는 경로를 나타냄.
"header.inc"라는 파일이 /html 이라는 가상 디렉토리에 있는 경우 다음 줄은 "header.inc"의 내용을 삽입함.
<!-- #include virtual = "/html/header.inc" -->

file 키워드

file 키워드를 사용하면 상대경로를 나타냄. 산대경로는 포함 파일이 포함된 디렉토리로 시작함.
html 디렉토리에 파일이 있고, "header.inc"파일이 html/headers에 있는 경우 다음 줄은 파일에 "header.inc"를 삽입함.
<!-- #include file = "headers/header.inc" -->

포함된 파일의 경로 (header/header.inc)는 포함된 파일에 상대적임. 이 #include 문이 포함된 파일이 html 디렉토리에 없으면 명령문은 작동하지 않음.


기타 참고사항

위 섹션에서는 포함된 파일에 대해서 확장자 .inc를 사용했음. 사용자가 inc 파일을 직접 탐색하려고 하면 해당 내용이 표시됨. 포함된 파일에 기밀 정보나 다른 사용자에게 보여주고 싶지 않은 정보가 포함되어 있다면, ASP 확장자를 사용하는 것이 좋음. ASP 파일의 소스 코드는 해석 후에 보이지 않음. 포함된 파일에는 다른 파일명도 포함될 수 있으며 하나의 ASP 파일에는 동일한 파일이 두번 이상 포함될 수 있음.

중요 : 포함된 파일은 스크립트가 실행되기 전에 처리되고 삽입됨. 다음 스크립틍는 ASP가 변수 값을 할당하기 전에 #include 지시문을 실행하기 때문에 작동하지 않음.

  <%
    filename = "header.inc"
  %>
  <!-- #include file = "<%filename%>" -->

inc 파일에서 스크립트 구분 기호를 열거나 닫을 수 없음. 다음 코드는 작동하지 않음.

  for i = 1 to n
    <!-- #include file = "count.inc" -->
  next
  <% for i = 1 to n %>
    <!-- #include file = "count.inc" -->
  <% next %>

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] AJAX  (0) 2021.08.30
[ASP] global.asa  (0) 2021.08.30
[ASP] 어플리케이션  (0) 2021.08.27
[ASP] 세션  (0) 2021.08.27
[ASP] 쿠키  (0) 2021.08.26

ASP 응용프로그램 객체

어떤 목적을 수행하기 위해 함께 작동하는 ASP 파일 그룹을 응용 프로그램이라고 함.

 


응용프로그램 객체

웹상의 응용 프로그램은 어떤 목적을 수행하기 위해 함께 작동하는 여러 ASP 파일로 구성될 수 있음. Application 객체는 이러한 파일을 함께 묶는 데 사용됨.

어플리케이션 개체는 세션 개체와 마찬가지로 모든 페이지의 변수를 저장하고 엑세스하는 데 사용됨. 차이점은 모든 사용자가 하나의 응용 프로그램 개체를 공유한다는 것임. (세션에는 각 사용자에 대해 하나의 세션 개체가 있음.)

어플리케이션 개체는 데이터베이스 연결 정보와 같은 어플리케이션의 많은 페이지에서 사용할 정보를 보유함. 정보는 모든 페이지에 엑세스 가능. 정보 변경도 한 곳에서 가능하며, 변경 사항은 자동으로 모든 페이지에 반영됨.

 

 


어플리케이션 변수 저장 및 검색

어플리케이션 변수는 어플리케이션의 모든 페이지에서 엑세스하고 변경 가능함.
"Global.asa"파일에서 어플리케이션 변수를 만들 수 있음.

  <script language="vbscript" runat="server">
    // vartime, users라는 두개의 응용프로그램 변수 생성
    sub Application_OnStart
      application( "vartime" ) = ""
      application( "users" ) = 1
    end sub
  </script>
  There are <%=application( "users" )%> active connections.

 

 


콘텐츠 컬렉션을 통해 반복문

Contents Collection에는 모든 어플리케이션 변수가 포함됨. 콘텐츠 컬렉션을 반복하여 컬렉션에 무엇이 저장되어 있는지 확인 가능.

  dim ac
  for each ac in application.contents
    response.write( ac & "<br/>" )
  next

contents에 대해 count 속성 사용 가능

  dim acCnt
  acCnt = application.contents.acCnt

  for ac = 1 to acCnt
    response.write( application.contents( ac ) & "<br/>" )
  next

 

 


StaticObjects collection을 통해 반복문

StaticObjects 컬렉션을 반복하여 어플리케이션 객체에 저장된 모든 개체의 값을 볼 수 있음.
세션에선 안 됐는데 이게 될 까?

  dim so

  for each so in application.staticojbects
    response.write( so & "<br/>" )
  next

 

 


잠금 및 잠금 해제

"lock"으로 어플리케이션을 잠글 수 있음. 어플리케이션이 잠긴 경우 사용자는 현재 액세스 중인 변수를 제외한 어플리케이션변수를 변경할 수 없음.
"unlock"으로 어플리케이션의 잠금을 해제할 수 있음.

  application.lock
  ' do come application object operation
  application.unlock

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] global.asa  (0) 2021.08.30
[ASP] #include  (0) 2021.08.27
[ASP] 세션  (0) 2021.08.27
[ASP] 쿠키  (0) 2021.08.26
[ASP] form  (0) 2021.08.26

ASP 세션 객체

컴퓨터에서 어플리케이션으로 작업할 때 어플리케이션을 열고 일부 변경한 다음 닫음.
이건 세션와 유사한데, 컴푸터는 작업자가 누군지 알고있고, 어플리케이션을 열 때와 닫을 때를 알고 있음.
그러나 인터넷에는 한 가지 문제점이 있는데, HTTP 주소는 상태 유지를 지원하지 않기 때문에 웹서버는 당신이 누구이고, 무엇을 하는지 모름.

ASP는 각 사용자에 대해 고유 쿠키를 만들어 이 문제를 해결함. 쿠키는 컴퓨터로 전송되며 사용자를 식별하는 정보가 포함됨.
이 인터페이스를 Session 객체라고 함.

Session 객체는 사용자 세션에 대한 정보를 저장하거나 설정을 변경함.

Sessio 객체에 저장된 변수는 단일 사용자에 대한 정보를 보유하며, 하나의 어플리케이션의 모든 페이지에서 사용할 수 있음. 세션 변수에 저장되는 공통 정보는 이름, ID 및 기본 설정등임. 서버는 각각의 새 사용자에 대해 새 Session 객체를 만들고, 세션이 만료되면 session 객체를 삭제함.

 


세션의 시작

  • 새 사용자가 ASP 파일을 요청하고 Global.asa 파일에는 Session_OnStart 프로시져가 포함됨.
  • 값은 세션 변수에 저장됨.
  • 사용자가 ASP 파일을 요청하고 Global.asa 파일은 <object> 태그를 사용하여 세션 범위의 개체를 인스턴스화 함.

세션의 종료

사용자가 지정된 기간 (기본 시간은 20분) 동안 어플리케이션에서 페이지를 요청하거나 새로 고치치 않으면 세션은 종료됨.

기본보다 짧거나 긴 시간 초과 간격을 사용하려면 Timeout 속성을 사용해야 함.

  //  세션 유지 시간을 5분으로 설정함.
  Session.Timeout = 5

Abandon 메소드를 사용하여 세션을 즉시 종료함.

  Session.Abondon

세션의 주요 문제는 세션을 종료해야하는 시간임. 사용자의 마지막 요청이 마지막 요청인지 아닌지 알 수 없음. 따라서 세션을 "활성" 상태로 유지해야하는 기간을 알 수 없음. 유휴 세션을 너무 오래 기다리면 서버의 리소스가 소모되지만 세션이 너무 빨리 삭제되면 서버가 모든 정보를 삭제했기 때문에 사용자가 처음부터 다시 시작해야 할 수 있음. 적절한 세션초과 시간을 찾는 것은 어려움.
세션 변수에 데이터를 너무 많이 저장해 둬도 좋지 않음.

 

 


세션 변수 저장 및 검색

세션 객체에서 가장 중요한 것은 변수를 저장할수 있다는 것임.

  <%
    session( "username" ) = "borry"
    seesion( "age" ) = 3
  %>

값이 세션 변수에 저장되면 ASP 어플리케이션의 모든 페이지에서 이 값에 도달할 수 있음.

Welcome <%response.write( session( "username" ) ) %>

세션 객체에 사용자 기본 설정을 저장한 다음 해당 기본 설정에서 엑세스하여 사용자에게 반환할 페이지를 선택할 수도 있음.

  <%IF session( "screenres" ) = "low" THEN%>
    This is the text version of the page
  <%ELSE%>
    This is the multimedia version of the page
  <%END IF%>

 

세션 변수 제거

Contents 컬렉션에는 모든 세션 변수가 포함됨.
remove 메소드를 사용하면 세션 변수를 제거할 수 있음.
"age"값이 18보다 작은 경우 세션 변수 "sale"을 제거함

  <%
    session.( "sale" ) = true

    if session.contents( "age" ) < 18 then
      session.contents.remove( "sale" )
    end if
  %>

세션의 모든 변수를 제거하려면 removeAll 메소드를 사용함.

  session.contents.removeAll()

 

 


컨텐츠 컬렉션을 통해 반복문

contents collection에 모든 세션 변수가 포함됨. contents collection을 반복하여 컬렉션에 무엇이 저장되어 있는지 확인 가능함.

  session( "username" ) = "borry"
  session( "age" ) = 3

  dim i
  for each i in session.contents
    response.write( i & "<br/>" )
  next

contents collection의 항목 수를 모르는 경우 count 속성을 사용할 수 있음.

  <%
    dim i, j
    j = session.contents.count
    response.write( "session variables : " & j )

    for i = 1, to j
      response.write( session.contents( i ) & "<br/>" )
    next
  %>

 

StaticObjects Collection을 통한 반복문

StaticObjects Collection을 반복하여 session 객체에 저장된 모든 개체의 값을 볼 수 있음. 나는 이 코드가 작동 안 하는데 원인은 모르겠다.

  <%
    dim k
    for each k in session.staticObjects
      response.write( k & "<br/>" )
    next
  %>

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] #include  (0) 2021.08.27
[ASP] 어플리케이션  (0) 2021.08.27
[ASP] 쿠키  (0) 2021.08.26
[ASP] form  (0) 2021.08.26
[ASP] 반복문  (0) 2021.08.26

ASP 쿠키

쿠키는 사용자 식별에 사용됨.
동일한 브라우져로 페이지를 요청할 때마다 쿠키도 보냄.
ASP로 쿠키 값을 만들 수도 검색할 수도 있음.

환영 쿠키

  <%
    dim numvisits
    ' response.cookies로 쿠키 생성,
    ' **response.cookies 명령은 <html> 태그보다 앞에 있어야 함
    ' 방문 1일 뒤 쿠키 만료
    response.cookies( "NumVisits" ).expires = date + 1
    ' 쿠키가 만료될 날짜 설정도 가능함
    ' response.cookies( "NumVisits" ).expires = #Dec 10, 2021#

    ' 쿠키의 값 검색
    numvisits = request.cookies( "NumVisits" )

    if numvisits = "" then

      response.cookies( "NumVisits" ) = 1
      response.write( "First Time!" )
    else
      response.cookies( "NumVisits" ) = numvisits + 1
      response.write( numvisits )

      if numvisits = 1 then
        response.write " Time before!"
      else
        response.write " Times BEFORE!"
      end if
    end if
  %>
  <!DOCTYPE html>
  <html>
  <body>
  </body>
  </html>

 

 


A Cookie with Keys

쿠키에 여러 값의 컬렉션이 포함되어 있다면 쿠키에 키가 있다고 함
user라는 쿠키 컬렉션을 만들고, 사용자에 대한 정보가 포함된 키와 값을 할당함

  <%
    Response.Cookies("user")("firstname")="SorR"
    Response.Cookies("user")("lastname")="Ki"
    Response.Cookies("user")("country")="Nowhere"
    Response.Cookies("user")("age")="25"
  %>

서버가 위의 모든 쿠키를 사용자단에 보냈다고 가정하면,
사용자에게 전송된 쿠키를 읽을 수 있어야 함.

  <%
    dim x, y
    for each x in request.cookies
      response.write "<p>" 
      if request.cookies( x ).HasKeys then
        for each y in request.cookies( x )
          response.write( x & " : " & y & " = " & request.cookies( x )( y ) )
          response.write( "<br/>" )
        next
      else
        response.write( x & " = " & request.cookies( x ) & "<br/>" )
      end if
      response.write "</p>"
    next
  %>

출력 결과
user : age = 25
user : country = Nowhere
user : lastname = Ki
user : firstname = SorR

 


브라우져에서 쿠키를 지원하지 않는다면

어플리케이션이 쿠키를 지원하지 않는 브라우져를 다루는 경우 어플리케이션의 한 페이지에서 다른 페이지로 정보를 전달하기 위해 다음 두 가지 방법이 있음.

 

1. URL에 매개변수 추가

URL에 매개변수를 추가할 수 있음.
<a href="welcome.asp?fname=John&lname=Smith">Go to Welcome Page</a>
이후 다음 페이지에서 값을 읽을 수 있음.

  <%
    fname=Request.querystring("fname")
    lname=Request.querystring("lname")
    response.write("<p>Hello " & fname & " " & lname & "!</p>")
    response.write("<p>Welcome to my Web site!</p>")
  %>

 

2. FORM 사용

form을 사용 사용자가 요청을 하면 form은 사용자의 입력 값을 다음 페이지로 전달함.

  <form method="post" action="welcome.asp">
    First Name: <input type="text" name="fname" value="">
    Last Name: <input type="text" name="lname" value="">

    <input type="submit" value="Submit">
  </form>

이후 다음 페이지에서 값을 읽을 수 있음.

  <%
    fname=Request.form("fname")
    lname=Request.form("lname")
    response.write("<p>Hello " & fname & " " & lname & "!</p>")
    response.write("<p>Welcome to my Web site!</p>")
  %>

 

 


728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] 어플리케이션  (0) 2021.08.27
[ASP] 세션  (0) 2021.08.27
[ASP] form  (0) 2021.08.26
[ASP] 반복문  (0) 2021.08.26
[ASP] 조건문  (0) 2021.08.26

ASP form과 사용자 입력

Request.QueryString 및 Request.Form 명령은 form 에서 사용자 입력을 검색하는데 사용함.

 

GET 방식

Request.QueryString 명령어를 사용하여 사용자의 입력을 받음.

  <body>
    <form action="req_query.asp" method="GET">
      String : <input type="text" name="string" size="20" value='<%=request.querystring("string")%>' />
      <input type="submit" value="submit" />
    </form>
    <%
      dim string
      string = request.querystring("string")

      if string <> "" then
        response.write( "string is " & string & "!" )
      end if
    %>
  </body>

POST 방식

Request.Form 명령어를 사용하여 사용자의 입력을 받음.

  <body>
    <form action="02-post_form.asp" method="POST">
      String : <input type="text" name="string" size="20" value='<%=request.form("string")%>' />
      <input type="submit" value="submit" />
    </form>
    <%
      dim string
      string = request.form("string")

      if string <> "" then
        response.write( "string is " & string & "!" )
      end if
    %>
  </body>

 

input:type=[radio]

Request.Form 명령으로 라디오 버튼을 통해 입력을 받음.

  <body>
    <%
      dim cars
      cars = request.form("cars")
    %>
    <form action="03-post_radio_form.asp" method="POST">
      <p>
        SELECT ANY CAR : 
      </p>

      <label for="volvo">volvo</label>
      <input
        type="radio" name="cars" id="volvo"
        value="volvo"
        <%
          if cars = "volvo" then response.write( "checked" )
        %>
      />

      <label for="saab">saab</label>
      <input
        type="radio" name="cars" id="saab"
        value="saab"
        <%
          if cars = "saab" then response.write( "checked" )
        %>
      />

      <label for="BMW">BMW</label>
      <input
        type="radio" name="cars" id="BMW"
        value="BMW"
        <%
          if cars = "BMW" then response.write( "checked" )
        %>
      />

      <br/><br/>

      <input type="submit" value="submit" />
    </form>
    <%
      if cars <> "" then
        response.write( "<p>SELECTED VALUE IS " & cars & "</p>" )
      end if
    %>
  </body>

 

 


사용자 입력

request 객체틑 form에서 정보를 검색하는 데 사용할 수 있음.
사용자 입력은 request.qeurtystring 또는 request.form 명령으로 검색 가능함.

 


request.querystring

request.querystring는 GET 메소드 방식의 request에서 값을 수집하는데 사용함.

  <body>
    <form method="get" action="04-get.asp">
      <label for="fname">First Name<label> : 
      <input
        type="text" name="fname" id="fname"
        value='<%=request.querystring("fname")%>'
      />
      <br/>
      <label for="lname">Last Name<label> : 
      <input
        type="text" name="lname" id="lname"
        value='<%=request.querystring("lname")%>'
      />
      <br/>
      <input type="submit" value="Submit" />
    </form>

    <br/>
    Welcome
    <%
      response.write(request.querystring("fname"))
      response.write(" " & request.querystring("lname"))
    %>
  </body>

request.form

request.form은 POST 메소드 방식의 request에서 값을 수집하는데 사용함.

  <body>
    <form method="post" action="05-post_method.asp">
      <label for="fname">First Name<label> : 
      <input
        type="text" name="fname" id="fname"
        value='<%=request.form("fname")%>'
      />
      <br/>
      <label for="lname">Last Name<label> : 
      <input
        type="text" name="lname" id="lname"
        value='<%=request.form("lname")%>'
      />
      <br/>
      <input type="submit" value="Submit" />
    </form>

    <br/>
    Welcome
    <%
      response.write(request.form("fname"))
      response.write(" " & request.form("lname"))
    %>
  </body>

 

 


form 유효성 검사

사용자 단에서 유효성 검사를하는 것이 빠르고 서버 부하를 줄임.
사용자 입력이 DB에 입력 될 경우 서버단에서 유효성 검사를 해야함.
서버에서 유효성 검사를 하는 제일 좋은 방법은 다른 페이지로 이동하는 대신 양식 자체에 POST 하는 방법임.
이렇게 하면 사용자는 동일한 페이지에서 오류를 확인할 수 있고, 오류를 더 쉽게 찾을 수있음.

 

 


728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] 세션  (0) 2021.08.27
[ASP] 쿠키  (0) 2021.08.26
[ASP] 반복문  (0) 2021.08.26
[ASP] 조건문  (0) 2021.08.26
[ASP] Procedure  (0) 2021.08.26

VBScript 반복문

동일한 코드 블록을 지정된 횟수만큼 실행.

VBScript에는 4개의 반복문이 있음.

  • for ... next : 지정된 횟수만큼 코드 실행
  • for each ... next : 컬렉션 각 항목 또는 배열의 각 요소에 대한 코드 실행
  • do ... loop : 조건이 true 일 때까지 반복
  • while ... w end : 비추

 

for ... next

for ... next문을 이용해서 코드 블럭을 지정된 횐수만큼 수행한다.
for문의 i라는 카운터 값은 시작부터 종료를 세고, next문은 i를 1씩 증가시킨다.

  <% @CODEPAGE="65001" language="vbscript" %>
  <% Response.CharSet = "utf-8" %>
  <!DOCTYPE html>
  <html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <%
      for i = 0 to 5
        response.write( "i : <strong>" & i & "</strong><br/>" )
      next
    %>
  </body>
  </html>

 

 

step 키워드

step 키워드를 사용하면 특정한 값으로 값을 증감 시킬 수 있음.

  for i = 0 to 10 step 2
    response.write( "i : <strong>" & i & "</strong><br/>" )
  next
  for i = 10 to 2 step -2
    response.write( "i : <strong>" & i & "</strong><br/>" )
  next

 

 

exit a for ... next

exit for 키워드를 사용해서 for ... next 문을 종료할 수 있음.

  for i = 0 to 10
    if i = 5 then exit for
    response.write( "i : <strong>" & i & "</strong><br/>" )
  next

 

 


for each ... next loop

for each ... next loop 반복문은 콜렉션의 각 아이템이나, 배열의 각 요소에 대한 코드를 반복한다.

  dim cars(2)
  cars(0) = "Volvo"
  cars(1) = "SAAB"
  cars(2) = "BMW"

  for each e in cars
    response.write( e & "<br/>" )
  next

 

 


do ... loop

원하는 반복 횟수를 모르는 경우 do ... loop문을 사용함.
do ... loop문은 조건이 참인 동안 또는 조건이 참이 될 때까지 코드를 반복함.

조건이 참인 동안 반복

while 키워드를 이용하여 do ... loop 문의 조건을 확인함

  do while i < 10
    response.write( "i : " & i )
    i = i + 1
  loop

i가 9 라면 반복문은 실행되지 않는다.

  do
    response.write( "i : " & i )
    i = i + 1
  loop while i < 10

i가 10보다 작더라도 한번은 실행하고 본다.

 

 

조건이 참이 될때까지 반복

until 키워드를 사용하면 do ... loop 문의 조건을 확인함

  i = 0
  do until i = 10
    response.write( "i : <strong>" & i & "</strong><br/>" )
    i = i + 1
  loop

i가 10이면 코드가 실행되지 않음

  i = 0
  do
    response.write( "i : <strong>" & i & "</strong><br/>" )
    i = i + 1
  loop until i = 10

 

 


do ... loop 문 종료

exit do 키워드를 사용하면 do ... loop 문 종료 가능

  i = 20
  do until i = 10
    i = i - 1
    if i < 10 then exit do
    response.write( "i : <strong>" & i & "</strong><br/>" )
  loop

i가 10과 다르고, 10보다 크면 실행

 

 


728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] 쿠키  (0) 2021.08.26
[ASP] form  (0) 2021.08.26
[ASP] 조건문  (0) 2021.08.26
[ASP] Procedure  (0) 2021.08.26
[ASP] 변수  (0) 2021.08.26

VBScript 조건문

조건문

VBScript에는 4개의 조건문이 있음.

  • if 문
  • if then else 문
  • if then elseif 문
  • select case 문

... 생략

if .. the .. elseif

  i = hour( time )
  response.write( "i : " & i & "<br/>" )

  if i = 8 then
    response.write( "Just started..!" )
  elseif i = 11 then
    response.write( "Hungry" )
  elseif i = 12 then
    response.write( "Lunch-time!" )
  elseif i = 17 then
    response.write( "Time to go home!" )
  else
    response.write( "Holy SHIT!" )
  end if

select case

switch 문과 같음.

  <% @CODEPAGE="65001" language="vbscript" %>
  <% Response.CharSet = "utf-8" %>
  <!DOCTYPE html>
  <html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <%
      d = weekday( data )

      response.write( "weekday( data ) : " & d & "<br/>" )

      select case d
        case 1
          response.write( "SUNDAY 아이스크림 먹고싶다" )
        case 2
          response.write( "MONDAY 출근 안 했으면 좋겠다" )
        case 3
          response.write( "TUESDAY 죽을 것 같다" )
        case 4
          response.write( "WEDNESDAY 점심이 길어서 그나마 참는다" )
        case 5
          response.write( "THURSDAY 피곤해 죽을 것 같다" )
        case 6
          response.write( "FRIDAY 주말 생각해서 참는다" )
        case else
          response.write( "SATURDAY 방전이다" )
      end select
    %>
  </body>
  </html>

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] form  (0) 2021.08.26
[ASP] 반복문  (0) 2021.08.26
[ASP] Procedure  (0) 2021.08.26
[ASP] 변수  (0) 2021.08.26
[ASP] 문법  (0) 2021.08.25

ASP Procedure

ASP에서는 VBScript와 JavaScript 간 프로시져를 상호 호출 가능함.

 

Procedure

다음과 같은 프로시져 기능이 있을 수 있음.

VBScript Procedure

  <!DOCTYPE html>
  <html>
  <head>
    <%
      sub vbproc( x, y )
        response.write( "x * y = " & x * y )
      end sub
    %>
  </head>
  <body>
    <p>Result : <%call vbproc( 3, 4 )%></p>
  </body>
  </html>

다른 스크립팅 언어로 프로시져 / 함수를 작성하려면 <html> 태그 위에 <%@ language="{사용할 언어}" %>를 넣어주면 됨.

js procedure

  <%@ language="javascript" %>
  <!DOCTYPE html>
  <html>
  <head>
    <%
      function jsproc( x, y ) {
        Response.Write( "x * y = " + x * y );
      }
    %>
  </head>
  <body>
    <p>Result : <% jsproc( 3, 4 ); %></p>
  </body>
  </html>

 


VBScript와 JS의 차이점

VBScript로 작성된 ASP 파일에서 VBScript 또는 JS 프로시져를 호출할 때 프로시져 이름 뒤에 call 키워드를 사용할 수 있음.
프로시져에 매개변수가 필요한 경우 call 키워드를 사용할 때 매개변수 목록을 괄호로 묶어야 함. call 키워드를 생략하는 경우 매개변수 목록을 괄호로 묶지 않아야 함.
프로시져에 매개변수가 없으면 괄호는 선택사항임.

JS로 작성된 ASP 파일에서 JS 또는 VBScript 프로시져를 호출할 때 항상 프로시져 이름 뒤에 괄호를 사용해야 함.

 


VBScript Procedure

VBScript에는 두가지 종류의 프로시져가 있음.

  • Sub Procedure
  • Function Procedure

VBScript Sub Procedure

  • sub, end sub 으로 묶인 일련의 문장임.
  • 작업을 하지만 값을 반환하지 않음.
  • 인수를 취할 수 있음.
  sub mysub() 
    some statements
  end sub
  sub mysub( arg1, arg2 ) 
    some statements
  end sub
  <!DOCTYPE html>
  <html>
  <body>
    <%
      sub mysub() 
        response.write( "written by a sub procedure.<br/>" )
      end sub

      response.write( "writtten by the script.<br/>" )
      call mysub()
      call mysub
      mysub()
      mysub
    %>
  </body>
  </html>

 

VBScript Function Procedure

  • function, end function으로 묶인 일련의 문장.
  • 작업을 하고 값을 반환함.
  • 이름에 값을 할당하여 값을 반환함.
  • 호출 프로시져에 의새 인수를 취할 수 있음.
  • 인수가 없으면 빈 괄호 ()를 포함 해야함.
  function func()
    some statements
    func = some value
  end function
  function func( arg1, arg2 )
    some statements
    func = some value
  end function

 

프로시져 호출

  <!DOCTYPE html>
  <html>
  <body>
    <%
      ' 인수 a, b를 받아서 그 합을 반환하는 func
      function func( a, b )
        func = a + b
      end function

      response.write( func( 5, 9 ) )
    %>
  </body>
  </html>

 

VBScript를 이용하여 프로시져 호출

ASP에서 javascript 와 VBScript 에서 만든 프로시져를 모두 호출하는 방법

  <!DOCTYPE html>
  <html>
  <head>
    <%
      sub vbproc( x, y )
        response.write( x * y )
      end sub
    %>
    <script language="javascript" runat="server">
      function jsproc( x, y ) {
        Response.Write( x * y );
      }
    </script>
  </head>
  <body>
    <p> call vbproc : <%call vbproc( 3, 4 )%></p>
    <p> call jsproc : <%call jsproc( 3, 4 )%></p>
  </body>
  </html>

 


728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] 반복문  (0) 2021.08.26
[ASP] 조건문  (0) 2021.08.26
[ASP] 변수  (0) 2021.08.26
[ASP] 문법  (0) 2021.08.25
[ASP] Intro  (0) 2021.08.25

ASP 변수

변수의 기본 개념은 다르지 않음.


예제

변수 선언

변수를 선언하고 변수에 값을 할당하고 텍스트에서 값을 출력하는 방법

  <!DOCTYPE html>
  <html>
  <body>
    <%
      dim name
      name = "ASDF Stupid"
      response.write("My name is: " & name)
    %>
  </body>
  </html>

반복문

  <% @CODEPAGE="65001" language="vbscript" %>
  <!DOCTYPE html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <html>
  <body>
    <%
      dim i
      for i = 1 to 6
        response.write( "<h" & i & ">Heading " & i & "</h" & i & ">" )
      next
    %>
  </body>
  </html>

배열 생성

  <!DOCTYPE html>
  <html>
  <body>
    <%
      dim famname(5), i
      famname(0) = "Tov Lo"
      famname(1) = "Flume"
      famname(2) = "Heize"
      famname(3) = "쓰레기 같은"
      famname(4) = "ASP"
      famname(5) = "Borge"

      for i = 0 to 5
        response.write(famname(i) & "<br>")
      next
    %>
  </body>
  </html>

VBScript를 이용한 시간 출력

서버의 시간 출력

  <% @CODEPAGE="65001" language="vbscript" %>
  <!DOCTYPE html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <html>
  <body>
    <%
      dim h
      h = hour( now() )

      response.write( "<p>" & now() & "</p>" )

      if h < 12 then
        response.write( "Good Morning!" )
      else
        response.write( "Good Day!" )
      end if
    %>
  </body>
  </html>

JavaScript를 이용한 시간 출력

위의 예제와 같지만 JS를 이용함.
W3C예제를 따라한건데, javascript를 사용하는건지 JScript를 사용하는건지 솔직히 분간은 안됨.

  <%@ language="javascript" %>
  <!DOCTYPE html>
  <html>
  <body>
    <%
      var d = new Date();
      var h = d.getHours();

      Response.Write( "<p>" + d + "</p>" );

      if ( h < 12 ) {
        Response.Write("Good Morning!");
      } else {
        Response.Write("Good Day!");
      }
    %>
  </body>
  </html>

변수 생성 및 변경

  <!DOCTYPE html>
  <html>
  <body>
  <%
    dim asdf
    asdf = "Flume"

    response.write(asdf)

    response.write("<br>")

    asdf = "Tove Lo"
    response.write(asdf)
  %>
  </body>
  </html>

대수학

x = 5, y = 6, z = x + y
x와 y에 값을 저장할 수 있고, 이 정보를 이용하여 z의 값 11을 구할 수 있음.
이런 x, y, z를 변수라고 함.

VBScript 변수

VBScript의 변수는 값이나 표현식을 저장하는 데 사용됨.
변수는 x와 같은 짧은 이름이나 carname과 같이 더 명시적인 이름을 사용할 수 있음.

  • VBScript의 변수 작명 규칙
    • 문자로 시작해야 함
    • .를 포함할 수 없음
    • 255자를 넘길 수 없음

VBScript의 모든 변수는 타입이 지정되어 있지 않은 variant 유형임

VBScript 변수 선언

VBScript에서 변수를 생성하는 것은 선언 변수라고 함.
dim, public, private 키워드를 이용해서 VBScript 변수를 선언할 수 있음.

  dim x
  dim carname

두개의 변수 x와 carname을 만들었음.
스크립트에서 이름을 사용해서 변수를 선언 할 수 있음.

  carname = "Porsche"

변수에 값도 할당했음. 변수 이름은 carname, 값은 Porsche 임. 스크립트에서 변수 이름의 철자를 잘못 입력 할 수 있고, 코드가 실행될 때 의도하지 않은 결과를 초래할 수 있음.
carname 변수를 carnime으로 잘못 입력하면 스크립트는 carnime라는 새 변수를 자동으로 생성함.
스크립트가 이런 의도치 않은 변수 생성을 막으려면 Option Explicit 옵션을 넣을 수 있음.
스크립트 맨 위에 Option Explicit을 넣으면 됨.

  <%@ Language=VBScript %>
  <% Option Explicit %>
  <!DOCTYPE html>
  <html>
  <body>
    <%
      dim x
      dim carname

      carname = "Porsche"

      response.write( "carname : " & carname & "<br/>" )

      ' Option Explicit 설정이 있어서 아래 구문은 에러가 생김
      carnime = "carnime"


      public a
      a = "public"
      response.write( "a : " & a & "<br/>" )
      private c
      c = "private"
      response.write( "c : " & c & "<br/>" )
    %>
  </body>
  </html>
  carname : Porsche
  Microsoft VBScript 런타임 오류 오류 '800a01f4'

  변수가 정의되지 않았습니다.: 'carnime'

  /test/test/example.asp, 줄 15
  • public, private 차이는 알 수 없네

VBScript 배열 변수

배열 변수는 단일 변수에 여러 값을 저장하는데 사용함.

  <!DOCTYPE html>
  <html>
  <body>
    <%
      ' 2차원 배열 선언
      dim arr(2, 2)

      ' 할당
      arr( 0, 0 ) = "Volvo"
      arr( 0, 1 ) = "BMW"
      arr( 0, 2 ) = "Ford"

      arr( 1, 0 ) = "Apple"
      arr( 1, 1 ) = "Orange"
      arr( 1, 2 ) = "Banana"

      arr( 2, 0 ) = "Coke"
      arr( 2, 1 ) = "Pepsi"
      arr( 2, 2 ) = "Sprite"

      for i = 0 to 2
        response.write( "<p>" )
          for j = 0 to 2
            ' 배열에서 인덱스로 값 출력
            response.write( arr(i, j) & "<br />" )
          next
        response.write( "</br>" )
      next
    %>
  </body>
  </html>

변수의 수명

프로시져 외부에서 선언된 변수는 ASP 파일의 모든 스크립트에서 엑세스하고 변경 가능함.

프로시져 내부에서 선언된 변수는 프로시져가 실행될 때마다 생성되고 소멸함. 프로시져 외부의 어떤 스크립트도 변수에 엑세스하거나 변수를 변경할 수 없음.

둘 이상의 ASP 파일에 엑세스할 수 있는 변수를 선언하려면 세션 변수 또는 어플리케이션 변수로 선언해야 함.

세션변수

세션 변수는 단일 사용자에 대한 정보를 저장하는 데 사용되며 하나의 어플리케이션의 모든 페이지에서 사용할 수 있음.
일반적으로 세션 변수에 저장되는 정보는 이름, ID 및 기본 설정임.

어플리케이션 변수

어플리케이션 변수는 한 어플리케이션의 모든 페이지에서 사용 가능.
어플리케이션 변수는 하나의 특정 어플리케이션에 있는 모든 사용자에 대한 정보를 저장하는 데 사용함.


출처 : https://www.w3schools.com/asp/asp_variables.asp

728x90
반응형

'WEB > ASP' 카테고리의 다른 글

[ASP] 조건문  (0) 2021.08.26
[ASP] Procedure  (0) 2021.08.26
[ASP] 문법  (0) 2021.08.25
[ASP] Intro  (0) 2021.08.25
[ASP] Classic ASP 입문  (1) 2021.08.25

+ Recent posts