使用Session状态
不可能真的用Cookie来保存购物车。cookie太小也太简单。
要突破Cookie的限制,Asp.net Framework支持一个名为Session状态的功能。
Session没有大小限制
Session可以保存复杂的对象。
SessionSet.aspx
SessionGet.aspx
当使用Session状态时,一个名叫Asp.net_sesionid的Cookie会自动添加到浏览器。
包含了一个唯一标识符,可在页面切换时跟踪用户。
向Session对象增添项目时,这个项目将存储在Web服务器上而不是Web浏览器上。Asp.net_sessionId用于正确地关联数据和用户。
默认情况下,如果Cookie被禁用,Session状态也不能工作。
如果用户超过20分钟不请求任何页面,删除Session状态数据。
2011-5-13 11:27 danny
1、在Session状态中保存数据库数据
可以用Session状态来创建用户相关的缓存。
可为用户载入数据,然后允许用户排序或过滤该数据。
SessionDataView.aspx
同时要新建数据库,Web.config增加ConString
数据库表:Movies
web.config添加代码:
结果:
2011-5-16 15:23 danny
2、使用Session对象
主要API是:HttpSessionState类
HttpSessionState属性:
CookieMode
Count
IsCookieless
IsNewSession
IsReadOnly
Keys
Mode
SessionID
TimeOut
方法:
Abandon
Clear
Remove
3、处理Session事件
Global.asax中包含两个可以处理的关联Session状态的事件:Session Start和Session End事件。
Session Start事件在一个新用户会话开始时被触发。可以利用该事件从数据库载入用户信息。
Session End事件在会话终止时被触发。会话会因用户不活动而过期或者因电焊工地使用Session.Abandon()方法终止。
Glabal.asax
显示SessionCount:ShowSessionCount.aspx
2011-5-16 15:44 danny
4、会话失效控制
默认情况下,如果用户20分钟还不请求页面,Asp.net Framework认为他已经离开应用程序。
可以修改
web.config
也可以使用Session.Timeout=60;
5、使用无Cookie的Session状态
SessionID
P113-114
6、配置Session状态存储
默认情况下,Session状态被保存在Asp.net所在的相同的进程。
两个缺点:
1.进程内Session状态很脆弱
2.进程内Session状态可伸缩性较差
Session状态模式为以下值:
Off
InProc
StateServer
SQLServer
Custom
P115-P116
7、配置SQLServer Session状态
如果希望尽可能可靠地保存Session状态,可将Session状态保存到SQL Server数据库。
P117-P118
2011-5-16 16:03 danny
不可能真的用Cookie来保存购物车。cookie太小也太简单。
要突破Cookie的限制,Asp.net Framework支持一个名为Session状态的功能。
Session没有大小限制
Session可以保存复杂的对象。
SessionSet.aspx
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Session["message"] = "Hello World!"; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <h1> Session Item Added!</h1> </div> </form> </body> </html>
SessionGet.aspx
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { lblMessage.Text = Session["message"].ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblMessage" runat="server"></asp:Label> </div> </form> </body> </html>
当使用Session状态时,一个名叫Asp.net_sesionid的Cookie会自动添加到浏览器。
包含了一个唯一标识符,可在页面切换时跟踪用户。
向Session对象增添项目时,这个项目将存储在Web服务器上而不是Web浏览器上。Asp.net_sessionId用于正确地关联数据和用户。
默认情况下,如果Cookie被禁用,Session状态也不能工作。
如果用户超过20分钟不请求任何页面,删除Session状态数据。
2011-5-13 11:27 danny
1、在Session状态中保存数据库数据
可以用Session状态来创建用户相关的缓存。
可为用户载入数据,然后允许用户排序或过滤该数据。
SessionDataView.aspx
<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> DataView dvMovies; protected void Page_Load(object sender, EventArgs e) { dvMovies = (DataView)Session["Movies"]; if (dvMovies == null) { string conString = WebConfigurationManager.ConnectionStrings["Movies"].ConnectionString; SqlDataAdapter dad = new SqlDataAdapter("Select ID,Title,Director from Movies", conString); DataTable dtblMovies = new DataTable(); dad.Fill(dtblMovies); dvMovies = new DataView(dtblMovies); Session["Movies"] = dvMovies; } } protected void grdMovies_Sorting(object sender, GridViewSortEventArgs e) { dvMovies.Sort = e.SortExpression; } protected void Page_PreRender(object sender, EventArgs e) { grdMovies.DataSource = dvMovies; grdMovies.DataBind(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="grdMovies" AllowSorting="true" EnableViewState="false" runat="server" OnSorting="grdMovies_Sorting"> </asp:GridView> <br /> <asp:LinkButton ID="lnkReload" Text="Reload Page" runat="server" /> </div> </form> </body> </html>
同时要新建数据库,Web.config增加ConString
数据库表:Movies
id title director int(自增) nvchar(50) nVarchar(50)
web.config添加代码:
<configuration> <connectionStrings> <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> <add name="Movies" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\s2_3.mdf;User Instance=true" providerName="System.Data.SqlClient"/> </connectionStrings>
结果:
2011-5-16 15:23 danny
2、使用Session对象
主要API是:HttpSessionState类
HttpSessionState属性:
CookieMode
Count
IsCookieless
IsNewSession
IsReadOnly
Keys
Mode
SessionID
TimeOut
方法:
Abandon
Clear
Remove
3、处理Session事件
Global.asax中包含两个可以处理的关联Session状态的事件:Session Start和Session End事件。
Session Start事件在一个新用户会话开始时被触发。可以利用该事件从数据库载入用户信息。
Session End事件在会话终止时被触发。会话会因用户不活动而过期或者因电焊工地使用Session.Abandon()方法终止。
Glabal.asax
<%@ Application Language="C#" %> <script RunAt="server"> void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Application["SessionCount"] = 0; } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 } void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 Application.Lock(); int count = (int)Application["SessionCount"]; Application["SessionCount"] = count + 1; Application.UnLock(); } void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。 // 如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。 Application.Lock(); int count = (int)Application["SessionCount"]; Application["SessionCount"] = count - 1; Application.UnLock(); } </script>
显示SessionCount:ShowSessionCount.aspx
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { lblSessionCount.Text = Application["SessionCount"].ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblSessionCount" runat="server"></asp:Label> </div> </form> </body> </html>
2011-5-16 15:44 danny
4、会话失效控制
默认情况下,如果用户20分钟还不请求页面,Asp.net Framework认为他已经离开应用程序。
可以修改
web.config
<configuration> <system.web> <sessionState timeout="60"/> </system.web> </configuration>
也可以使用Session.Timeout=60;
5、使用无Cookie的Session状态
SessionID
P113-114
6、配置Session状态存储
默认情况下,Session状态被保存在Asp.net所在的相同的进程。
两个缺点:
1.进程内Session状态很脆弱
2.进程内Session状态可伸缩性较差
Session状态模式为以下值:
Off
InProc
StateServer
SQLServer
Custom
P115-P116
7、配置SQLServer Session状态
如果希望尽可能可靠地保存Session状态,可将Session状态保存到SQL Server数据库。
P117-P118
2011-5-16 16:03 danny
发表评论
-
16、使用数据源缓存
2011-06-07 09:43 821使用数据源缓存 除了在页面或用户控件级别进行缓存之外,也可以 ... -
15、使用部分页面缓存2
2011-06-02 09:17 7753、共享用户控件的输出缓存 默认情况下,同一个用户控件在不同页 ... -
14、使用部分页面缓存
2011-05-31 16:10 854使用部分页面缓存 1、 ... -
13、使用页面输出缓存2
2011-05-23 09:23 9538、使用编程方式设置页面输出缓存过期 可以使用Response ... -
12、使用页面输出缓存
2011-05-22 09:31 715使用页面输出缓存 可以给页面添加<%@ OutputC ... -
11、缓存概览
2011-05-21 13:04 436缓存概览 ASP.NET 3.5 Framework支持下面 ... -
10、使用用户配置文件
2011-05-18 09:09 1117使用用户配置文件 Asp.net Framework提供了一 ... -
8、使用浏览器Cookie
2011-05-16 11:13 1204使用浏览器Cookie set-cook ... -
7、使用角色管理器
2011-05-14 10:32 561使用角色管理器 Asp.net Framework提供三个角 ... -
6、使用ASP.NET Membership
2011-05-13 21:36 794使用ASP.NET Membership 通过Asp.net ... -
5、配置安全授权
2011-05-13 15:14 601配置安全授权 授权是指识别用户是否可以访问特定资源的过程。 ... -
4、配置身份验证
2011-05-13 09:08 963配置身份验证 Asp.net Framework支持三种验证 ... -
3、使用LoginStatus控件
2011-05-12 21:44 936使用LoginStatus控件 根据当前用户的验证状态,Lo ... -
2、使用CreateUserWizard控件
2011-05-12 09:18 1178使用CreateUserWizard控件 CreateUse ... -
1、使用Login控件
2011-05-11 21:27 1399使用Login控件 1、Login控件概览 加密文件: Se ...
相关推荐
"使用session保持登陆状态"这个主题就是关于如何在用户成功登录后,通过服务器端的session技术来维持其在线状态,直到用户主动退出或者session过期。下面我们将深入探讨这个话题。 首先,我们了解什么是session。...
自己整理的关于oracle session的状态查看,对新手有一定的帮助,希望您喜欢。
以上就是在Java中使用HttpClient保持SESSION状态的基本流程。在实际项目中,可能还需要处理重定向、超时、错误处理等复杂情况。注意,对于HTTPS站点,可能需要配置SSLContext和TrustManager,以允许HttpClient信任自...
在Web应用程序开发中,特别是在ASP.NET C#应用中,正确且有效地在类中使用Session是非常重要的,这能帮助我们实现用户个性化体验、购物车管理、登录状态维护等功能。 ### 一、理解ASP.NET中的Session Session对象...
在Java Web开发中,Session是服务器端用于跟踪用户状态的一种机制。当用户通过用户名和密码登录系统后,服务器需要一种方式来识别这个已验证的用户,以便在后续的请求中提供个性化的服务,例如访问权限控制。这时,...
使用 Session 和 Cookie 实现登录认证可以提供一种安全的方式来验证用户的登录状态。通过使用 Session 和 Cookie,可以将用户的登录状态存储在服务器端和客户端,使得用户可以安全地访问服务器上的资源。
这两个接口分别表示需要读写Session状态和只需要读取Session状态。如果没有实现这些接口,系统默认不允许使用Session。 #### 在Web Farm环境下为何Session会丢失? 在Web Farm环境中,因为用户请求可能被负载均衡...
hibernate中session对象的状态详解
5. 检查Session状态: 当需要验证用户时,我们可以检查Session中是否存在特定的值: ```csharp int? userId = HttpContext.Session.GetInt32("UserId"); if (userId.HasValue) { // 用户已验证 } else { ...
用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...
Session状态失效,简单来说,就是用户在使用过程中突然失去了服务器端保存的相关信息,导致功能异常或用户体验下降。 在描述中提到的博客链接(由于无法直接访问,我们只能根据标题和标签推测内容),可能详细解析...
JavaBean和Session Bean是Java企业级应用开发中的重要概念,特别是在使用Enterprise JavaBeans(EJB)技术时。本文将深入探讨这两个概念,以及如何在实际项目中使用它们。 首先,让我们了解什么是JavaBean。...
SESSION处于KILLED状态下如何找出对应的进程 SESSION是一个Oracle数据库中的会话管理机制,它允许用户连接到数据库并执行相应的操作。然而,在某些情况下,SESSION可能会处于KILLED状态,这时候我们需要找出对应的...
- 使用Session或Cookie来记录用户的状态。 - 在服务器端验证输入的信息,返回登录成功或失败的结果。 #### 结论 通过本实验的学习,学生不仅掌握了Session和Cookie的基本概念和用法,还能够独立开发简单的Web...
下面将详细讲解如何在Struts2的Action中使用session。 首先,理解session的基本概念。在Web开发中,session是一种服务器端存储用户状态的方式。当用户打开浏览器访问网站时,服务器会为该用户分配一个唯一的session...
为了克服Session的一些缺点,可以考虑使用Cookie(但Cookie大小和数量有限制)、Viewstate(适合在同一页内保持状态)、Application(全局共享数据,不随用户变化)或者数据库存储(适合大量持久化数据)等替代方案...
2. 启用Session状态:在Global.asax.cs文件的`Application_Start`方法中,设置`GlobalConfiguration.Configuration`的`HttpConfiguration`对象的`EnableSessionState`属性为`true`。 ```csharp protected void ...
【Session的使用详解】 在Web开发中,Session是用于跟踪用户状态的一种机制,尤其是在HTTP协议无状态特性下,Session显得尤为重要。HTTP协议是基于请求-响应模型的,每次请求都被视为独立的,服务器不会记住之前的...
SSHnote session函数的对象状态转换是Hibernate框架中一个关键的概念,涉及到如何管理数据库中的持久化对象。在Hibernate中,对象有三种基本状态:瞬时(Transient)、持久化(Persistent)和脱管(Detached)。理解...
总的来说,使用BIRT通过Servlet访问Session数据是一个常见的需求,特别是在需要个性化报告或者基于用户状态的报告生成时。这需要开发者具备Java Web开发的基本技能,同时熟悉BIRT的API和工作原理。通过学习和实践,...