ClassicASP Asp객체 & 전역변수(global.asa)
페이지 정보
본문
1. Asp 객체
Request
Response
Server
Application 클라이언트에 공통으로 적용(=DB)
Session 클라이언트에 개별적으로 적용
2. 전역변수 (파일공유 전역변수) : 모든페이지에 적용됨
전역변수를 적용 할 수 있는 객체는 Application / Session 객체가 있다!
Application 클라이언트에 공통으로 적용(=DB)
Application("변수명")
Session 클라이언트에 개별적으로 적용
Session("변수명") // 기본20분 유지
session.sessionid
클라이언트 브라우저 접속시 할당되는 id값으로 브라우저가 닫힐때 소멸된다.! (장바구니 기능등...에 용이)
Application & Session - 전역변수 설정 유지
세션초기값 설정페이지 - global.asa 로 작성
이벤트로 제어
초기값 부여할때 쓰이는 global.asa 는 처음접속시 있으면 거쳐가고 없으면 그냥 무시하고 접속하게 된다.
3. global.asa
3-1. 자바스크립트
function 함수명(){
return 값;
}
3-2. VB스크립트
function 함수명() // 리턴할수 있음
end function
Sub 함수명() // 리턴할수 없음
End Sub
4. global.asa 예제
<script language=VBscript runat=Server> 'runat=Server"는 서버에서 돌아가라는 뜻!
Sub Application_OnStart '최초 클라이언트의 접속
'어플리케이션 변수 설정시작
'필요없으시면 빼도 됩니다.
Application.Lock
Application.contents("current_user") = 0
Application.Unlock
End Sub
Sub Session_OnStart '개인별 클라이언트의 접속
Session.Timeout=30 '유지시간설정 (기본은 20분)
'Session("uid")="guest"
'static_table = "ccssof_static"
'연결개체 생성
Set db = Server.CreateObject("ADODB.Connection")
db.provider = "SQLOLEDB.1" 'SQL서버를 쓴다면 보통 이렇게 쓴다.
db.Open("Persist Security Info=False;User ID=디비ID;password=디비PW;Data Source=디비IP")
db.defaultDatabase = "디비name"
'회원통계테이블에서 오늘날짜에 현재시간에 저장되어있는 레코드가 있는지 알아보는 쿼리
SQL = "SELECT * FROM "&static_table
SQL = SQL&" WHERE s_year= year(getdate())"
SQL = SQL&"and s_month=month(getdate()) and s_day = day(getdate()) and s_time = datepart(hh,getdate())"
Set rs= Server.CreateObject("ADODB.Recordset")
'###레코드 셋 열기
rs.Open SQL,db
If rs.eof or rs.bof Then '오늘날짜와 현재시간에 해당하는 레코드가 없다면 레코드 추가
SQL = "INSERT INTO "&static_table&" DEFAULT VALUES "
ELSE '아니면 해당레코드에 카운드 1증가
s_idx = rs("s_idx")
SQL = "UPDATE "&static_table
SQL = SQL & " SET s_count=s_count + 1 WHERE s_idx="&s_idx
End If
rs.close
Set rs = nothing
'#### 연결객체를 이용한 쿼리실행(빠른실행을 위해 레코드셋객체를 만들지 않음)
db.Execute SQL
db.close
Set db = nothing
'현재 접속자수 계산 루틴
'필요없다면 다음 루틴 제거
If isnull(Application.contents("current_user")) Then
Application.Lock
Application.contents("current_user") = 1
Application.UnLock
Else
Application.Lock
Application.contents("current_user") = Application.contents("current_user") + 1
Application.Lock
End If
End Sub
Sub Session_OnEnd '개인별 클라이언트의 접속종료
'현재 접속자수 계산 루틴
'필요없다면 다음 루틴 제거
If isnull(Application.contents("current_user")) Then
Application.Lock
Application.contents("current_user") = 0
Application.Unlock
Else
Application.Lock
Application.contents("current_user") = Application.contents("current_user") - 1
Application.UnLock
End If
End Sub
Sub Application_OnEnd '최종 클라이언트의 접속
End Sub
</script>
참고자료
댓글목록
등록된 댓글이 없습니다.