ASP 강의 시리즈(12) 브라우저로 콘텐츠 보내기
저자:Eve Cole
업데이트 시간:2009-05-30 19:59:00
ASP 스크립트를 처리할 때 ASP 구분 기호나 <SCRIPT> 태그 내에 포함되지 않은 모든 텍스트나 그래픽은 브라우저에 반환됩니다. Response 개체를 사용하여 콘텐츠를 브라우저에 명시적으로 보낼 수 있습니다.
콘텐츠 보내기 ASP 구분 기호 또는 프로시저 내에서 브라우저로 콘텐츠를 보내려면 Response 개체의 Write 메서드를 사용할 수 있습니다. 예를 들어, 다음 명령문은 사용자가 이 페이지를 방문했는지 여부에 따라 다른 인사말을 보낼 수 있습니다.
<%
FirstTime = True이면
Response.Write "<H3 ALIGN=CENTER>개요 페이지에 오신 것을 환영합니다</H3>"
또 다른
Response.Write "<H3 ALIGN=CENTER>개요 페이지에 다시 오신 것을 환영합니다</H3>"
종료 조건
%>
프로시저 외부에서는 콘텐츠를 사용자에게 다시 보내기 위해 Response.Write를 사용할 필요가 없습니다. 스크립트 구분 기호 안에 없는 콘텐츠는 브라우저로 직접 전송되어 형식이 지정되고 표시됩니다. 예를 들어 다음 스크립트 프로세스는 위 스크립트와 동일한 출력을 갖습니다.
<H3 정렬=중앙>
<% FirstTime이면 %>
개요 페이지에 오신 것을 환영합니다.
<%다른%>
개요 페이지에 다시 오신 것을 환영합니다.
<% 종료 조건 %>
</H3>
출력을 한 번만 반환해야 하거나 기존 HTML 텍스트에 명령문을 추가하는 것이 편리한 경우 혼합 스크립트 명령과 HTML을 사용합니다. 문을 구분 기호로 구분하지 않거나 브라우저에 반환되는 문자열을 생성하려는 경우 Response.Write를 사용하세요. 예를 들어, HTML 테이블에서 반환된 값을 사용하여 테이블 행을 생성하기 위해 텍스트 문자열을 구성할 수 있습니다.
Response.Write "<TR><TD>" & Request.Form("FirstName") _
& "</TD><TD>" & Request.Form("성") & "</TD></TR>"
콘텐츠 유형 설정 웹 서버가 파일을 브라우저에 반환할 때 파일에 포함된 콘텐츠 유형도 브라우저에 알려줍니다. 이를 통해 브라우저는 파일 자체를 표시할 수 있는지 아니면 다른 응용 프로그램을 호출해야 하는지 결정할 수 있습니다. 예를 들어, 네트워크 서버가 Microsoft Excel 테이블을 반환하는 경우 브라우저는 페이지를 표시하기 위해 Microsoft Excel 복사본을 호출해야 합니다. 웹 서버는 파일 확장자를 MIME 유형 테이블에 매핑하여 파일 유형을 식별합니다.
Response 객체의 ContentType 속성을 사용하여 사용자에게 전송되는 콘텐츠에 대한 HTTP 콘텐츠 유형 문자열을 설정할 수 있습니다. 예를 들어 다음 명령은 채널 정의에 대한 콘텐츠 유형을 설정합니다.
<% Response.ContentType = "응용 프로그램/x-cdf" %>
채널에 대한 자세한 내용은 이 항목의 "동적 채널 만들기"를 참조하십시오.
다른 일반적인 콘텐츠 유형으로는 text/plain(해석된 HTML 문이 아닌 텍스트 콘텐츠로 반환되는 경우), text/gif(GIF 이미지용) 및 video/quicktime(Apple QuickTime® 형식의 동영상용)이 있습니다. MIME 유형의 표준 세트가 정의되었으며 웹 서버 또는 웹 브라우저에서 지원됩니다. Microsoft 웹 서버가 지원하는 콘텐츠 유형을 확인하려면 인터넷 서비스 관리자를 사용하여 웹 사이트의 속성 페이지를 열고 HTTP 헤더 탭을 클릭한 다음 파일 형식 탭을 클릭합니다.
브라우저 리디렉션 콘텐츠를 사용자에게 보내는 대신 브라우저를 다른 URL로 리디렉션하려면 Redirect 메서드를 사용합니다. 예를 들어, 사용자가 고객 ID를 받을 수 있도록 홈 페이지에서 애플리케이션을 입력했는지 확인하려는 경우 고객 ID 번호가 있는지 확인하고 그렇지 않은 경우 홈 페이지로 리디렉션할 수 있습니다.
<%
Session("CustomerID") = 0인 경우
응답.리디렉션 "homepage.asp"
종료 조건
%>
버퍼가 아직 열려 있지 않은 경우 콘텐츠나 헤더가 브라우저에 반환되기 전에 브라우저를 리디렉션해야 합니다. 페이지 상단과 <HTML> 태그 앞에 Response.Redirect 문을 배치하면 콘텐츠가 브라우저에 반환되지 않습니다. 콘텐츠나 헤더를 브라우저에 반환한 후 Response.Redirect를 사용하면 오류 메시지가 표시됩니다.
페이지 중간에 Response.Redirect를 사용하는 경우 다음 섹션에 설명된 대로 Response.Buffer 속성과 함께 사용하세요.
버퍼링된 콘텐츠 기본적으로 웹 서버는 ASP 페이지를 처리할 때 HTML 및 스크립트 처리 결과를 반환합니다. 그러나 사용자에게 항목을 보내기 전에 페이지의 모든 서버 스크립트 명령을 처리하도록 응답 개체의 Buffer 속성을 설정할 수 있습니다.
버퍼링 기술을 사용하여 페이지 처리 프로세스에서 해당 지점 이전에 사용자에게 콘텐츠를 보내지 않으려는 지점을 결정할 수 있습니다. 또한 Response 개체의 Redirect 메서드를 사용하여 사용자를 다른 페이지로 리디렉션하거나 Response 개체의 Clear 메서드를 사용하여 버퍼를 지우고 다른 콘텐츠를 사용자에게 보낼 수도 있습니다. 아래 예에서는 두 가지 방법을 모두 사용합니다.
<%
'버퍼링을 켜세요. 이 문은 <HTML> 태그 앞에 나타나야 합니다.
응답.버퍼 = 참 %>
<html>
<본문>
.
.
.
<%
Request("FName") = ""인 경우
응답.지우기
응답.리디렉션 "/samples/test.html"
또 다른
응답.쓰기 요청("FName")
종료 조건
%>
</body>
</html>
Response.Buffer를 사용하면 스크립트가 HTTP 헤더를 수정하기 전에 웹 서버가 HTTP 헤더를 반환하지 못하도록 할 수도 있습니다. Response.Expires 및 Response.Redirect와 같은 일부 속성 및 메서드는 HTTP 헤더를 수정합니다.
Buffer 속성이 스크립트에 설정되어 있고 Flush 메서드가 호출되지 않으면 서버는 사용자가 실행한 Keep-Alive 요청을 유지 관리합니다. 이러한 스크립팅 습관을 개발하면 서버가 각 사용자 요청에 대해 새 연결을 생성할 필요가 없기 때문에 서버 성능을 향상시키는 데 도움이 될 수 있습니다(서버, 사용자 및 모든 프록시 서버가 연결 유지 요구 사항을 지원한다고 가정). 그러나 이 접근 방식의 한 가지 잠재적인 단점은 사용자가 현재 ASP 파일의 모든 스크립트를 처리할 때까지 버퍼가 사용자에게 어떤 응답도 표시하지 않는다는 것입니다. 더 길고 복잡한 스크립트의 경우 사용자는 이 페이지를 보기 전에 오랫동안 기다려야 할 수도 있습니다.
기본적으로 ASP 응용 프로그램에서는 버퍼링이 해제되어 있습니다. 인터넷 서비스 관리자를 사용하여 전체 ASP 응용 프로그램에 대한 버퍼를 설정할 수 있습니다.
프록시 서버가 페이지를 캐시하도록 허용합니다. 프록시 서버를 통해 응용 프로그램은 사용자에게 페이지를 보낼 수 있습니다. 프록시 서버는 사용자 브라우저를 대신하여 웹 사이트의 웹 페이지를 요청합니다. 프록시 서버는 동일한 페이지에 대한 반복 요청이 빠르고 효율적으로 브라우저에 반환될 수 있도록 HTML 페이지를 캐시합니다. 프록시 서버는 요청을 수행하고 웹 페이지를 캐시하며 네트워크 및 웹 서버의 부하를 완화합니다.
캐싱은 HTML 페이지에서는 잘 작동하지만 동적으로 생성된 정보가 포함된 ASP 페이지에서는 제대로 작동하지 않습니다. 예를 들어, 주식 시장 상황이나 대규모 사업을 보여주는 재고 목록에 대한 보고에는 즉각적인 정보가 필요합니다. 한 시간 전의 정보는 현재 매우 부정확합니다. 애플리케이션이 맞춤형 홈페이지 등의 개인정보를 반환하는 경우 해당 사용자는 다른 사용자의 개인정보를 볼 수 없을 것으로 예상됩니다.
기본적으로 ASP 명령 프록시 서버 자체는 ASP 페이지를 캐시할 수 없습니다. 단, 이미지, 비트맵, 소규모 응용 프로그램 및 캐시된 페이지의 기타 참조는 캐시합니다. Response.CacheControl 속성을 사용하면 특정 페이지의 캐싱을 허용하도록 캐시 제어 HTTP 헤더 필드를 설정할 수 있습니다. Response.CacheControl의 기본값은 "Private" 문자열이며, 이는 프록시 서버가 이 페이지를 캐싱하는 것을 방지합니다. 캐싱을 허용하려면 캐시 제어 헤더 필드를 공개로 설정합니다.
<% Response.CacheControl = "공개" %>
페이지 콘텐츠가 전송되기 전에 HTTP 헤더가 브라우저나 프록시 서버로 전송되어야 하므로 Response.CacheControl 속성을 설정하거나 Response.Buffer를 사용하여 HTML 태그 이전에 페이지를 캐시할 수 있습니다.
캐시 제어 헤더 필드는 HTTP 1.1 사양의 일부입니다. 만료된 헤더 필드가 전송되지 않기 때문에 HTTP 1.0만 지원하는 프록시 서버에서는 ASP 페이지를 캐시할 수 없습니다.
브라우저의 페이지 캐싱 방지 각 브라우저 버전에는 페이지 캐시 여부에 대한 고유한 사양이 있습니다. 브라우저가 ASP 페이지를 캐싱하는 것을 방지하려면 Response.Expires를 사용하여 만료 헤더를 설정하십시오.
<% 응답.만료 = 0 %>
값이 0이면 캐시된 페이지가 강제로 만료됩니다. 페이지가 전송되기 전에 HTTP 헤더가 브라우저에 전송되어야 하기 때문에 HTML 태그 앞에 Response.Expires 속성을 배치하거나 Response.Buffer를 사용하여 페이지를 캐시할 수 있습니다.
동적 채널 만들기
Internet Explorer 4.0에는 웹 기획자가 공통 주제를 가진 웹 페이지를 하나의 채널로 결합하는 데 사용할 수 있는 새로운 기능이 있습니다. 브라우저에서는 채널 제목 표시줄에 채널이 표시됩니다. 사용자는 아이콘을 클릭하여 채널에 액세스합니다. 채널은 백그라운드에서 자동으로 업데이트됩니다. 사용자는 브라우저에서 최신 페이지를 다운로드하기 위해 사이트를 방문할 필요가 없습니다. 채널은 사용자에게 관련 웹 페이지 집합을 찾아볼 수 있는 빠르고 직접적인 경로를 제공하며 이러한 웹 페이지는 자동으로 업데이트됩니다.
ASP를 사용하면 스크립트를 작성하여 사용자의 기본 설정을 수집한 다음 동적으로 채널을 만들 수 있습니다. 채널 정의 파일(.cdf)은 채널 콘텐츠의 구성과 순서를 설정합니다. .cdf 파일의 명령은 HTML 마크업과 동일한 구문을 사용하므로 스크립트에서 더 쉽게 파악하고 생성할 수 있습니다. 채널 정의 파일을 생성하기 위해 ASP 스크립트를 작성할 때 스크립트는 .cdx 확장자를 사용합니다. ASP가 .cdx 확장자를 가진 파일을 읽으면 application/x-cdf 콘텐츠 유형이 자동으로 전송되며, 이는 브라우저에 채널 정의를 사용하여 바이트를 해석하도록 지시합니다. .cdx를 확장자로 사용하지 않는 경우 스크립트는 Response.ContentType을 사용하여 콘텐츠 유형을 application/x-cdf로 수동으로 설정해야 합니다.
다음은 채널을 사용하는 방법의 예입니다. 다음 HTML 양식은 사용자에게 채널을 선택하도록 요청합니다. 제출되면 양식은 .cdx 파일의 스크립트를 호출하여 채널 정의를 생성합니다.
<P> 원하는 채널을 선택하세요 </P>
<FORM METHOD="POST" ACTION="chan.cdx">
<P><입력 유형=체크박스 이름=영화> 영화
<P><입력 유형=체크박스 이름=스포츠> 스포츠
<P><입력 유형="제출" 값="제출">
</FORM>
Chan.cdx의 스크립트는 요청과 함께 제출된 테이블의 값을 기반으로 채널 정의를 생성합니다.
<% If Request.Form("Movies") <> "" Then %>
<채널>
영화 페이지에 대한 채널 정의문
</CHANNEL>
<% 종료 조건 %>
<% If Request.Form("스포츠") <> "" Then %>
<채널>
스포츠 페이지에 대한 채널 정의문
</CHANNEL>
<% 종료 조건 %>
서버에 파일 보내기 브라우저는 Posting Acceptor 응용 프로그램을 사용하여 웹 서버에 파일을 보낼 수 있습니다. Posting Acceptor가 파일을 업로드할 때 수신된 각 파일의 이름과 위치를 나열하는 URL로 인코딩된 양식 필드를 보냅니다. 우편 처리 URL은 파일을 업로드하는 스크립트에 추가되어 ASP 스크립트를 호출하여 이러한 필드 이름을 처리할 수 있습니다. 예를 들어, 파일 이름과 위치가 포함된 전자 메일을 시스템 관리자에게 자동으로 보내는 스크립트를 작성할 수 있습니다.