본문 바로가기

   
Programming/ASP

ASP Request, Response 객체

반응형

ASP Request, Response 객체란
웹프로그래밍에서 request라는 객체의 역활은 개인 사용자가 인터넷을 키고 인터넷 페이지에서 로그인이나 회원 가입등을 할때 정보를 적지요 이름이나 이메일 전화번호등을 이정보를 저장하려면 사용자가 입력한 값을 전달 받아야 할것입니다.


이정보를 받아오는 역활을 하는것을 request객체가 하는일이라고 보시면 됩니다.




Request 객체

 컬렉션

설명 

 ClientCertificate

사용자가 전송해준 인증서 

 Cookies

사용자가 전송한 쿠키 값

 Form

사용자가 전송한 폼 요소 값 

 QueryString

HTTP 정보를 이름별로 가져올수 있음 

 ServerVariables

HTTP와 환경 변수값 

 TotalByte

사용자가 전송한 총 바이트 수 파일 업로드가 되겠내요 

 BinaryRead

사용자가 전송한 데이터 검색 


1) Cookies컬렉션

쿠키란 사용자의 컴퓨터에 간단한 정보를 저장하고 이 데이타를 잃어올때 쿠키라는것을 많이 사용합니다.

예를들어 아이디 저장같은 기능도 쿠키에 사용자별로 아이디를 저장해서 아이디를 다시 기입하지 않도록 해줄수 있습니다.


윈도우7, 8 쿠키 저장 위치(경로)

C:\Users\사용자이름\AppData\Roaming\Microsoft\Windows\Cookies


크롬 환경에서의 쿠키는 암호화 되서 따로 저장 되기 때문에 사용자가 다시 풀어서 보기 힘듭니다.

물론 툴같은것을 다운로드 해서 받아보는 방법이 있겠네요. 그래서 필요한 쿠키는 인터넷 익스플로러를 이용합니다.


Exam.asp

<%

    Response.Cookies("User") ("name") = "박지성"

    Response.Cookies("User") ("id") = "testid"  

 

    'Request 통해 사용자 pc 저장된 쿠키값을 가져온다.

    '이름  지정한 이름을 쌍으로 지정하면 가져올수 있다.

    Response.Write(Request.Cookies("User") ("name") & "<br>")

    Response.Write(Request.Cookies("User") ("id"))

%>


결과







2) Form 컬렉션
회원의 정보나 게시판의 글등을 데이타를 전송하기 위한 방법으로 대표적인게 HTML <form>이라는 태그를 통해 데이타를 전송할수 있습니다. 


Login.html

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    <!-- 

form 태그는 인터넷 환경에서 데이터를 전송하기 위해 만들어진 html 태그 입니다

        이페이지에서 Exam.asp 페이지로 이동합니다. 

-->

    <form action="Exam.asp" method="post">

        아이디 : <input type="text" name="id" value=" " />

        비밀번호 : <input type="text" name="pw" value=" " />

        <input type="submit" name="name" value="로그인" />

    </form>

</body>

</html>

 




Exam.asp

<%

    'Login.html에서 전송을 누르게 되면 submit 버튼을 통해 form 태그안에 저장된 정보를 가져온다.

    'Form 태그안에 input 태그중 이름이 매칭되는 값을 가져옵니다.

    Response.Write(Request.Form("id") & "<br>")

    Response.Write(Request.Form("pw"))

%>


결과





3) QueryString 컬렉션

데이터를 서버에 전송하는데에는 2가지가 있습니다. get, post라는 방식의 존재한다.

get 방식 : 전송되는 데이터가 http 주소에 어떤 데이터를 전송하는지 표시된다. 주로 의미가 없는 값을 전달할때 사용 길이에 제한이 있다. get 방식 4,096바이트 전송까지 가능

post 방식 : 로그인, 회원가입등 보안이 필요한 데이터 전송시에 주로 이용된다. post방식은 길이 제한이 없다.


Login.html

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    <!-- form 태그는 인터넷 환경에서 데이터를 전송하기 위해 만들어진 html 태그 입니다. -->

    <form action="Exam.asp" method="get">

        아이디 : <input type="text" name="id" value=" " />

        비밀번호 : <input type="text" name="pw" value=" " />

        <input type="submit" name="name" value="로그인" />

    </form>

</body>

</html>

 


Exam.asp

<%

    'Login.html에서 전송을 누르게 되면 submit 버튼을 통해 form 태그안에 저장된 정보를 가져온다.

    'Form 태그안에 input 태그중 이름이 매칭되는 값을 가져옵니다.

    Response.Write(Request.QueryString("id") & "<br>")

    Response.Write(Request.QueryString("pw"))

%>


결과

결과를 보면 get방식으로 데이터 전송시엔 주소 url에 정보가 넘어가는것이 보입니다.

위처럼 정보가 노출 되기 때문에 보안이 필요한 데이터는 post 방식으로 처리합니다.





4) ServerVariables 컬렉션

인터넷을 사용하는 사용자가 서버로 전송한 정보들이 저장 되어있다.

ServerVariables 컬렉션을 잘 사용하려면 아래와 같은 환경변수를 이용하여 정보를 받을수 있다.


 서버 환경 변수

설명 

ALL_HTTP

클라이언트가 전송한 모든 HTTP 헤더 출력

ALL_RAW 

클라이언트가 전송한 모든 헤더 획득

APPL_MD_PATH 

ISPI DLL을 위한 메타베이스 경로명 획득

APPL_PHYSICAL_PATH 

메타베이스에 상응하는 물리적은 경로명 획득 

AUTH_TYPE 

서버가 사용하는 인증방법 출력 

AUTH_USER 

RAW 포맷에서 인증한 사용자의 이름 획득 

AUTH_PASSWORD 

기본 인증 본안을 통해 클라이언트의 인증 값 출력 

CERT_COOKIE 

클라이언트의 증명을 위한 ID 리턴 

CERT_FLAGS

클라이언트 증명 유효 여부 출력 

CERT_ISSUER 

클라이언트 증명 발생 필드 출력 

CERT_KEYSIZE 

Secure Socket Layer 연결 키 사이즈의 비트 수 출력 

CERT_SERIALNUMBER 

클라이언트 증명 시리얼 넘버 필드 출력 

CERT_SERVER_ISSUER 

서버 증명 발행 필드 출력 

CERT_SERVER_SUBJECT 

서버 증명 주제 필드 출력 

CERT_SUBJECT

클라이언트 증명 주제 필드 출력 

CONTENT_LENGTH 

내용 길이 리턴 

CONTENT_TYPE 

내용 mime 타입 리턴 

GATEWAY_INTERFACE 

서버상의 cgi 명세서 버전 리턴

HTTP_<HeaderName> 

HeaderName 정보리턴 

HTTPS 

Secure Channel을 통한 요구 획득 여부 리턴

HTTPS_KEYSIZE 

Secure Socket Layer 연결 키 사이즈에서 비트수 리턴 

HTTPS_SECRETKEYSIZE 

서버 증명 개인키에서 비트 수 리턴

HTTPS_SERVER_ISSUER 

서버 증명 발행 필드 리턴

HTTPS_SERVER_SUBJECT 

서버 증명 주제 필드 출력 

HTTP_USER_AGENT 

클라이언트의 브라우저 정보 출력 

INSTANCE_ID 

IIS 실례를 위한 ID 리턴 

INSTANCE_META_PATH 

IIS의 실례를 위한 메타베이스 경로명 리턴 

LOGON_INFO 

NT 로그인 계정 출력

PATH_INFO 

PATH_INFO의 번역 버전 리턴 

PATH_TRANSLATED 

PATH_INFO에서의 질문 문자열 리턴

QUERY_STRING 

URL에서의 질문 문자열 리턴 

REMOTE_ADDR 

클라이언트 IP 주소

REMOTE_HOST

클라이언트 호스트 이름 출력

REQUEST_METHOD

요구 메소드 리턴 

SCRIPT_NAME 

실행된 스크립트 가상 경로명 출력

SERVER_NAME 

서버 호스트 이름 DNS별명, IP 주소 리턴

SERVER_PORT 

서버 포트 번호 리턴 

SERVER_PORT_SECURE 

서버 포트의 안전 여부 리턴 

SERVER_PROTOCOL 

서버가 사용하는 프로토콜 이름과 버전 리턴

SERVER_SOFTWARE 

HTTP 서버 이름과 버전 리턴 

URL 

URL 리턴 


Exam.asp

<html>

    <head>

        <title></title>

    </head>

    <body>

        <table border="1">

            <tr>

                <td align="center"><b>ServerVariables</b></td>

                <td align="center"><b>결과</b></td>

            </tr>

        <%

            for each value in Request.ServerVariables

                Response.Write "<tr><td>" & value & "</td>"

                Response.Write "<td>" & Request.ServerVariables(value) & "</td></tr>"

            next

        %>

        </table>

    </body>

</html>

 

결과





5). ServerVaribales 값을 따로 가져올때

Exam.asp

<html>

    <head>

        <title>ServerVariables</title>

    </head>

    <body>

        <table border="1">

            <tr>

                <td align="center"><b>ServerVariables</b></td>

                <td align="center"><b>결과</b></td>

            </tr>

        <%

            Response.Write "<tr><td>서버 도메인 주소</td>" & Request.ServerVariables("SERVER_NAME") & "</td></tr>"           

            Response.Write "<tr><td>사용자 IP 주소</td>" & Request.ServerVariables("REMOTE_HOST") & "</td></tr>"

            Response.Write "<tr><td>사용자 브라우저 정보</td>" & Request.ServerVariables("HTTP_USER_AGENT") & "</td></tr>"

        %>

        </table>

    </body>

</html>

 


결과





6) TotalByte 속성

클라이언트가 보내는 총바이트수가 얼마인지 확인할때 사용한다.


TotalByte.html

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>totalbyte 속성</title>

</head>

<body>

    <form action="Exam.asp" method="post">

        텍스트의 바이트 크기가 얼마나 되나 알아볼까요? : <input type="text" name="textSize" value=" " />

        <input type="submit" value="전송" />

    </form>

</body>

</html>

 

Exam.asp

<%       

    Response.Write(Request.TotalBytes)

%>


TotalByte.html 화면



전송 완료후 총바이트수








Response 객체

컬렉션

 컬렉션

설명 

Cookies

브라우저에 보내는 쿠키 값 


속성

 속성

설명 

Buffer

 ASP의 결과가 완성될 때까지 버퍼에 저장할 것인지에 대한 지정

CacheControl

 프록시 서버가 ASP의 결과를 캐시 할것인지에 대한 지정

Charset 

 Content Type 헤더에 문자 집합 이름 추가

ContentType 

 HTTP 컨텐츠 형식 지정

Expires

 캐시된 페이지의 만료 기간 지정

ExpiresAbsolute

 캐시된 페이지의 만료 날짜와 시간 지정

IsClientConnected

 클라이언트가 서버와 연결 되었는지의 여부를 나타냄

Pics

 Pics lable 응답 헤더에 대한 값 지정 

Status

 HTTP 상태 값을 나타냄 


메소드

 메소드

설명 

 AddHeader

 헤더의 값 설정 

 AppendToLog

 요청에 대한 서버의 로그 항목 끝에 문자열 추가

 BinaryWrite 

 HTTP 출력에 텍스트 전송 

 Clear

 모든 HTML 결과 내용 삭제

 End

 진행되는 처리를 중단하고 현재의 결과를 브라우저에 전송 

 Flush

 버퍼된 출력을 즉시 브라우저에 보냄 

 Redirect

 브라우저를 다른 URL로 연결 

 Write

 문자열 출력 



1) Cookies 컬렉션

Request 객체에서의 Cookies 컬력션은 Cookies 컬렉션을 사용해 해당 Cookies를 만든것을 읽어 왔다 하지만 Response 객체의 Cookies의 의미는 Cookies를 만들어서 사용자 pc에 정보를 남기고 셋팅 할수 있다.


cookies 컬렉션 속성


 Cookies 속성

설명 

 Domain

 지정한 도메인에 있는 클라이언트에 쿠키 전달

 Expires

 쿠키의 만료 날짜 지정

 Haskeys

 쿠키의 하위 항목 리턴

 Path

 쿠키가 전송될 도메인 경로 위치 지정 

 Secure

 쿠키 보안 여부 지정 


Exam.asp

<html>

<head>

    <title>cookies</title>

</head>

<body>

 

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

<%

    Response.Cookies("USER")("name") = "이순신"

    Response.Cookies("USER")("age") = "32"

    Response.Cookies("USER")("job") = "프로그래머"

    Response.Cookies("USER")("phone") = "010-1111-2222"

 

    '쿠키 만료날짜(자동 삭제) 지정

    Response.Cookies("USER").Expires = "Oct 12, 2015"

 

    'Cookies 파일 경로를 지정한다.

    Response.Cookies("USER").Path = "test/cookie.txt"

 

    '쿠키를 특정 이름을 지정하지 않아 쿠키의 모든 정보를 가져온다.

    Response.Write(Request.Cookies("USER"))

%>   

</body>

</html>

 

 

 

결과 화면은 크롬 환경에서 f12를 누른뒤 Resources 누른 왼쪽 메뉴 중 Cookies 정보가 저장되어진걸 확인할수 있다.




2) Buffer 속성
서버는 사용자가 요청한 결과를 처리하고 다시 응답하기 전 버퍼에 저장후 결과를 한번에 출력 해주는 기능이 있다.
Buffer 속성은 이기능을 저장을 할것인지 안할것인지를 지정하는 속성이다.

Exam.asp

<%

    Response.Buffer = true

%>





3) CacheControl 속성
응답시간을 단축 하기 위해 캐시를 사용할때가 있는데 캐시란 응답 결과를 빈 공간에 저장을 해논뒤 사용자가 다시 요청을 했을때 캐시에 미리 저장해논 결과를 주기 때문에 좀더 빨리 웹페이지가 열릴수 있도록 처리할수 있다.
대부분의 사이트는 사용자들의 컴퓨터 성능이 대부분 좋기 때문에 자주 사용하지 않고 사이트가 느려졌을때는 주로 복잡한 db 데이터를 조회할때 일어난다.
프록시 서버를 통해 캐시를 처리할수 있다.

웹개발을 하다보면 cache를 사용할때와 안할때가 필요할수 있다.
캐쉬에서 페이지를 처리할 경우가 있을것이고 캐쉬가 아닌 최신 데이터를 보여줘야 하는 경우가 있을것 이다.

Exam.asp

<%  

Response.Expires = 0  

Response.AddHeader "Pragma","no-cache"  

Response.AddHeader "Cache-Control","no-cache,must-revalidate"  

%>




4) ContentType 속성

HTTP 콘텐츠 형태를 지정할때 사용 한다.

사용자가 파일 업로드 행동을 할때 파일의 형태를 지정할수 있게끔 해줄수 있다.

기본값 = text/html


Exam.asp

<%response.ContentType="text/HTML"%>

<%response.ContentType="image/GIF"%>

<%response.ContentType="image/JPEG"%>

<%response.ContentType="text/plain"%>





5) Expires 속성

브라우저에 캐시된 페이지 만료 기간을 지정 만료기간전 같은 페이지 호출시 캐시된 페이지가 출력된다. 


Exam.asp

<%

'날짜로 지정

 Response.Expires = #Oct 12, 2015#


    '캐시 만료 지정 날짜 혹은 기간( 단위 ) -1 즉시만료

    Response.Expires = -1

 

    'true, false, no-cache, private, public 캐시 컨트롤 상태 제어

    Response.CacheControl = true


    Response.AddHeader "pragma","no-cache"

%>





6) ExpiresAbsolute 속성

Expires 속성과 비슷한 기능이다. ExpiresAbsolute 속성은 시간까지 지정이 가능 하다는 것이다.


Exam.asp

<%

    Response.ExpiresAbsolute = #Oct 12, 2015 17:34:11#

%>





7) IsClientConnected 속성

클라이언트와 서버가 연결된 여부를 알려준다.

Exam.asp

<%

    '현재 사용자 pc 연결이 되있는냐? true 연결되있다. false 연결되있지 않는다.

    Response.Write(Response.IsClientConnected())   

%>

 



결과



8) Redirect 메소드

웹페이지를 다른 페이지로 보내주는 역활을 하는 메소드 이다.

사용자가 요청한 페이지가 login.asp 라면 서버페이지인 asp 페이지에선 redirect 메소드를 이용해 loginCheck.asp를 통해 loginok.asp로 페이지를 이동을 해줄수 있는 아주 유용한 기능이다.


Login.html

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    <!-- form 태그는 인터넷 환경에서 데이터를 전송하기 위해 만들어진 html 태그 입니다. -->

    <form action="LoginCheck.asp" method="post">

        아이디 : <input type="text" name="id"  />

        비밀번호 : <input type="text" name="pw" />

        <input type="submit" name="name" value="로그인" />

    </form>

</body>

</html>

 

결과



LoginCheck.asp

<%

    '아이디와 비번을 Login.html에서 가져온다.

    id = Request.Form("id")

    pw = Request.Form("pw")

   

    '아이디와 비번이 맞는지 체크

    if id = "test" and pw = "test" then

        '맞으면 mainLoginOk 페이지로

        Response.Redirect("LoginOk.html")

    else

        '틀리면 LoginFail 페이지로

        Response.Redirect("LoginFail.html")

    end if

   

%>

결과



LoginFail.html

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    아이디와 비번이 틀렸습니다.

</body>

</html>

 

결과

아이디와 비번 둘중 하나라도 잘못입력하게 되면 나오는 페이지



LoginOk.htmll

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    아이디와 비번이 틀렸습니다.

</body>

</html>

 

결과

아이디와 비번이 둘다 맞을경우에나오는 페이지


반응형