ASP 강의 2: 양식을 통해 전송된 데이터 읽기
저자:Eve Cole
업데이트 시간:2009-05-30 19:58:19
ASP를 배우는데 가장 중요한 것은 ASP에 내장된 6가지 개체를 익히는 것입니다. 사실 지난 강의에서 우리는 이미 Response 객체(진짜? 실수하셨나요!)에 대해 배웠고, Response 객체에서 가장 흔히 사용되는 Write 메소드, Redirect 메소드, Expires 속성에 대해서도 배웠습니다. 개체, 메서드, 속성, 컬렉션 및 이벤트(하나도 모릅니다!)의 개념을 볼 때 이전에 노출된 적이 없다면 똑똑하고 이러한 개념에 관심이 없는 것입니다. 사용법만 알면 됩니다. 핵심은 복사하는 것입니다. 예제를 통해 계속해서 Request 객체를 학습해 보겠습니다. 이해를 돕기 위해 다음 프로그램을 실행하여 출력 결과를 확인하세요.
1. Request.ServerVariables를 사용하여 환경 변수를 얻습니다. 이 부분은 매우 간단하지만 얻은 내용이 매우 중요합니다. 다음 예를 참조하세요.
<%@ 언어=VBScript %>
<HTML><BODY>
<% 'wuf8.asp
Response.Write "ASP 파일을 실행할 경로: " &_
Request.ServerVariables("스크립트_이름") & "<Br>"
Response.Write "콘텐츠의 데이터 길이를 반환합니다: " &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "고객의 IP 주소 반환: " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
응답.쓰기 "브라우저 이름: " &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
Response.Write "홈 페이지의 실제 물리적 경로로 돌아가기: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<테이블 colspan=8 cellpadding=5 테두리=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">환경 변수 이름</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">콘텐츠</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
결과1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
결과 2
</font></td></tr>
</table>
</BODY></HTML>
이제 이전 강의에서 설명한 wuf2.asp 루틴이 얼마나 쉬운지 알게 되실 것입니다!
참고: 이 프로그램 후반부의 HTML 마크업은 순전히 다음 예제를 준비하기 위한 것이므로 놀라지 마십시오. 그렇다면 또 어떤 환경 변수가 있나요? 다음 예제를 실행해보면 알 수 있습니다. (이 프로그램은 일부 코드를 삭제했습니다. 이해하기 쉽도록 제 사이트에서 소스 프로그램을 다운로드하는 것이 가장 좋습니다.)
<%@ 언어=VBScript %>
<% 'wuf9.asp
옵션 명시적
희미한 Sv
%>
<HTML><BODY>
<테이블 colspan=8 cellpadding=5 테두리=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">환경 변수 이름</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">결과</font></td>
</tr>
<%
Request.ServerVariables의 각 Sv에 대해
응답."<tr>" 쓰기
응답.쓰기 "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
응답.Sv 쓰기
응답."</font></td>" 쓰기
응답.쓰기 "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
응답.쓰기 요청.서버변수(Sv)
응답.쓰기 "</font></td></tr>"
다음
%>
</table>
</BODY></HTML>
여기서는 For...Each 루프를 사용하여 컬렉션의 모든 요소를 나열합니다. 후반부가 이해가 안가신다면 wuf8.asp를 비교해보시고, 실행결과를 보시고 잘 이해해 보시기 바랍니다(당신의 태도는 어떤가요?).
2. 양식을 통해 서버에 데이터를 전송합니다. (클라이언트가 보낸 데이터를 서버가 읽는 방식으로도 이해될 수 있습니다.)
홈페이지 작업을 해본 적이 있다면 많은 홈페이지에서 일반적으로 사용자가 데이터를 입력할 수 있도록 양식 양식을 사용한 다음 "제출" 버튼을 통해 데이터를 보내는 것을 알아야 합니다. From 형식의 "메서드"에는 POST와 GET이라는 두 가지 주요 메서드가 있습니다. "action" 뒤에는 일반적으로 .cgi, .pl 또는 .asp 파일이 지정됩니다. 오늘 배울 내용은 이 .asp를 작성하는 방법입니다. 파일.
(1) POST 방식으로 데이터를 전송할 경우 Request.Form을 사용하여 데이터를 읽어옵니다.
먼저 사용자가 데이터를 입력할 수 있도록 다음 wuf10.htm 파일을 편집합니다.
<html>
<body bgcolor="#FFFFFF">
<form method="post" action="wuf11.asp">
이름: <input type="text" name="이름"><br>
성별: <select name="성별">
<옵션>남성</옵션>
<옵션>여성</옵션>
</선택> <br>
메시지: <textarea name="message">안녕하세요!
여러 줄의 텍스트 처리에 주의하세요</textarea> <br>
취미(여러 개를 선택하려면 Ctrl 키를 누른 채 선택):
<select name="취미" 여러 크기="4">
<옵션>컴퓨터</옵션>
<option>쇼핑</option>
<옵션>영화</옵션>
<option>읽기</option>
</선택> <br>
<input type="submit" name="제출" value="제출">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
그런 다음 wuf10.htm이 데이터를 수집하는 데 사용해야 하는 wuf11.asp 파일을 작성합니다.
<%@ 언어=VBScript %>
<% 'wuf11.asp
옵션 명시적
응답.만료=0
희미한 StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("yourname")) 'Trim 함수는 앞뒤 공백을 제거하는 데 사용됩니다.
StrGender = Trim(Request.Form("성별"))
StrM = Trim(Request.Form("메시지"))
StrMsg = 바꾸기(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf는 캐리지 리턴과 라인 피드의 조합과 같습니다. 바꾸기 함수의 경우 해당 기능은 StrM 문자열의 vbcrlf를 "<Br>" & vbcrlf로 바꾸는 것입니다(이 vbcrlf의 사용에 대해 생각해 보십시오. 출력 파일의 HTML 소스 코드를 보면 이해할 수 있습니다) 자세한 내용은 VBScript 도움말을 참조하세요.
%>
<HTML><BODY>
이름: <%= StrName%><Br><Br>
성별: <%= StrGender%><Br><Br>
메시지: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
실제로 "제출" 버튼의 값도 전달됩니다. <Br>
<%= Request.Form("제출")%><Br><Br>
<% '먼저 위의 내용을 이해하신 후, 관심이 있으시면 여러 옵션을 읽는 방법을 살펴보세요.
Response.Write "선택한 총 취미 수:" & Request.Form("hobby").Count & "<Br>"
나는 어둡다
I = 1에서 Request.Form("hobby").Count로
Response.Write Request.Form("hobby")(I) & "<Br>"
다음
%>
</BODY></HTML>
이 예에서는 이해를 돕기 위해 두 개의 프로그램을 사용합니다. 실제로 하나의 프로그램만 사용할 수도 있습니다. 관심이 있는 경우에는 다음 루틴 wuf12.asp를 참조하세요. 이는 환경 변수에 대한 이해를 높이는 데 도움이 됩니다.
<%@ 언어=VBScript %>
<% 'wuf12.asp
옵션 명시적
응답.만료=0
희미한 StrName, StrGender, StrM, StrMsg
Request.ServerVariables("Content_Length") <> 0인 경우
'데이터를 제출한 후에는 길이가 0이 아니므로 다음 명령문을 실행하여 결과를 표시합니다.
'다음 부분은 실제로 wuf11.asp에서 복사되었습니다.
StrName = Trim(Request.Form("이름"))
StrGender = Trim(Request.Form("성별"))
StrM = Trim(Request.Form("메시지"))
StrMsg = 바꾸기(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><BODY>
이름: <%= StrName%><Br><Br>
성별: <%= StrGender%><Br><Br>
메시지: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.Write "선택한 총 취미 수:" & Request.Form("hobby").Count & "<Br>"
나는 어둡다
I = 1에서 Request.Form("hobby").Count로
Response.Write Request.Form("hobby")(I) & "<Br>"
다음
%>
</BODY></HTML>
<%
또 다른
'처음 페이지를 불러오면 데이터가 제출되지 않아 이전 부분은 실행되지 않고 여기서부터 시작됩니다.
'이것이 <HTML></HTML>의 두 쌍이 있는 이유입니다.
'아래 wuf10.htm을 복사하세요.
'<form method="post" action="wuf11.asp">를 환경변수로 대체했지만 완전히 동일합니다.
Response.Write "결과 보기: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><BODY>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
이름: <input type="text" name="이름"><br>
성별: <select name="성별">
<옵션>남성</옵션>
<옵션>여성</옵션>
</선택> <br>
메시지: <textarea name="message">안녕하세요!
여러 줄의 텍스트 처리에 주의하세요</textarea> <br>
취미(여러 개를 선택하려면 Ctrl 키를 누른 채 선택):
<select name="취미" 여러 크기="4">
<옵션>컴퓨터</옵션>
<option>쇼핑</option>
<옵션>영화</옵션>
<option>읽기</option>
</선택> <br>
<input type="submit" name="제출" value="제출">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%종료일 경우%>
(2) GET 메소드를 사용하여 데이터를 전송하는 경우 Request.Querystring을 사용하여 데이터를 읽습니다.
먼저 사용자가 데이터를 입력할 수 있도록 다음 wuf13.htm 파일을 편집합니다.
<html>
<body bgcolor="#FFFFFF">
<form method="get" action="wuf14.asp">
영문 이름 : <input type="text" name="Ename"> <br>
중국어 이름: <input type="text" name="Cname"><br>
성별: <select name="성별">
<옵션>남성</옵션>
<옵션>여성</옵션>
</선택> <br>
<input type="submit" name="제출" value="제출">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
그런 다음 wuf13.htm이 데이터를 수집하는 데 사용해야 하는 wuf14.asp 파일을 작성합니다.
<%@ 언어=VBScript %>
<% 'wuf14.asp
옵션 명시적
응답.만료=0
희미한 StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'Trim 함수는 앞뒤 공백을 제거하는 데 사용됩니다.
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("성별"))
%>
<HTML><BODY>
영문 이름: <%= StrEname%><Br><Br>
중국어 이름: <%= StrCname%><Br><Br>
성별: <%= StrGender%><Br><Br>
제출된 문자열을 살펴보세요: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
이 프로그램을 더 잘 이해하려면 먼저 브라우저에서 wuf13.htm 루틴의 효과를 시도하고 출력 결과를 살펴보는 것이 좋습니다. Yahoo에서 검색해 보면 거의 똑같습니다. 이때 주소창에 "http://localhost/wuf14.asp?Ename=Rose&Cname=leetwo&gender=female"을 직접 입력해봐도 같은 결과가 나옵니다. 따라서 이렇게 볼 수 있습니다. wuf13.htm의 결과는 다음과 같은 매개변수가 있는 링크를 얻는 것입니다. Request.QueryString은 http:// 주소의 추가 매개변수에서 각 데이터를 읽습니다.
실제로 "제출" 버튼을 누르면 데이터 전송 목적을 달성하기 위해 쿼리 문자열(입력 데이터)이 매개변수(각 매개변수는 "&"로 구분됨) 형태로 URL 주소에 추가됩니다. 동시에 브라우저에 표시되는 쿼리 문자열에는 중국어가 없지만 퍼센트 기호가 포함되어 인식할 수 없는 문자가 인코딩되어 있기 때문입니다. 마지막으로 이전과 마찬가지로 이 두 프로그램을 하나의 프로그램으로 병합할 수도 있습니다(루틴 wuf15.asp, 내 사이트에서 다운로드해야 함).
몇 가지 참고사항:
1. POST 메서드를 사용하여 데이터를 제출하는 경우 Request.ServerVariables("Content_Length")>0입니다.
GET 메서드를 사용하여 데이터를 제출하는 경우 Request.ServerVariables("Query_String") <> ""입니다.
2. 원리를 이해한 후에는 동일한 ASP 파일에서 Request.Form과 Request.QueryString을 혼합할 수 있습니다.
3. 양식에 여러 개의 버튼이 있는 경우 사용자가 어떤 버튼을 눌렀는지 어떻게 알 수 있나요? 주의 깊게 살펴보면 wuf11.asp 루틴에는 "Submit" 버튼의 값도 함께 전송된다는 문장이 있고, wuf13.htm에서 생성된 쿼리 스트링에서도 비슷한 값을 찾을 수 있다는 것을 알 수 있다. 참고: 누른 버튼의 값만 전송되며 다른 버튼의 값은 ""입니다. 이는 판단의 기초입니다("China Planning News" InfoWeb 웹사이트에도 유사한 기사가 있음).