이전 기사에서 저자는 ASP 내장 객체 응용 프로그램 및 세션을 사용하는 두 가지 매우 실용적인 방법을 자세히 소개했습니다. OnStart 및 OnEnd 이벤트 스크립트는 Global.ASA 파일에 선언되어야 하므로이 기사는 Global.ASA 파일을 사용하는 방법을 자세히 소개합니다. 모든 사람이 지금까지 배운 지식을 마스터 할 수 있도록이 기사에는 참조를위한 ASP 채팅 프로그램도 포함됩니다.
최근에 많은 친구들이 저에게 처음 두 가지 문제에서 예제 프로그램을 실행할 때 왜 그런 실수가 있는지 물어 보는 편지를 보냈습니다. 우선, 나는이 프로그램들이 혼자서 작성되었으며 공장을 떠나기 전에 자격 검사를 통과했으며 위조품과 화려한 제품이 없다고 선언하고 싶습니다. :) 쿠키는 프로그램에서 고객 정보를 기록하는 데 사용되므로 브라우저에서 쿠키를 수락하지 않으면 프로그램이 정상적으로 실행되지 않습니다. 또한 클라이언트 쿠키에서 고객 정보를 기록하기 위해 사용하는 방법은 응답입니다. HTTP HTTP 헤더 정보가 고객에게 전송 된 경우, 응답이 고객에게 전송 된 후 쿠키가 사용되면 다음 오류가 나타납니다. HTTP 헤더가 고객의 브라우저에 기록되었습니다. HTTP 헤더의 수정은 페이지 컨텐츠에 작성하기 전에 있어야합니다. , 일부 친구는 프로그램을 클립하거나 프로그램의 사전 및 후면 순서를 방해하거나 ASP 샘플 프로그램 전에 HTML 코드를 잘못 추가하여 프로그램 실행에 오류가 발생할 때주의를 기울이지 않을 수 있습니다. 따라서 한편으로는 일 루틴을 처음 실행할 때 프로그램을 변경하지 말고 ASP 프로그램을 실행할 때 프로그램을 기반으로 점차 개선하려고합니다. ASP 프로그램에서 쿠키 나 세션이 사용되면 적어도 브라우저에서 허용 가능한 쿠키를 선택해야합니다.
다음으로 Global.asa 파일을 사용하는 방법을 소개하겠습니다.
Global.asa 파일이란 무엇입니까? 실제로 프로그램 작성자가 이벤트 스크립트를 지정하고 세션 및 응용 프로그램 범위를 사용하여 개체를 선언 할 수있는 선택적 파일입니다. 이 파일의 내용은 사용자에게 표시하는 데 사용되지 않고 응용 프로그램에서 전 세계적으로 사용하는 이벤트 정보 및 객체를 저장하는 데 사용됩니다. 파일의 이름은 global.asa 여야하며 응용 프로그램의 루트 디렉토리에 저장해야합니다. 각 응용 프로그램에는 하나의 Global.asa 파일 만 가질 수 있습니다.
Global.asa 파일에서 포함 된 스크립트에 <cript> tag가 캡슐화되지 않았거나 정의 된 객체에 세션이나 응용 프로그램 범위가 없으면 서버는 오류를 반환합니다. Global.ASA 파일에 포함 된 스크립트를 스크립트 지원 언어로 작성할 수 있습니다. 여러 이벤트가 동일한 스크립팅 언어 인 경우 <cript> 태그 세트로 구성 할 수 있습니다.
Global.asa 파일에 선언 된 프로세스는 application_onstart, application_onend, session_onstart 및 session_onend 이벤트와 관련된 하나 이상의 스크립트에서만 호출 할 수 있습니다. ASP 기반 응용 프로그램의 ASP 페이지에서는 사용할 수 없습니다. 응용 프로그램간에 절차를 공유하려면 별도의 파일로 선언 한 다음 SSI (Server-Side Inclusion) 문을 사용하여 프로 시저를 호출하는 ASP 프로그램에 파일을 포함시킬 수 있습니다. 일반적으로 포함 된 파일의 확장은 .inc이어야합니다.
다음은 매우 표준 Global.asa 파일입니다.
<script language = vbscript runat = server>
'session_onstart는 클라이언트가 ASP 응용 프로그램에서 처음 페이지를 실행할 때 실행됩니다.
'Session_Onend는 클라이언트의 세션이 신청서 시간을 초과하거나 종료 할 때 실행됩니다.
'Application_onStart는 모든 고객이 애플리케이션 홈페이지에 처음 액세스 할 때 실행됩니다.
'Application_onend는 사이트 웹 서버가 다운되면 실행됩니다
< /스크립트>
<script language = vbscript runat = server>
서브 application_onstart
visitorCountFilename = server.mappath ( /ex2) + /visitCount.txt
set fileobject = server.createobject (scripting.filesystemobject)
set out = fileObject.opentExtFile (visitorCountFilename, 1, false, false)
응용 프로그램 (방문자) = out.readline
응용 프로그램 (visitorCountFilename) = visitorCountFilename
종료 서브
'================================================= ===========================
서브 application_onend
set fileOutObject = server.createObject (scripting.filesystemobject)
set out = fileOutObject.creatextFile (응용 프로그램 (visitorCountFilename), true, false)
out.writeline (응용 프로그램 (방문자))
종료 서브
'================================================= =========================== SUB SESSION_ONSTART
세션. 타임 아웃 = 5
응용 프로그램 (방문자) = 응용 프로그램 (방문자) + 1
세션 (id) = session.sessionId
종료 서브
< /스크립트>
이 Global.ASA 프로그램에서는 파일 시스템에 액세스하기위한 메소드, 속성 및 컬렉션을 제공하는 ASP의 파일 액세스 구성 요소가 관련되어 있습니다. 이것은 향후 ASP 구성 요소에서 논의 될 것입니다. 여기서 서버에서 새 파일을 만들고 파일에 쓸 수 있습니다. 이는 실제로 ASP 페이지 액세스 카운터 응용 프로그램의 전역 파일입니다. 먼저 고객이 응용 프로그램의 홈페이지에 액세스하면 visitcount.txt의 텍스트 파일을 서버에 지정된 가상 디렉토리에서 정의하고 저장합니다. 애플리케이션 수준 변수에서 파일의 경로 및 내용. 클라이언트가 ASP 응용 프로그램에서 모든 페이지에 액세스하면 프로세스 세션 _onstart 정의는 응용 프로그램 수준 변수 방문자의 값을 자동으로 추가합니다. 이러한 방식으로 고객이 페이지를 방문 할 때마다 가변 방문자는 클릭 스루 비율 계산 기능에 자동으로 추가됩니다. 가변 방문자의 값은 시스템 메모리에 저장되므로 서버가 종료되거나 다시 시작되면 변수에 저장된 데이터는 자동으로 손실되므로 Application_onend는 이전에 설정되었습니다. 서버가 종료되거나 다시 시작되면 서버가 다시 시작되면 Application_onStart 프로세스가 visitCount.txt 파일에서 이전 통계를 읽을 수 있습니다.
이 기간 동안, 나는 모든 ASP 응용 프로그램을 작성하는 법을 배운 내장 ASP 객체를 사용할 수 있다고 생각합니다 간단하지만 실용적인 ASP 응용 프로그램을 개발하십시오. 아주 간단한 ASP 웹 대화방 프로그램을 제공하겠습니다. 어쩌면 친구들은 일부 잡지에서 ASP 채팅 프로그램을 작성하는 방법을 보았을 수도 있지만 저자는 하나의 .asp 파일 만 사용하여 간단한 프로그램을 작성했습니다. 다음 코드를 메모장에 클립하고 chat.asp로 저장하십시오.
< %@ language = vbscript %>
< %
response.buffer = true '출력 캐시를 다른 페이지를 표시하도록 설정합니다.
오류이 재개되면 다음 '프로그램 오류 부분을 무시하십시오.
request.servervariables (request_method) = 그런 다음
'클라이언트가 웹 페이지를 요청하는 방법을 결정하십시오
'---------------------------------------------------------------- --------------------------------------------------------- -----------------------------
'고객 로그인 인터페이스
'---------------------------------------------------------------- --------------------------------------------------------- -----------------------------
%>
<form 메소드 = post action = chat.asp> <p>
<입력 유형 = 텍스트 이름 = nick size = 20 value = nick style = 배경색 : rgb (192,192,192)> <br>
<입력 유형 = 값을 입력합니다
<p> <입력 유형 = 숨겨진 이름 = log size = 20 value = 1> <br> </p>
< /form>
< %
응답. 엔드 '프로그램 프로세스를 끝내십시오
또 다른
응답. '캐시의 내용을 지우십시오
딤 토크
request.form (nick) <>이면
'고객이 채팅 인터페이스에 있는지 확인
세션 (nick) = request.form (nick)
끝 If
'---------------------------------------------------------------- --------------------------------------------------------- -----------------------------
고객 채팅 인터페이스
'---------------------------------------------------------------- --------------------------------------------------------- -----------------------------
%>
<form method = post action = chat.asp name = form1> <p> < %= session (nick) %> speak : <입력 유형 = 텍스트 이름 = talk size = 50> <br>
<입력 유형 = 제출 값 = 제출 이름 = B1>
<입력 유형 = 재설정 값 = 취소 이름 = b2> </p>
< /form>
<a href =/asptest/shusheng/chat.asp> Leave <//a> <br> <br>
< %
request.form (log) <> 1 인 경우
if trim (request.form (talk)) = 그런 다음
'사용자가 아무것도 입력하지 않았는지 결정하십시오
Talk = 세션 (Nick) & Silence는 금입니다.
또 다른
talk = trim (request.form (talk))
'캐릭터 후 공간을 제거하십시오
끝 If
application.lock
Application (show) = <테이블 테두리 = '0'CellPadding = '0'CellPacing = '0'width = '85%'> <tr> <td width ='100%'bgcolor ='#c0c0c0 '> < /td > < /tr> <tr> <td width = '100%'> <font color = '#0000ff'> & session (nick) & time & from & from & request.servervaribles (remote_addr) & said : < /font> & talk & < /td> “
application.unlock
응답. 응용 프로그램 작성 (표시)
끝 If
끝 If
%>
이 대화방 프로그램에 대한 단계별 분석을 수행해 봅시다.
우선, 채팅방의 모든 고객은 정보를 공유 할 수 있어야합니다. 응용 프로그램 수준 변수와 함께 객체 응용 프로그램을 사용하는 것은 불가피합니다 모든 클라이언트를 읽을 수 있도록 변수. 우리는 클라이언트가 대화를 입력하고 변수 대화에 저장하는 것을 배운 요청 객체를 사용할 수 있습니다. 그런 다음 대화 값을 다음과 같이 응용 프로그램 수준 변수 쇼에 저장할 수 있습니다.
< % 응용 프로그램 (show) = talk & application (show) %>
다음으로 고려해야 할 사항은 다른 고객이 채팅 애플리케이션에서 동시에 작동 할 때 처리하는 방법입니다. 이 문제는 실제로 데이터베이스의 두 사용자가 동시에 동일한 레코드를 동시에 작성하면 동시에 동일한 응용 프로그램 수준 변수를 작성하면 한 명의 사용자가 수행 한 수정이 작업에 의해 덮어 씁니다. 다른 사용자 세션에 참석 한 사람이 그것을보기 전에 사라졌습니다. 이러한 종류의 문제를 피하려면 응용 프로그램 객체의 잠금 속성을 사용하여 현재 사용자가 응용 프로그램 수준 변수를 수정하기 시작하면 응용 프로그램 객체의 속성을 편집하거나 추가해야합니다. 그때까지는 응용 프로그램 객체의 속성을 다른 사용자가 응용 프로그램 객체를 편집하도록 요청하면 응용 프로그램이 잠금 해제되는 것을 알 때까지 대기해야합니다. 아래 그림과 같이 :
application.lock
응용 프로그램 (show) = talk & application (show)
application.unlock
이제 전체 프로그램의 핵심 부분을 이해 했으므로 고객 정보를 저장하는 방법을 고려하십시오. 좋다:
세션 (nick) = request.form (nick)
마지막으로, 고려해야 할 것은 고객 로그인 인터페이스, 고객 채팅 인터페이스와 같은 하나의 .asp 파일에서만 다양한 이벤트를 처리하는 방법입니다. 클라이언트가 .ASP 파일을 처음 요청할 때 간단한 HTTP get 메소드를 사용하지만 클라이언트가 페이지의 양식 필드에 데이터를 추가하고 양식을 자체로 제출하면 .asp 파일이 다시 요청되지만. 이것은 데이터가 HTTP 게시물을 통해 전달됩니다. 파일이 요청되는 방식은 두 가지 방식으로 결정할 수 있습니다. 먼저, request.form 컬렉션에 멤버가 포함되어 있는지 테스트하십시오. 두 번째는 request.servervariables (request_method) 변수를 사용하는 것입니다. HTTP GET를 통해 양식이 요청되면 양식이 제출되면이 변수 반환을 얻고 게시합니다. 후자의 방법은 파일의 요청 방법을 결정하는 데 더 직접적이므로 다음 코드를 사용하여 판단합니다.
request.servervariables (request_method) = 그런 다음
ASP 캐시를 설정하므로 프로그램에서 페이지 요청 메소드가 가져 오면 응답을 실행합니다. 프로그램 실행. 이러한 방식으로 동일한 .asp 파일을 사용하여 다른 상황에 따라 고객에게 다른 인터페이스를 표시 할 수 있습니다.
좋아, 나는 당신 에게이 프로그램을 직접 읽으십시오 채팅에서 말하지 마십시오. 다른 고객이 말하는 것을 알 수 없습니다. 모든 사람은 인터넷에서 채팅의 매력을 알고 있습니다. ASP는 물론 더 많은 코드를 작성해야합니다. 모든 사람이 숨겨진 버전의 오페라를 통과 할 수 있도록이 채팅 프로그램의 수준을 점차 개선하십시오. 참고 :이 채팅 프로그램을 사용하면 PWS에서 채팅 애플리케이션을 구축 할 수 있습니다. 컴퓨터를 통해 매우 멋지다.