1. CreateObject 메소드 : ASP.DLL에 없는 외부 라이브러리를 사용할 수 있게 해준다.

FileSystemObject나 ADO 같은 것들은 ASP.DLL에 존재하지 않는다. 이런 것들을 사용하기 위해서 CreateObject 메소드로 해당 객체의 인스턴스를 만들어 그 객체의 기능을 사용할 수 있게 해준다.

Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set adoCon = Server.CreateObject("ADODB.Connection")

 

2. URLEncode 메소드 : 하이퍼링크로 URL에 특수문자를 넣기 위해 사용한다.

i.e. <ahref="movie.asp?title= 48+1"> 를 입력하게 되면 '+' 같은 특수문자는 공백으로 인식되어버린다. '+'를 입력하기 위해서는 ASCII (아스키) 테이블의 코드표로 바꿔야 한다. 이것을 자동으로 해주는 것이 URL Encode 메소드다.

<%@Language="VBScript" CODEPAGE="65001" %>
<%
  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    Hellow World <br><br>
    <%
      tmpstring = "48+1"
      Response.Write tmpString
    %>
    <br><br>

    <a href="movie.asp?title=<%=Server.URLEncode(tmpString)%>">링크</a>
  </body>
</html>

이런식으로 보내면 URL 링크는 아래와 같은 주소로 가게 된다.

http://localhost/tree/movie.asp?title=48%2B1

'48+1'이 '48 1'로 공백으로 가지 않고, 아스키 코드로 변환되어 '48%2B1'로 잘 연결된다.

참고 : <%=Server.URLEncode(tmpString)%> 이 부분에서 <%Server.URLEncode(tmpString)%>로 입력하면 해당 메소드가 작동하지 않는다. 문법상 <%= %> 로 써서 '='을 꼭 써야하는 것 같다.

 

 

Tag. url encode, url encoder, URL encode, URL encoder, asp ascii, asp 아스키, asp ASCII, ASP ascii, ASP 아스키, ASP ASCII

Response 객체가 가지고 있는 명령

종류 설명
컬렉션 Cookies 클라이언트 브라우저에 쿠키값을 보낸다.
프로퍼티 Buffer 페이지 결과가 버퍼 되었는지 여부를 보낸다.
CacheControl 프록시 서버가 ASP에 의해 작성된 결과를 캐시할 것인지 지정한다.
Charset CharacterSet을 보낸다.
ContentType application/xml, audio/aac, text/html... 응답 데이터의 형태를 보낸다.
Expires 클라이언트 브라우저에 캐시된 페이지가 만료되는 시간을 지정한다.
Expiresabsolute 클라이언트 브라우저에 캐시된 페이지가 만료되는 날짜 및 시간을 지정한다.
IsClientConnected 클라이언트가 서버와 연결중인지를 나타낸다.
PICS Platform for Internet Content Selection
Status 서버의 HTTP 상태 코드. (1xx : 조건부 응답, 2xx : 성공, 3xx : 리다이렉션
4xx : request 오류/클라이언트 오류, 5xx : response 오류/서버 오류)
greendreamtrre.tistory.com/416
메소드 AddHeaderHTML 헤더 내의 값을 추가하거나 변경한다.
AppendToLog 요청에 대한 웹 서버 로그 항목 끝에 문자열을 추가한다.
BinaryWrite 문자 집합을 변환하지 않고 현재 HTTP 출력에 텍스트로 전송한다.
Clear 버퍼된 모든 HTML 출력을 지운다.
End 버퍼에 저장된 데이터를 클라이언트에 전송하며 이후 스크립트 명령을 중단한다.
Flush 버퍼에 저장된 데이터를 클라이언트에 전송하며 이후 스크립트 명령을 계속 진행한다.
Redirect 클라이언트를 요청한 것과 다른 URL로 보낸다.
Write HTML 출력에 변수를 문자열 형태로 기록한다.

 

 

Request 객체에는 5개의 컬렉션(Map과 유사), 1개의 속성, 1개의 메소드가 존재한다. (거의 컬렉션만 사용)

배   열 : 배열이름(인덱스) = 데이터  ex) arrResult(0) = "김덕영"
컬렉션 : 컬렉션이름(이름) = 데이터  ex) Request.QueryString("name") = "김덕영"

 

1. Collection

1 ) QueryString 컬렉션 : HTML Form 태그의 GET 방식 데이터를 얻는다.

i.e. http://www.dukyoung.net/test.asp?lastname=kim&firstname=dukyoung

lastName = Request.QueryString("lastname") 에는 "kim" 이라는 값이 저장되며,
firstName = Request.QueryString("firstname") 에는 "dukyoung" 이라는 값이 저장됩니다.

 

2 ) Form 컬렉션 : HTML Form 태그의 POST 방식 데이터를 얻는다.

i.e.

strName = Request.Form ("txtName")
strPassword = Request.Form ("txtPassword")

 

3 ) Cookies 컬렉션 : '서버가' 클라이언트 PC에 저장된 쿠키 정보를 읽어올 때 사용한다.

i.e. 사이트에 다시 접속했을 때 ID가 미리 입력되는 것이 어떻게 작동할까?

1 ) 클라이언트가 사이트에 접속 후 ID를 클라이언트 PC의 쿠키에 저장한다.
2 ) 나중에 클라이언트가 해당 사이트에 다시 접속할 때 서버는 클라이언트 PC에 저장된 ID를 Cookies 컬랙션을 이용해 읽어온다.
3 ) 서버가 페이지를 내려 보낼 때 이 쿠키를 통해 얻은 ID를 미리 적어 클라이언트에 응답을 보낸다.

id = Request.Cookies ("userid")

 

4 ) ClientCertificate 컬렉션

https 접속을 위해 사용자 인증 정보를 저장하는 컬렉션이다.

i.e. <%= Request.ClientCertificate("IssuerCN") %>

 

5 ) ServerVariables 컬렉션 : 클라이언트가 서버로 값을 전달할 때 자동으로 함께 전달되는 값들을 저장한다.

HTTP 헤더값, 웹 서버 자체의 몇 가지 환경 변수 값들을 저장한다.

servervariables.asp

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<html>
  <head>
    <meta charset="utf-8">
    <title>ServerVariables.asp</title>
  </head>
  <body>
    <table border>
      <tr>
        <td><b>Server Variable</b></td>
        <td><b>Value</b></td>
      </tr>
      <% for each strKey in Request.ServerVariables %>
      <tr>
        <td><%=strKey%></td>
        <td><%=Request.ServerVariables(strKey)%></td>
      </tr>
      <% next %>
    </table>
  </body>
</html>

참고 : Request 객체의 ServerVariables 'Key:Value'값 모두를 하나씩 읽어올 것이기 때문에 for each in문을 사용했다. 특정 값만 가져오고 싶다면 다음과 같이 사용할 수 있다. Request.Servervariables("HTTP_USER_AGENT")

 

참고 : Request 객체의 컬렉션은 자주 사용되기 때문에 이름을 생략하고 사용할 수 있다.

Request.QueryString("count")Request("count") 로 사용할 수 있으며,
Request.Form("count")Request("count") 로 사용 가능하다.

동일한 name을 가진 것이 있다면? 우선순위는 다음과 같다.

QueryString > Form > Cookies > ClientCertificate > ServerVariables

하지만 생략하지 않고 쓰는 것이 좋다.

 

2. Property

1 ) TotalBytes 속성 : 클라이언트가 서버에 보낸 정보의 바이트의 전체 개수

전체 문자열이 몇 개인지보다는 어떤 컬렉션과 값이 넘어온지가 중요하기 때문에 거의 사용되지 않는다.

i.e.

<%
    Dim intCount
    intCount = Request.TotalBytes
%>

 

3. Method

1 ) BinaryRead(count) 메소드 : HTML Form 태그의 POST 방식 데이터를 'count 바이트'만큼의 데이터를 얻는다.

Request.Form 컬렉션와 충돌하기 때문에 동시에 사용하지 않는다.

 

트랜잭션 : 반드시 동시에 이루어져야 하는 작업 'All or Nothing'

i.e. 'A의 계좌에서 만 원을 인출한다', 'B의 계좌에 만 원을 입금한다.'는 동시에 이루어져야 한다.

트랜잭션의 특징

1 ) 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다. 'All or Nothing!!'
2 ) 일관성(Consistency) : 트랜잭션의 처리 결과는 시작 시점과 종료 시점에 모두 일관성이 있어야 한다. 트랜잭션이 진행되는 도중 DB가 업데이트 되어도 트랜잭션은 처음 참조한 DB로 진행된다.
3 ) 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행될 때, 서로 다른 트랜잭션의 연산에 끼어들 수 없다.
4 ) 지속성(Durability) : 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 한다.

1. Request 객체
2. Response 객체
3. Application 객체
4. Session 객체
5. Server 객체
6. ObjectContext 객체
7. ASPError 객체

순서로 정리한다.

 

아래 객체는 전부 웹서버 입장에서 해석하면 된다.

1. Request 객체 : 클라이언트가 전달한 정보를 얻는 객체

어떤 클라이언트(사용자)가 웹 브라우저를 열고 웹서버에 전달한 정보를 검색할 때 사용되는 객체로 다음과 같은 일을 할 수 있다.

1 ) URL Query로부터 정보를 얻는다. (GET 방식)
2 ) From 태그 등을 통해 전달된 데이터로부터 정보를 얻는다. (POST 방식)
3 ) 클라이언트 브라우저의 쿠키값을 얻는다.
4 ) 클라이언트에서 전달한 보안 코드를 얻는다.
5 ) 웹서버 자체에 대한 일반 정보(HTTP 서버 변수)를 얻는다.

greendreamtrre.tistory.com/618

 

2. Response 객체 : 클라이언트로 정보를 어떤 방식으로 보여줄지를 결정하는 객체

1 ) 클라이언트로 전달되는 페이지에 정보를 추가한다.
2 ) 클라이언트 브라우저에 쿠키값을 보낸다.
3 ) 페이지 리다이렉션(Redirection)을 한다.
4 ) 페이지 생성과 동시에 정보를 전달할지, 생성된 다음 정보를 전달할지를 결정한다.
5 ) 페이지 속성(HTML 헤더, 타입)들을 제어하고 변경한다.

 

3. Application 객체 : 하나의 프로그램 전체

웹 어플리케이션이 시작하거나 종료할 때, 지정된 특정한 작업을 수행하기 위해 주로 사용되는 객체다.

Application 객체는 모든 영역에 걸쳐 있는 특성으로, 전역변수를 저장할 때도 유용하게 사용된다.

i.e.
1 ) 웹서버 Application을 켠다.
2 ) 클라이언트가 접근하면 웹서버 Application이 작동한다. (Application 실행)
3 ) 중간에 아무리 많은 사람이 나가고, 들어가고, 페이지를 이동해도 Application이 실행된 것은 아니다.
4 ) 모든 클라이언트가 웹서버 연결을 종료하면 웹서버 Application이 종료된다. (Application 종료)

 

4. Session 객체 : 방문자마다 각각 다른 정보를 저장하기 위해 사용하는 객체

Application 객체를 사용하기에는 방문자가 증가하면 생성해야하는 전역변수가 어마어마하게 증가한다. 따라서 이를 관리하려면 코드의 복잡도가 증가한다. 따라서 이러한 문제를 해결하기 위해 Session이라는 객체를 사용한다.

i.e. 로그인 정보

 

5. Server 객체 : 서버 상에서 특정한 작업들을 실행하는 객체

서버의 운영을 돕는 객체다.

i.e.
1 ) 페이지 응답의 한계 시간을 설정한다.
2 ) 사용자가 전달한 문자열을 HTML 형식으로 변경한다.
3 ) 사용자가 전달한 문자열을 올바른 URL 문자열의 형식으로 변경한다.
4 ) 가상 경로(URL)를 서버 컴퓨터의 실제 경로로 변경한다.
5 ) 다른 페이지로 이동하여 실행 경로를 변경한다.
6 ) CreateObject메소드를 사용하여 컴포넌트의 인스턴스를 생성한다.

 

6. ObjectContext 객체 : Transaction을 시작하거나 종료할 때 사용하는 객체
    (IIS 버전이 5.0으로 올라가면서 필요성이 줄어 거의 사용하지 않는다.)

트랜잭션 : 반드시 동시에 이루어져야 하는 작업 'All or Nothing'

i.e. 'A의 계좌에서 만 원을 인출한다', 'B의 계좌에 만 원을 입금한다.'는 동시에 이루어져야 한다.

트랜잭션의 특징

1 ) 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다. 'All or Nothing!!'
2 ) 일관성(Consistency) : 트랜잭션의 처리 결과는 시작 시점과 종료 시점에 모두 일관성이 있어야 한다. 트랜잭션이 진행되는 도중 DB가 업데이트 되어도 트랜잭션은 처음 참조한 DB로 진행된다.
3 ) 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행될 때, 서로 다른 트랜잭션의 연산에 끼어들 수 없다.
4 ) 지속성(Durability) : 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 한다.

 

7. ASPError 객체

ASPError 객체는 에러 처리 작업을 위해 ASP 3.0에서 추가된 객체다. Windows NT 4.0 이하에서는 사용이 불가하고, Windows 2000 이상에서 사용 가능하다.

 

 

Tag. asp ObjectContext, ASP ObjectContext, ASP objectcontext, asp ASPError, ASP ASPError, ASP asperror, 객체 객체, entity, object, Entity, Object, 트랜잭션, Transaction, transaction, ASP 에러, asp 에러, ASP 에러 객체, asp 에러 객체

아래와 같이 입력하면 된다.

cmd /c 명령어 

서피스 계열에서 잠자기에서 깨어난 후 무선랜 속도가 1Mbps 정도로 굼벵이로 바뀌는 문제가 있다고 한다.

마벨 계열 무선랜의 문제라는데...

시작 > 'regedit' 실행 > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mrvlpcie8897 에서

'TxAMSDU'라는 값을 찾아 0으로 바꾸고 재부팅.

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<HTML>
  <HEAD>
    <TITLE>사용자로부터 정보 얻기 2</TITLE>
  </HEAD>
  <BODY>
    1. input type=text <br />
    size=60 placeholder='입력해 보세요' maxlength=7 <br />
    <input type=text name=txt1 size=60 placeholder='입력해 보세요' maxlength=7> <br />
    size=75 value='입력해 보세요' readonly <br />
    <input type=text name=txt2 size=75 value='입력해 보세요' readonly> <br />
    <br />

    2. TEXTAREA <br />
    cols=70 rows=4 <br />
    <textarea name=txtComment cols=70 rows=4>지우고 입력하세요.</textarea> <br />
    <br />

    3. INPUT TYPE=PASSWORD <br />
    <input type="password" name="txtPasword" size=60 maxlength=10> <br/>
    <br />

    4. INPUT TYPE=RADIO <br />
    input type="radio" name="sex", 같은 name으로 묶는다. value 값을 줄 수 있고 checked를 통해 미리 체크할 수 있다. <br />
    <input type="radio" name="sex" value="1">2000년 이전 남성
    <input type="radio" name="sex" value="2">2000년 이전 여성 <br />
    <input type="radio" name="sex" value="3">2000년 이후 남성
    <input type="radio" name="sex" value="4">2000년 이후 여성 <br />
    <br />

    5. INPUT TYPE=CHECKBOX <br />
    radio와는 다르게 name을 각각 따로 잡아준다. <br />
    <input type="checkbox" name="hobby1" value="music">음악
    <input type="checkbox" name="hobby2" value="movie">영화
    <input type="checkbox" name="hobby3" value="exercise">운동
    <input type="checkbox" name="hobby4" value="reading">독서 <br />
    <br />

    6. SELECT & OPTION (드롭박스 형식의 선택) <br />
    <select name="color">
      <option value="red">빨간색</option>
      <option value="orange">주황색</option>
      <option value="yellow">노란색</option>
      <option value="green">녹색</option>
      <option value="blue">파란색</option>
      <option value="navy">남색</option>
      <option value="purple">보라색</option>
    </select>
    <br /><br />
    size=3 <br />
    <select name="color"size=3>
      <option value="red">빨간색</option>
      <option value="orange">주황색</option>
      <option value="yellow">노란색</option>
      <option value="green">녹색</option>
      <option value="blue">파란색</option>
      <option value="navy">남색</option>
      <option value="purple">보라색</option>
    </select>
    <br /><br />
    size=3 multiple : contorl키 누르고 다중선택 가능 <br />
    <select name="color"size=3 multiple>
      <option value="red">빨간색</option>
      <option value="orange">주황색</option>
      <option value="yellow">노란색</option>
      <option value="green">녹색</option>
      <option value="blue">파란색</option>
      <option value="navy">남색</option>
      <option value="purple">보라색</option>
    </select>
    <br /><br />

    7. UL & LI 순서가 없는 리스트(중앙 점으로 리스트 생성)
   <ul>
     <li>수박</li>
     <li>메론</li>
     <li>배</li>
     <li>사과</li>
     <li>바나나</li>
   </ul>

   8. OL & LI 순서가 있는 리스트(자동으로 번호를 생성)
   <ol>
     <li>등심</li>
     <li>안심</li>
     <li>부채살</li>
     <li>제비추리</li>
     <li>살치</li>
   </ol>
  </BODY>
</HTML>

 

 

실습하기

resist2.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>사용자로부터 정보 얻기 - 두번째</TITLE>
  </HEAD>
  <BODY>
    <FORM NAME=frmInfo METHOD=POST ACTION=regist2_ok.asp>
      이름 : <INPUT TYPE=TEXT NAME=txtName SIZE=30><BR>
      비밀번호 : <INPUT TYPE=PASSWORD NAME=txtPassword SIZE=30><BR>
      성별 : <INPUT TYPE=RADIO NAME=rdoSex VALUE='M' CHECKED> 남자
               <INPUT TYPE=RADIO NAME=rdoSex VALUE='F'> 여자<BR>
      관심사 : <INPUT TYPE=CHECKBOX NAME=chkFavor1 VALUE='on'> 영화
                  <INPUT TYPE=CHECKBOX NAME=chkFavor2 VALUE='on'> 만화
                  <INPUT TYPE=CHECKBOX NAME=chkFavor3 VALUE='on'> 쇼핑
                  <INPUT TYPE=CHECKBOX NAME=chkFavor4 VALUE='on'> 운동<BR>
      직업 : <SELECT NAME=sltJob>
               <OPTION VALUE=1>중학생</OPTION>
               <OPTION VALUE=2>고등학생</OPTION>
               <OPTION VALUE=3 SELECTED>대학생</OPTION>
               <OPTION VALUE=4>직장인</OPTION>
               <OPTION VALUE=5>주부</OPTION>
               </SELECT><BR>
      소개 : <TEXTAREA NAME=txtCom COLS=30 ROWS=3></TEXTAREA><BR>
      <INPUT TYPE=SUBMIT VALUE='전송'>
    </FORM>
  </BODY>
</HTML>

 

resist2_ok.asp

regist2.asp에서 form에 실어 보낸 값을 name을 이용해 읽어온다.

asp를 이용해 읽어와 html에 뿌려주는 것이기 때문에 Request와 Response는 모두 asp 문법으로 <% %>로 감싸준다.

읽어올 때Request.Form ("이름")으로 읽어와 변수에 담고,

화면에 뿌려줄 때Response.Write "문자열" & 변수명 과 같이 뿌려준다.

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<%
  DIM strName, strPassword, strSex, strJob, strComment
  DIM strFavor1, strFavor2, strFavor3, strFavor4

  strName = Request.Form ("txtName")
  strPassword = Request.Form ("txtPassword")
  strSex = Request.Form ("rdoSex")
  strFavor1 = Request.Form ("chkFavor1")
  strFavor2 = Request.Form ("chkFavor2")
  strFavor3 = Request.Form ("chkFavor3")
  strFavor4 = Request.Form ("chkFavor4")
  strJob = Request.Form ("sltJob")
  strComment = Request.Form ("txtCom")

  Response.Write "이름은 = " & strName & "<BR>"
  Response.Write "비밀번호는 = " & strPassword & "<BR>"
  Response.Write "성별은 = " & strSex & "<BR>"
  Response.Write "관심사(영화)는 = " & strFavor1 & "<BR>"
  Response.Write "관심사(만화)는 = " & strFavor2 & "<BR>"
  Response.Write "관심사(쇼핑)는 = " & strFavor3 & "<BR>"
  Response.Write "관심사(운동)는 = " & strFavor4 & "<BR>"
  Response.Write "직업은 = " & strJob & "<BR>"
  Response.Write "소개는 = " & strComment & "<BR>"
%>

 

 

+ Recent posts