ASP에는 일부 정보를 저장할 수 있는 두 가지 내부 개체가 있습니다. Application 개체와 Session 개체는 전체 응용 프로그램 기간 동안 사용되며 웹 사이트를 방문하는 모든 사용자가 공유합니다. 세션 기간 동안만 존재하며 현재 사용자에게만 존재합니다.
세션 개체 소개
컴퓨터에서 응용 프로그램 작업을 할 때 대화처럼 응용 프로그램을 열고 변경한 다음 닫습니다( 세션). 컴퓨터는 귀하가 누구인지 알고 있으며, 귀하가 언제 응용 프로그램을 열고 닫는지 알고 있습니다. 그러나 문제는 인터넷에서 발생합니다. HTTP 주소는 상태를 유지할 수 없고, 웹 서버는 귀하가 누구인지, 무엇을 했는지 알 수 없기 때문입니다.
세션 개체의 주요 목적은 웹 사이트를 방문하는 각 사용자에 대한 일부 정보를 저장하는 것입니다. 예를 들어 사용자가 로그인할 때 다음을 추가할 수 있습니다. 이를 사용자의 세션 저장소 정보에 추가하여 현재 사용자가 로그인되어 있는지 식별합니다.
세션의 원리는 다음과 같습니다. 사용자가 처음으로 웹 사이트를 방문하면 IIS는 사용자에게 긴 무작위 문자열을 할당합니다. 이 임의의 문자열을 SessionID라고 하며 서버는 이를 클라이언트에 전송하고 이를 쿠키에 저장합니다. 그런 다음 사용자가 서버의 다른 페이지를 방문하면 서버는 이 SessionID를 얻고 메모리에서 SessionID를 얻습니다. 관련 데이터는 세션 개체 컬렉션에 저장됩니다.
콘텐츠 컬렉션
이 컬렉션에 현재 사용자에 대한 일부 정보를 저장할 수 있습니다. 예를 들어 다음 코드는 데이터를 저장하고 읽는 방법을 보여줍니다.
<% '名字为username的Session集合中存储了一个“ZhangSan”字符串 Session.Contents("username") = "ZhangSan" Dim UserName '读取Session中的数据,可以省略Contents' UserName = Session.Contents("username")和下面一样 UserName = Session("username") Response.Write("<h2>" & UserName & "</h2>") %>
첫 번째 예
(SessionContents.asp) Remove 및 RemoveAll 메서드를 사용하는 방법을 보여줍니다. 코드는 다음과 같습니다....<h3>当前SessionID值为 <%=Session.SessionID%></h3><h3>Session中存储数据</h3><%'利用 Contents.Count 遍历 Session 的过程Sub Traversal_P() Dim i For i = 1 To Session.Contents.Count Response.Write("Session(""" & Session.Contents.key(i) & """) = " & Session.Contents(i)) Response.Write("<br>") NextEnd Sub'For Each 遍历 Session.Contents 集合 Sub Traversal_E() Dim x For Each x In Session.Contents Response.Write("Session(""" & x & """) = " & Session(x)) Response.Write("<br>") NextEnd Sub'Session.Contents中存储了多个数据,如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"'遍历 Contents 集合Traversal_E()%><hr><h3>删除名为username的数据</h3><%'删除 username 数据Session.Contents.Remove("username")'重新遍历 Contents 集合Traversal_P()%><hr><h3>删除所有的Session数据</h3><%'删除所有的数据Session.Contents.RemoveAll() Traversal_E()%>...
두 번째 예제
(SessionAbandon.asp)는 Abandon 메서드의 효과를 보여 줍니다. 데모를 통해 RemoveAll 메서드와 Abandon 메서드의 차이점은 RemoveAll만 있다는 것을 알 수 있습니다. 현재 컬렉션을 삭제하지만 클라이언트는 여전히 동일한 SessionID를 사용합니다(첫 번째 예에서는 SessionID가 변경되지 않은 상태로 유지됩니다). Abandon 메서드가 호출된 후에도 현재 페이지에서 Session 컬렉션에 계속 액세스할 수 있습니다. 페이지를 닫거나 새로 고치면 이전 세션이 삭제됩니다(이 예에서는 SessionID가 변경됨). 코드는 다음과 같습니다.<%'Abandon的使用后,在当前页面仍可以访问Session集合,关闭页面或刷新后'会使Session被删除,SessionID也就会改变Session.Abandon()'首先我们要记录一下SessionID的值,存放到Cookies中Dim numVisits, SID Response.Cookies("numVisits").Expires = DateAdd("d", 10, Now) Response.Cookies("SID").Expires = DateAdd("d", 10, Now) SID = Request.Cookies("SID") numVisits = Request.Cookies("numVisits")If numVisits = "" or SID = "" Then '如果是第一次运行该页面,则记录当前Sessio nID值 Response.Cookies("numVisits") = 1 Response.Cookies("SID") = Session.SessionID%> <h3>您这是第一次访问该页面,当前页面的SessionID为</h3> <h2><%=Session.SessionID%></h2><%Else%> <hr> <h3>您这是第<%=numVisits%>次访问该页面,当前页面的SessioID为</h3> <h2><%=Session.SessionID%></h2> <h3>您第一次访问时的SessionID为</h3> <h2><%=Request.Cookies("SID")%></h2><% numVisits = numVisits + 1 Response.Cookies("numVisits") = numVisitsEnd If%>
<%@CODEPAGE="65001"%>모든 정적
문자열에 적용됩니다.
Response.CodePage, Session.CodePage는 모든 동적 문자열에 적용됩니다. 출력 문자열
Response.CodePage의 범위는 단일 응답에만 있지만
SessionID 属性可以获得当前用户的 SessionID,有时候在客户端浏览器不支持 Cookies 的情况下,你可以将 SessionID 附加在客户端的 QueryString 变量中,从而标识每一个客户端。
Timeout 属性用于设定客户的 Session 超时期。客户对于 SessionID 并不是长期占有的,在其一段时间内没有和服务器端进行任何交互后,服务器端将放弃该 Session。
下面的代码(SessionCST.asp)中将演示这个三个属性的使用方法,代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <%Session.CodePage = 65001'作用于所有动态输出的字符串%> <!doctype html> <html> <head> <meta charset="utf-8"> <title>CodePage、SessionID、TimeOut属性的应用</title> </head> <body> <h3>当前页面使用的CodePage是:</h3> <h2><%=Session.CodePage%></h2> <hr> <h3>当前页面的SessionID是:</h3> <h2><%=Session.SessionID%></h2> <hr> <h3>当前页面Session默认超时时间为:</h3> <h2><%=Session.Timeout%>分钟</h2> </body> </html>
运行后,效果如下:
【相关推荐】
1. ASP免费视频教程
위 내용은 ASP에서 Session 개체의 세 가지 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!