login register Sysop! about ME  
qrcode
    최초 작성일 :    1999년 01월 01일
  최종 수정일 :    2001년 07월 17일
  작성자 :    taeyo
  편집자 :    Taeyo (김 태영)
  읽음수 :    678,203

강좌 목록으로 돌아가기

필자의 잡담~

정말로 오래된 강좌... ^^;

Request Object

Request Object는 주로 사용자로부터 정보를 전달 받을때 사용되는 개체입니다우리는 ASP 라는 서버 사이드를 공부하는 것이기에 모든 관점은 서버쪽에서 바라보는 습관이 필요함다

Request 라는 말은 "요청하다" 이지만 이것은 서버측에서 요청한다는 의미입니다... 즉, 사용자가 서버로 보내오는 요청이나 데이터를 얻어내는 역할을 하는 것이 바로 이 Request 개체가 담당하는 역할이지요..

이 개체가 가지고 있는 주요기능은 다음 표와 같습니다만...아무래도 강좌에서 이 개체의 컬렉션등을 구체적으로  모두 알아보기에는 어려움이 있기에...우린 여기서 그 중 중요한 몇가지만 체크하려 합니다....  (더 깊숙한 내용은 책이나 MSDN을 참고해 주세요)

Collection (컬렉션)
ClientCertificate 사용자가 페이지나 리소스를 액세스할 때 서버로 전달한 클라이언트 증명서에 있는 모든 필드와 엔트리값(읽기 전용)
Cookies 사용자의 시스템에서 요청과 함께 전달된 모든 쿠키값
Form 폼 요청으로 전송된(POST 사용) 모든 HTML 컨트롤 요소 값
QueryString 사용자 요청에서 URL에 추가된 모든 이름/값 쌍들이나, GET 방식이 사용된 폼에 있는 HTML 컨트롤 요소값들(읽기 전용)
ServerVariables 클라이언트로부터 이들의 요청과 함께 전달된 모든 HTTP 헤더 값들과 웹 서버의 여러 가지 환경 변수값들(읽기 전용)

Property (속성)
TotalBytes 사용자에 의해 전송된 요청의 본문에 있는 바이트들의 총 수(읽기전용)

Method (메소드)
BinaryRead(count) 데이터가 POST 요청의 일부로 서버로 전송될 때, 사용자 요청으로부터 count 바이트의 데이터를 얻어낸다. 이것은 Variant 배열로 반환되며 ASP 코드가 이미 Request.Form 컬렉션을 참조했으면 이 메소드는 사용될 수 없다. 마찬가지로 여러분이 BinaryRead 메쏘드를 사용했으면 Request.Form 컬렉션도 사용할 수 없게 된다. 둘 중에 하나만이 사용

위의 표에서 굵게 처리한 것들이 Request 개체의 자주 쓰이는 것들입니다.가장 많이 쓰이는 것이 바로 QueryString, Form 입니다만...아마도 이들을 명시해서 사용하는 분은 없을 것입니다... 반드시 명시할 필요는 없기 때문이지요...  ^^   그 이야기는 이따가 다시 하시고 하구요.. 이제 한번 조금은 더 구체적으로 알아볼까요?

 

1. QueryString & Form

이 컬렉션은 한 페이지에서 다른페이지로 GET 방식으로 데이터를 보낼때, 그 클라이언트가 보낸값을 알아내기 위해 쓰입니다. 간단하게 예를 코드로 보면 다음과 같은 코드를 통해서 알 수 있습니다.

Form.htm

<html>
<body>
    <form Action="Result.asp" METHOD="GET">
        이름 : <INPUT TYPE="Text" NAME="name"><br>
        나이 : <INPUT TYPE="Text" NAME="age"><br>
    <INPUT TYPE="Submit" NAME="Enter" Value="확인">
    </form>
</body>
</html>

Result.asp

<html>
<body>
    이름은 <%=Request.QueryString("name")%> 이구요..<br>
    나이는 <%=Request.QueryString("age")%> 입니다
</body>
</html>

각각의 페이지를 작성해서... 웹 서버의 디렉토리에 올리고...  ^^Form.htm 부터 로딩해서 살펴보면,... 각각의 폼안의 컨트롤에 입력한 값이..Result.asp에 제대로 찍혀나오는 것을 볼 수 있을 것입니다.

중요한 것은 폼안의 컨트롤들의 이름과 Request.QueryString 할 때의 이름이 같아야 한다는 겁니다.이 이름은 반드시 맞추어 주셔야만 합니다. 반드시요.. 안 그러면, 그 값으로 NULL이 나오게 되기에 문제가 될 수 있습니다.

그리고, 위의 소스에서는 Form.htm 페이지의 폼 태그안에서..그 폼의 Method를 GET으로 준 것을 볼 수가 있습니다. 만일, 위처럼 GET 방식으로 데이터를 전송한다면반드시 ASP 측에서는 Request 개체의 QueryString로 그 값을 받아야 합니다.  ^^QueryString 이란 메소드가 바로 GET 방식으로 넘어오는 데이터를 서버측에서 얻어내는 역할을 하니까요

하지만, GET 방식으로 넘어오는 데이터들은 그다지 보안에 좋지 못합니다.이러한 데이터들은 브라우저의 URL바에 그 넘어오는 값이 모두 노출되기 때문이지요...

해서, 그보다는 POST 방식으로 데이터를 전송하는 것이 추천되는데..폼을 통해서 데이터를 전송할 경우 폼의 Method를 POST 로 지정해 주게되면 해당 데이터들이 URL의 꼬리에 붙어서 전송되는 것(브라우저의 URL바에 다 보임)이 아니라HTTP 헤더안에 포함되어져 오기에 조금은 보안적인 데이터 전송방법이라고 볼 수 있지요..물론, 완전한 보안적인 방법은 아니구요. QueryString 에 비하면 그렇다는 것입니다. ^^

이 방법은 뭐 많이 바꿀 것이 없습니다. 단지, 위의 소스에서 Form 태그안의 Method를 POST로만지정하면 그게 전부이지요..  ^^ 위의 소스를 POST 방식으로 바꾼 소스를 한번 보입시다.

Form.htm

<html>
<body>
    <form Action="Result.asp" METHOD="POST">
        이름 : <INPUT TYPE="Text" NAME="name"><br>
        나이 : <INPUT TYPE="Text" NAME="age"><br>
        <INPUT TYPE="Submit" NAME="Enter" Value="확인">
    </form>
</body>
</html>

Result.asp

<html>
<body>
    이름은 <%=Request.Form("name")%> 이구요..<br>
    나이는 <%=Request.Form("age")%> 입니다
</body>
</html>

소스중에 굵고, 빨갛게 처리된 부분이 수정된 부분입니다. 두 페이지 모두 다음과 같은 결과를 가져다 주기는 하지요...

단지 중요한 것은 하이퍼링크로 정보를 보낼때는 form을 쓰지못하고 반드시 Querystring를 써야만 한다는 것입니다. 하이퍼링크를 통해서 넘어오는 데이터는 GET 방식으로 넘어오게 되기에 말입니다.

하지만, 이 두가지 컬렉션 QueryString, Form 을 반드시 명시해 주어야 하는 것은 아닙니다..GET 방식으로 넘어오던, POST 방식으로 넘어오던 그 데이터를 서버측에서 얻어내기 위해서는

GET : Request.QueryString("...")
POST : Request.Form("...")
GET, POST : Request("...")

와 같이 할 수 있다는 뜻입니다. 고로, 위의 Result.asp 소스는... 폼에 GET 방식이던, POST 방식이던지에 무관하게다음처럼 작성할 수 있다는 것이지요.

Result.asp

<html>
<body>
    이름은 <%=Request("name")%> 이구요..<br>
    나이는 <%=Request("age")%> 입니다
</body>
</html>

이 방법은 간단하기는 하지만, 그다지 서버의 성능에 좋지 못한 방법입니다...고로, 튜닝시에는 반드시 제대로 된 컬렉션의 이름을 지정하는 것이 필요합니다.

그러니 첨부터 프로그래밍시에 QueryString 이나 Form 을 사용해주는 것이 바람직합니다.개발자에게 가장 귀찮은 방법이 가장 빠른 방법이고는 합니다..  ^^

 

2. ServerVariables

Servervariable는 서버자체의 CGI버전이나 PORT, 로그인 유저명,IP주소등을 알려주는 컬렉션입니다.만일, 현재 서버의 웹 서버 버전을 알고 싶다면 다음처럼 하시면 됩니다..

Request.Servervariables("SERVER_SOFTWARE") 혹은 Request("SERVER_SOFTWARE") 처럼 사용하면 된답니다. 하지만, 역시 Request("SERVER_SOFTWARE") 라고 하는 방법은 서버의 성능에좋지 못합니다. 가급적 Request.Servervariables("SERVER_SOFTWARE") 라고 사용하세요

이 컬렉션을 사용해서 우리가 개발자의 입장에서 쓸만한 것은 사용자의 접속 IP 주소를 알아오는

Request.Servervariables("REMOTE_ADDR")

가 있습니다. 그리고, 사용자의 브라우저나 OS 버전을 알 수 있게 해주는

Request.Servervariables("HTTP_AGENT")

정도입니다. 이것은 나름대로 유용한 정보이지요...  ^^그렇다면, 위의 몇 가지 외에 얻어올 수 있는 또 다른 정보들로는 어떤 것들이 있을까요?그것이 사정없이 궁금해 지지 않나요? 하하... 궁금해 지지요?해서 따로 강좌를 준비해 두었습니다.

아래의 링크를 눌러 이 컬렉션의 활용법을 좀 더 알아봅시다.

ServerVariables 활용법


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})