热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

7Session原理

有的隐私信息或不能让客户端随便改动的信息放在服务端即可,这时我们就用到session这人名词。以下的例子是我们在客户端写个值保存于服务器上,服务器读取其

有的隐私信息或不能让客户端随便改动的信息放在服务端即可,这时我们就用到session这人名词。

以下的例子是我们在客户端写个值保存于服务器上,服务器读取其值对显示在服务端:

为了实现上述的情况,我们建立一个类,让COOKIE传递一个id值给服务端,服务端再把得到的返回到客户端:

1。服务端的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;///


///SessionMgr 的摘要说明
///

public class SessionMgr
{
private static IDictionary<string,IDictionary<string,object>> sessiondata &#61; new Dictionary<string,IDictionary<string,object>>();public static IDictionary<string,object> getsession(string sessionid){if (!sessiondata.ContainsKey(sessionid)){IDictionary<string,object> session&#61;new Dictionary<string,object>();sessiondata[sessionid]&#61;session;return session;}elsereturn sessiondata[sessionid];}
}

2.建立服务端处理页面。先在上面放置两个button,一个为写入session,另个为读取session并把得到的值显示于按钮上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class session变量 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e){//用COOKIE来传递,写回去一个COOKIEif (Request.COOKIEs["mysessionID"] &#61;&#61; null){string id &#61; Guid.NewGuid().ToString();Response.SetCOOKIE(new HttpCOOKIE("mysessionID",id));}

}
///写入session
protected void Button1_Click(object sender, EventArgs e){string sessionid&#61;Request.COOKIEs["mysessionID"].Value;IDictionary<string, object> session &#61; SessionMgr.getsession(sessionid);session["服务器数据"] &#61; "ABCD";}
///读取session
protected void Button2_Click(object sender, EventArgs e){string sessionid &#61; Request.COOKIEs["mysessionID"].Value;IDictionary<string, object> session &#61; SessionMgr.getsession(sessionid);Button2.Text &#61; session["服务器数据"].ToString();}
}

以上就是Asp.net的session原理&#xff0c;会把用户的一些信息保存于服务端的内存中&#xff0c;为防止内存不停增大&#xff0c;它会给每个session加了个期限&#xff0c;因此session是有超时机制的&#xff0c;服务器并不清楚浏览器是否关闭. session并不是http协议规定的&#xff0c;是各种语言自己实现的功能&#xff0c;不同的浏览器访问同个网站会产生不同的session 和COOKIE,是不能跨域操作的。

在asp.net中session的用法非常简单&#xff0c;以下为自增的例子&#xff0c;我们在页面上放一个textbox 和button,每点击一次button就会给textbox的值增一

如下为原代码&#xff0c;值是放在服务端的&#xff0c;用户是无法修改值的&#xff0c;你也可以修改一下客户端试下&#xff1a;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class incSession : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Session["value"] &#61; 0;TextBox1.Text &#61; "0";}}protected void Button1_Click(object sender, EventArgs e){int v &#61;Convert.ToInt32(Session["value"]);v&#43;&#43;;Session["value"] &#61; v;TextBox1.Text &#61; v.ToString();}
}

session的值是object,有时是要类型转换的。

 

转:https://www.cnblogs.com/yagzh2000/archive/2013/06/03/3114895.html



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
淼淼L玖兰枢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有