http://www.starcraft.or.kr/bbs/board.php?bo_table=asp_study&wr_id=61


 

1. Response 객체

Response 객체는 응답이라는 그 용어에서 알 수 있듯이 서버가 클라이언트의 요청에 응답하는 객체이다. 즉 서버에서 클라이언트로 자료를 전송하는데 관련된 객체이다.

이때 서버에서 클라이언트로 전송되는 자료들은 HTTP 헤더정보, 텍스트, HTML 태그 , 클라이언트 Script-x 등의 자료가 전송되어 진다.

일단 Response 객체가 가지고 있는 기능은 전체적으로 한번 살펴 보도록 하자 .

(1) 컬렉션(Collection)

Collection 설명
Cookies 클라이언트의 웹브라우저와 관련된 쿠키정보


(2) 속성(Property)

Property 설명
Buffer 클라이언트의 웹브라우저가 서버에서 전달된 정보를 모두 전달 받을때까지 임지저장공간(buffer)에 자징한 후, 표시하라는 명령이 있을때 까지 기다릴 것인가에 대한 속성(읽기/쓰기)
CacheControl 프록시 서버가 ASP에 의해 생성된 결과를 캐싱할지 여부를 결정한다. (읽기/쓰기)
Charset 컨텐트 형식 헤더부분에 문자세트를 덧붙인다.(읽기/쓰기)
ContentType 응답시 HTTP 컨텐트의 형식을 나타낸다.(예:Text/HTML)(읽기/쓰기)
Expires 브라우저에 캐시된 페이지를 유지할 시간의 길이를 나타낸다. 단위는 분이다. (읽기/쓰기)
ExpiresAbsolute 브라우저에 캐시된 페이지를 삭제할 날짜와 시간을 지정한다. (읽기/쓰기)
IsCilentConnected 읽기전용으로 클라이언트 브라우저에서 서버로의 연결을 해제했는지의 여부를 알려준다.(읽기)
PICS 응답헤더의 PICS-Label 필드에 PICS 레이블을 추가한다. (읽기/쓰기)
Status 서버에 의해 리턴되는 HTTP의 상태값을 나타낸다. (읽기/쓰기)

(3) 메소드(Method)

Method 설명
AddHeader HTML 헤더 내의 값을 추가하거나 변경한다.
AppendToLog 웹 서버 로그 목록에 텍스트를 추가한다.
BinaryWrite 문자세트의 변한없이 브라우저에 text 전송을 한다. 즉 클라이언트의 웹브라우저에 전달된 자료를 문자세트의 변환없이 표시한다.
Clear Buffer에 버퍼링되어 있는 HTML내용을 삭제한다.
End 페이지에 대한 프로세스를 중단하고, 현재까지의 결과만을 리턴한다.
Flush Buffer에 버퍼링된 내용을 즉시 클라이언트에 전송한다.
Redirect 클라이언트의 브라우가 다른 URL로 이동하도록 한다.
Write 현재 버퍼링되는 페이지에 문자열을 출력한다.


뭐...대충 살펴보더라도 출력에 관련된 내용들이다. 굉장히 많은 것 같이 보인다.

머리가 아프다. 이걸 전부다 꼭 전부다 알아야 하나? 공부 해야만 하나? 차라리 포기할까?

지금 막 ASP를 시작하는 사람들에게는 많아 보이는 것은 당연하다. 하지만 기본적으로 자주 사용되는 것(빨간색으로 표시된것들..)만 우선 익혀 놓고 나머지는 어느 정도 익숙해진 다음에 살펴보는 것도 괜찮다.

가장 많이 사용하는 것은 아마도 write 메소드가 아닌가 싶다. write 하나만 알아도 간단한 ASP동작을 시키는데 별 지장이 없을 것이다.

2. 쿠키 컬렉션(Cooki colletion)

(1) 컬렉션

컬렉션이란 웹에서 사용되는 독특한 자료형으로 'Data' 와 그 데이터를 찾을 수 있는 'Key' 의 쌍으로 구성되어져 있다. 즉 저장되어져 있는 data를 key로 구분하여 처리하는 것이다.

Collection = Key + Data

(2) 쿠키

쿠키는 웹서버가 클라이언트에 임의의 정보를 보관하기 위해 사용하는 컬렉션이다. 이는 웹서버가 클라이언트에 대한 관리 목적이나 처리 목적으로 특별한 정보를 사용하는데 그 정보를 서버에 두지 않고 클라이언트에 심어 놓고, 필요할 때 그 데이터를 취해 사용한다. 이렇게 하는 이유중 하나가 서버의 부담을 줄이기 위해서다.

쿠키 컬렉션을 이용하여 클라이언트에 정보를 저장하는 방법은 다음과 같다.

Response.Cookies("쿠키이름")="쿠키값"


정보를 기록(출력)하는 것이므로 response 객체를 이용하고, 쿠키에 관련된 정보이므로 cookie 컬렉션을, 그리고 쿠키이름을 Key 로, 쿠키값을 data로 처리하는 것이다.

사용예는 다음과 같다.

Response.Cookies("Visit")="2005-05-30"


이러면 클라이언트의 컴퓨터에 이 정보가 기록이 되고 서버는 나중에 request 객체를 이용하여 이 정보를 가져올 수 있다. 이렇게 하나의 키에 하나의 데이터를 쌍으로 처리하는 것을 컬렉션이라 하고, 쿠키는 키 하나, 데이터 하나만을 처리하는 것뿐만 아니라 그룹을 생성하고 그 그룹의 하위에 킹하 데이터를 여러개 설정하여 관리 할 수 있다.

Response.Cookies("쿠키이름")("하위쿠키이름")="쿠키값"


첫번째 쿠키이름이 그룹의 이름이 되는 것이다.

사용예는 다음과 같다.

Response.Cookies("Visit")("yy")="2005"
Response.Cookies("Visit")("dd")="05"
Response.Cookies("Visit")("mm")="30"


(3) 쿠키 속성

쿠키에는 다음과 같은 속성이 있다.

Property 설명
Domain 해당 쿠키가 적용될 서버 도메인에 대한 속성(쓰기)
지정하면 쿠키는 지정된 도메인 요청에만 보내진다.
Expires 해당 쿠키의 만료기간에 대한 속성(쓰기)
세션이 긑난 후 쿠키가 클라이언트 디스크에 저장되기 위한 날짜가 헐당되어야 한다. 현재 날짜 이후의 날짜가 세팅되지 않으면 쿠키는 세션이 끝날때 만료된다.
HasKeys 해당쿠키의 하위쿠키가 있는지에 대한 속성(읽기)
Path

해당 쿠키가 적용될 서버의 가상 디렉토리에 대한 속성(쓰기)
지정되면 쿠키는 지정된 경로에 대한 요청에만 보내진다. 이 속성을 지정하지 않으면 응용프로그램 경로가 지정된다.

Secure 해당 쿠키가 안전한가 즉, 쿠키 보안 여부에 대한 속성(쓰기)


다음의 예를 보고 사용법을 알아 보자.

Response.Cookies("Visit") = "2005-05-30"
Response.Cookies("Visit").Domain = "/www.mydosu.com"
Response.Cookies("Visit").Expires = #2005-06-30 00:00:00#
Response.Cookies("Visit").Path = "MyPath"
Response.Cookies("Visit").Secure = True


위의 경우는 쿠키가 해당 도메인내의 해당 Path에만 적용될 수 있도록 보안을 설정한다. 즉, 다른 경로에서는 쿠키를 읽거나 설장할 수 없도록 하는 것이다.

쿠키는 수명이 있다. 이를 만료기간이라고 하는데 이를 지정하지 안으면 브라우저가 종료하는 순간에 쿠키가 소멸된다. 만료기간은 Expries 속성에 날짜를 지정하면 쿠키는 지정한 날짜까지 유지된다.

3. Response 객체의 속성

(1) Buffer

예전 강의에서 클라이언트가 ASP문서를 요청할 때 서버에서는 그 ASP파일에 대한 처리를 할때 서버측에서 임시로 HTML문서를 만든 다음에 완성된 HTML문서를 클라이언트에게 전송한다고 말했었다. 이때 사용하는 것이 서버의 버퍼링이다.

Buffer의 속성은 페이지 출력을 버퍼링할 것인지의 여부를 나타낸다. 값은 True와 False로 지정한다. ASP 3.0 이후 버전부터는 True 가 기본값이다. 때문에 별도로 설정하지 않아도 된다. 버퍼링이 지정되면 Flush나 End 메소드가 요청될 때까지 클라이언트에 응답을 보내지 않는다.

Buffer 속성은 서버가 클라이언트에게 출력을 보낸 후에는 적용되지 않으므로 ASP파일의 가장 앞부분에 위치시켜야만 한다.

Buffrt 속성은 쿠키에러를 방지하거나 Redirect 메소드 사용시 에러를 방지하는데 사용한다.

(2) Expires

프록시 서버가 ASP에 의해 생성된 결과를 캐싱할지 여부를 결정한다. 즉, 웹 프라우저의 캐싱기능에 의해 페이지를 표시하는 기능을 조절한다.

Response.Expires = 분

Expires 속성은 분단위로 설정해 주면 된다. -1로 지정해 주면 브라우저 해당 페이지의 캐싱이 즉시 종료 되므로 캐싱을 억제 할 수 있다. 다만 페이지의 첫부분에 적어 줘야 한다.

Response.Expires = -1


사용예를 보자.

<% Response.Expires = 5 %>


이와 같이 설정되었다면 현재 페이지는 클라이언트의 웹브랑저에 캐싱이 되고 5분안에 다시 이페이지를 방문하는 경우 클라이언트에 캐시된 문서를 보여준다, 5분이 지난 경우에는 다시 웹서버에서 해당하는 문서를 읽어 오게 된다. 새로 읽어 오면 다시 5분동안 캐싱된다.

만일 0 을 설정하게 되면 매번 방문할 때마다 웹서버에서 다시 문서를 읽어 오도록 설정는 것이다.

(2) ExpiresAbsolote

ExpiresAbsolote 는 분으로 상대적인 기간을 정하는 것이 아니라 정확한 시간을 지정해 주는 것이다.

Response.ExpiresAbsolote = #날짜 시간#

날짜와 시간을 표시하는 방법은 시스템 로케일마다 다르게 표시할 수 있다. 날짜 시간은 반드시 # 기호를 이용하여 표시하여야만 한다. 이 속성은 지정된 날짜 및 시간가지만 캐싱하게 된다.

Response.ExpiresAbsolote = #2005-06-30 00:00:00#


(3) Charset

Response.Charset 속성은 HTML문서의 헤더 정보에 문자 셋 정보 설정하는 속성으로 다음과 같은 형식으로 사용한다.

Response.Charset = "문자셋값"


문자셋값으로 한글은 EUC-KR을 사용한다.

자세한 내용은 NSDN에서 확인하기 바란다.

주소는 다음과 같다.

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/
reference/charsets/charset4.asp#charsets4

(4) Contenttype

Response.Contenttype 속성은 서버에서 클라이언트로 전달되는 자료의 형식을 설정하는 속성이다.

Response.Contenttype = "마임형식(MIME Type)값"

마임(MIME : Multi-purpose Internet Multimedia Extention 또는 Multi-purpose Internet Mail Extention) 은 표준화 되어 있는 표기법을 사용한다.

(5) Status

Response.Status 속성은 웹서버에서 클라이언트로 전송하는 상태정보값을 설정한다.

Response.Status = "메시지"


(6) IsCilentConnected

읽기전용으로 클라이언트 브라우저에서 서버로의 연결을 해제했는지의 여부를 알려준다. 즉, 브라우저를 종료했는지의 여부를 알 수 있게 해준다. 종료되었을 경우 False를 리턴해 준다. 다음과 같이 연결이 종료되었을 경우 작업이 필요할때 다음과 같이 처리할 수 있다.

<%
If Not Response.IsClientConnected Then 
   '종료되었을 경우 처리해야할 작업들
   '   :
   '   : 
End if
%>


4. Response 객체의 메소드

(1) Write 메소드

Write 메소드는 클라이언트에 문자열을 출력하기 위해 사용하는 메소드이다. 사용법은 다음과 같다.

Response.Write "문자열" 또는 Response.Write("문자열")


이미 여러 테스트 문장을 이용하여 사용해 왔으니 긴 설명은 하지 않겠다.

(2) Flush 메소드

버퍼링이 true로 설정되어 있을때 현재까지의 버퍼링된 자료, 즉 클라이언트로 전달될 HTML 문서자료를 즉시 전송해 준다. 이 후 생성되는 HTML자료는 계속해서 버퍼링을 하도록 하는 메소드이다.

다음 예를 보도록 하자

flush.asp ]
<%
response.write "첫번째 출력<br>"
sum=0
for i=1 to 100
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"

response.flush

response.write "두번째 출력<br>"
sum=0
for i=1 to 1000
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"
%>


위의 예제를 실행시키면 일단 버퍼링을 통해 첫번째 For 루프를 실행한 결과가 버퍼링 된다. 이때 response.flush를 만나게 되면 일단 버퍼에 있는 것만 전송된다. 그리고 나머지 부분을 완료하고 완료되면 나머지 부분을 전송해 준다.

살행보면 결과는 먼저 화면에 첫번째 결과가 나타나고 잠시후 2번째 결과가 화면에 나타날 것이다.

이 기법은 내용이 아주 많아 버퍼링이 오래 걸리는 페이지가 있다면 사용자는 매우 지루하게 기다릴 것이다. 일단 우선 처리된 내용을 전송하면 사용자는 기다리는 시간을 조금이나마 줄여주는 장점이 있다.

(3) End 메소드

End 메소드는 버퍼링이 설정된 상태에서 현재까지 버퍼링이 괸 내용만을 전송하고 더 이상 진행하지 않고 ASP 실행을 강제적으로 종료한다.

end.asp ]
<%
response.write "첫번째 출력<br>"
sum=0
for i=1 to 100
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"

response.end

response.write "두번째 출력<br>"
sum=0
for i=1 to 1000
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"
%>


위 프로그램의 실행결과는 첫번째 부분만 출력이 되고 두번째 부분은 브라우저에 나타나지 않는다.

결과를 보자

(4) Clear 메소드

response.clear 메소드를 만나면 현재 버퍼링이 되어 있는 내용을 버퍼에서 지운다. clear 이후에 실행되는 문장들은 다시 버퍼링이 계속된다.

clear.asp ]
<%
response.write "첫번째 출력<br>"
sum=0
for i=1 to 100
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"

response.clear

response.write "두번째 출력<br>"
sum=0
for i=1 to 100
  for j=1 to 1000
    sum=sum+1
  next
next
response.write "sum=" & sum & "<br>"
%>


위의 프로그램을 실행해 보면 첫번째 결과는 없고 두번째 결과만 나타날 것이다.

(5) Redirect 메소드

Redirect 메소드는 현재 문서에서 다른 문서로 이동하고자 할때 Response.Redirect 메소드를 이용한다. 사용하는 방법은 다음과 같다.

Response.Redirect "이동할 문서 또는 URL 주소"


사용예를 보자.

redirect.asp ]
<%
Response.Redirect "http://www.naver.com"
%>


redirect.asp 를 싱행하자 마자 www.naver.com로 이동하는 것을 볼 수 있을 것이다.

이 redirect를 사용할 때 주의사항과 제약사항이 있다.

먼저 URL로 작성하는 경우 "http://" 를 반드시 써야 한다는 것이다. 만약 사용하지 않고 www.naver.com 만 기입하였다면 파일로 인식할 것이다. 그리고 에러를 발생할 것이다.

두번재는 프레임등을 사용할 때와 같이 프레임을 이동하거나 새창을 오픈하여 처리하는 target 속성을 줄 수 없다. 즉 자신의 프레임에서만 이동이 가능하다. target 속성이 필요하다면 redirect 대신 JavaScript-x 에서 사용하는 location.href 를 이용하여만 할 것이다.

<%
'ASP 문장들.....
%>

<script-x language="javascript-x">
parent.top.location = "top.asp"
parent.bottom.loation = "index.asp"
</script-x>


(6) AddHeader 메소드

Response.AddHeader 메소드는 클라이언트로 전달할 HTML 문서의 헤더 정보에 자료를 추가하기 위해 사용메소드이다.

Response.AddHeader("헤더이름" , "값")


(7) AppendToLog 메소드

Response.AppendToLog 메소드는 웹서버의 로그 파일에 현재 로그를 저장하는 메소드이다. 이 경우 웹서버는 W3C Extended Log File Format을 사용하고 있어야 한다.

Response.AddHeader("로그 정보")

(8) BinaryWrite 메소드

Response.BinaryWrite 메소드는 바이너리 자료를 클라이언트의 웹브라우저에 표시할때 사용하는 메소드 이다.

Response.BinaryWrite(바이너리자료)

+ Recent posts