ASP

 

■ Request 객체의 구성 요소

 

 [표] Request 객체 구성

콜렉션   속성  메서드

QueryString - client 에서 전달하는 질의 문자열의 값

TotalBytes - 클라이언트에서 보내준 데이터의 바이트 수

BinaryRead - POST 요청의 일부로서 client 에서 server 로 보내진 data 를 저장

Form - client 에서 FORM 의 POST method 를 이용해 전달하는 개체 값

Cookies - client 에서 보내진 cookie 값

ClientCertificate  - HTTP 요청에 의해 client 에서 보낸 client 보증서의 값

ServerVariables  - 미리 정의된 환경 변수 값

 

 

(1) QueryString 콜렉션을 사용할 경우

GET 방식으로 전달된 데이터를 가공할 경우 QueryString 콜렉션을 이용해서 값을 얻어 낸다.

 

<% Iname=Request.QueryString("id")) %>

 

입력 폼에서 넘겨받은 id값을 QueryString 콜렉션으로 값을 구한 다음, Iname 이란 변수에 저장한 것이다. 이 변수 값을 출력하기

위해서는 다음과 같이 Response.Write 메서드를 사용하여 출력하면 된다.

 

<% Response.Write id %>  

 

 

(2) Form 콜렉션을 사용할 경우

POST 방식으로 전달된 데이터를 가공할 경우 Form 콜렉션을 이용해서 값을 얻어낸다.

- 예

<%Iname=Request.Form("id") %>

 

 

[3] 서버 변수 사용하기

클라이언트에 대한 정보 (예 : 사용자의 브라우저 정보 등) 를 알기 위해서는 Server Variables 콜렉션을 이용하여야 한다.

ServerVariable 콜렉션은 HTTP 헤더 정보들을 분석해서 가지고 있으며, 이 정보들을 가공하거나 원래의 정보를 그냥 읽어올 수 있다.


 

<%=  Request.ServerVariable("REMOTE_ADDR") %>



 

 

[4] 쿠키 사용하기 (Cookie 콜렉션)

쿠키 값을 읽어 올 때는 Request.Cookie 콜렉션을 사용한다. Request 객체를 사용하여 가져온 쿠키 정보는 Response 객체를 사용하여 쿠키

정보를 바꿀 수 있다. 쿠키는 중요하다. HTTP라는 프로토콜 자체는 상태를 유지하지 못하며(stateless), 개방화된 프로토콜이다. 즉, 누구나

접속할 수 있고,  누구 얼마나 접속했는지 무슨 페이지를 봤는지 알나내기 어렵다.


 

<% cook =Request.Cookie("CMine").HashKeys %>



 

- 설명

쿠키가 Dictionary 형태로 되어 있는지를 Hashkeys 를 통해 알아보고 CMine 쿠키 값을 cook 이라는 변수는 저장한다.

<% =response.buffer=true %>

Response.Buffer = true

이제부터는 버퍼링이 적용되는 것입니다.

그리고 코드의 3/1 지점에서 버퍼링해놓은 걸 불러올 수 있습니다.

Response.flush

이렇게 하면 불러옵니다. 그럼 그 다음, 화면이 딱 멈춰있겠죠.

왜냐하면, 그 이후에 다시 버퍼링하게 되기 때문입니다.

 

 

굉장히 긴 시간동안 (예를 들어, 10분동안 페이지가 실시간으로 계속 실행되는 경우) 실행되는 경우,버퍼링을 쓰면 좋습니다.

만약, 버퍼링 기능과 flush 기능을 쓰지 않으면, 어떻게 될까요?

익스플로러 응답 없음이라는 경고창이 뜨게 됩니다.

그리고, 사용자는 창을 닫아버릴지 모릅니다.

하지만, 버퍼링 해놓고 5초단위로 flush 해준다면 이야기는 달라집니다.

익스플로러에서 계속 데이터가 들어오기 때문에 "응답없음"이 뜨지 않죠.

그리고, 실시간으로 계속 보여주는 기능이 있을 때, 문제 없이 작동됩니다.

 

header.asp

<%@Language="VBScript" CODEPAGE="65001" %>
<% Response.CharSet="utf-8"
   Session.codepage="65001"
   Response.codepage="65001"
   Response.ContentType="text/html;charset=utf-8"
%>
<html lang="ko">
<head>
<title>macaronics</title>
   <meta http-equiv="content-type" content="text/html"; charset="utf-8" >
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <!-- 위 3개의 메타 태그는 *반드시* head 태그의 처음에 와야합니다; 어떤 다른 콘텐츠들은 반드시 이 태그들 *다음에* 와야 합니다 -->
   <title>macaronics</title>
   <!-- 부트스트랩 -->
   <!-- 합쳐지고 최소화된 최신 CSS -->
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
   <!-- 부가적인 테마 -->
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
   <!-- 합쳐지고 최소화된 최신 자바스크립트 -->
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
   <!-- IE8 에서 HTML5 요소와 미디어 쿼리를 위한 HTML5 shim 와 Respond.js -->
   <!-- WARNING: Respond.js 는 당신이 file:// 을 통해 페이지를 볼 때는 동작하지 않습니다. -->
   <!--[if lt IE 9]>
     <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
     <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
   <![endif]-->

 

request.asp

<!--#include file=./include/header.asp  -->
<% response.buffer =true %>
<meta http-equiv="refresh" content="2" />
<%
  if Response.Cookies("UCheck").Haskeys then
    Ldate=Request.Cookies("UCheck")("Ldate")
    Response.Cookies("UCheck")("NVisit")=Request.Cookies("UCheck")("NVisit")+1
  else
    Ldate="..오늘이 첫 방문"
    Response.Cookies("UCheck")("Ldate")=now
    Response.Cookies("UCheck")("NVisit")=1
  end if
%>
</head>
<body>
<p>
  <h2 align="center">어서오세요.</h2>
</p>
<center><br />
지금까지

<%=  Request.Cookies("UCheck")("NVisit")%>

회 방문 하셨습니다.

<hr />
</body>
</HTML>

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

상대에게 한 번 속았을 땐 그 사람을 탓하라. 그러나 그 사람에게 두 번 속았거든 자신을 탓하라. -탈무드

댓글 ( 4)

댓글 남기기

작성