c中session的用法

c中session的用法你知道吗?下面小编就跟你们详细介绍下c中session的用法,希望对你们有用。
c中session的用法如下:
  Session的基本属性:
一、属性
1、SessionID
SessionID 属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面注册统计。
2、TimeOut
Timeout 属性以分钟为单位为该应用程序的 Session 对象指定超时时限。如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。
二、方法
Session 对象仅有一个方法,就是 Abandon,Abandon 方法删除所有存储在 Session 对象中的对象并释放这些对象的源。如果您未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象。当服务器处理完当前页时,下面示例将释放会话状态。
< % Session.Abandon %>
三、事件
Session 对象有两个事件可用于在 Session 对象启动和释放是运行过程。
1、Session_OnStart 事件在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。
尽管在 Session_OnStart 事件包含 Redirect 或 End 方法调用的情况下 Session 对象仍会保持,然而服务器将停止处理 Global.asa 文件并触发 Session_OnStart 事件的文件中的脚本。
为了确保用户在打开某个特定的 Web 页时始终启动一个会话,就可以在 Session_OnStart 事件中调用 Redirect 方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理 Session_OnStart 事件脚本。您可以将脚本包含在该事件中以便检查用户打开的页是不是启动页,如果不是,就指示用户调用 Response.Redirect 方法启动网页。程序如下 :
< SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
< /SCRIPT>
上述程序只能在支持 cookie 的浏览器中运行。因为不支持 cookie 的浏览器不能返回 SessionID cookie,所以,每当用户请求 Web 页时,服务器都会创建一个新会话。这样,对于每个请求服务器都将处理 Session_OnStart 脚本并将用户重定向到启动页中。
2、Session_OnEnd 事件在会话被放弃或超时发生。
关于使用 Session 对象需要注意的事项 Application 对象相近,请参照前文。
会话可以通过以下三种方式启动 :
1、一个新用户请求访问一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件包含 Session_OnStart 过程。
2、用户在 Session 对象中存储了一个值。
3、用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件使用 < OBJECT> 标签创建带有会话作用域的对象的实例。
如果用户在指定时间内没有请求或刷新应用程序中的任何页,会话将自动结束。这段时间的默认值是 20 分钟。可以通过在 Internet 服务管理器中设置“应用程序选项”属性页中的“会话超时”属性改变应用程序的默认超时限制设置。应依据您的 Web 应用程序的要求和服务器的内存空间来设置此值。例如,如果您希望浏览您的 Web 应用程序的用户在每一页仅停留几分钟,就应该缩短会话的默认超时值。过长的会话超时值将导致打开的会话过多而耗尽您的服务器的内存资源。对于一个特定的会话,如果您想设置一个小于默认超时值的超时值,可以设置 Session 对象的 Timeout 属性。例如,下面这段脚本将超时值设置为 5 分钟。
< % Session.Timeout = 5 %>
当然你也可以设置一个大于默认设置的超时值,Session.Timeout 属性决定超时值。你还可以通过 Session 对象的 Abandon 方法显式结束一个会话。例如,在表格中提供一个“退出”按钮,将按钮的 ACTION 参数设置为包含下列命令的 .asp 文件的 URL。
< % Session.Abandon %>
Session的用法:
一、使用Session设定权限
Session简介:
简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。
Session的初次使用:
protected void Page_Load(object sender, EventArgs e)
{//这是页面的初始化
if (!Page.IsPostBack)
{//判断是否为初次执行
if (Object.Equals(Session["AdminName"], null))
{//判断在Session["AdminName"]是否存在值
Response.Redirect("ErrorPage.aspx", true);
}
else
{//要是存在则记录下这个人的用户名
Name.Text =  Session["AdminName"].ToString();
}
}
}
二、进行页面传值
在页面之间传递信息有许多方式:
第一:可以使用QueryString
第二:可以使用Session
第三:Server.Transfer
这三种传值方式都有利有弊,下面我以我的经验给大家讲解一下
首先:QueryString
QueryString是一种非常简单的传值方式,其缺点就是会把要传递的值显示在浏览器的地址栏中,并且此方法不能够传递对象。如果你想传递一个安全性不是那么重要或者是一个简单的数值时。使用此方式最好不过。
下面通过一个小例子来说明一下
1.创建一个Web页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,与一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
String Url = "ReceiveMessage.aspx?Name=" +
TxtName.Text + "&Email=" + TxtEmail.Text;
Response.Redirect(Url);
}
3.再创建一个接收信息页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{//使用Request来接收由上个页面传递过来的值,分别显示在页面上
LbName.Text = Request.QueryString["Name"];
LbEmail.Text = Request.QueryString["Email"];
}
再次:使用Session变量
使用Session变量传值是一种最常见的方式了,此种方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值Remove后,才消失
下面举例说明
1.创建一个页面,叫SendSession
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{//可以使用Session的Add方法
Session["Name"] = TxtName.Text;
//可以使用Session.Add("Name",TxtName.Text);
Session["Email"] = TxtEmail.Text;
//可以使用Session.Add("Email",TxtEmail.Text);
Response.Redirect("ReceiveMessage.aspx");
}
3.再创建一个页面,叫ReceiveMessage.aspx
4.在页面内添加两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
LbName.Text = Session["Name"].ToString();
LbEmail.Text = Session["Email"].ToString();
Session["Name"].Remove();
Session["Email"].Remove();
//使用结束要清除Session中的值
}
这是使用Session传递数值,此方式耗费服务器的资源,尽量少使用
再次:使用Server.Transfer
这种传递方式有点复杂,但也可以是一种值传递方式
下面举例说明一下:
1.创建一个页面,叫SendMessage.aspx
2.在页面内添加两个TextBox,叫TxtName,TxtEmail,添加一个Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
Server.Transfer("ReceiveMessage.aspx");
}
再添加一个属性
public String Name
{
Get
{
return TxtName.Text;
}
}
public String Email
{
Get
{
return TxtEmail.Text;
}
}
3.再创建一个页面,叫ReceiveMessage.aspx
4.在页面放两个Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
//创建原始窗体的实例SendMessage wf1
//获得实例化的句柄
wf1=(SendMessage)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看硬件信息

测试机器的硬件信息&#xff1a; 查看CPU信息&#xff08;型号&#xff09; # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU E5410 2.33GHz (看到有8个逻辑CPU, 也知道了CPU型号) # cat /proc/cpuinfo | grep physical …

支付宝集成交互流程

交互流程 功能流程 流程说明&#xff08;以Android平台为例&#xff09;&#xff1a; 第4步&#xff1a;调用支付接口&#xff1a;此消息就是本接口所描述的开发包提供的支付对象PayTask&#xff0c;将商户签名后的订单信息传进pay方法唤起支付宝收银台&#xff0c;订单格式具体…

VxLAN基础

转自&#xff1a;http://blog.csdn.net/freezgw1985/article/details/16354897 一 . 为什么需要Vxlan1. vlan的数量限制4096个vlan远不能满足大规模云计算数据中心的需求2. 物理网络基础设施的限制基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署3. TOR交换机MA…

find_first_of()和 find_last_of() 【获取路径、文件名】

string 类提供字符串处理函数&#xff0c;利用这些函数&#xff0c;程序员可以在字符串内查找字符&#xff0c;提取连续字符序列(称为子串)&#xff0c;以及在字符串中删除和添加。我们将介绍一些主要函数。 1.函数find_first_of()和 find_last_of() 执行简单的模式匹配&#x…

支付宝集成

memo Error Domain系统繁忙&#xff0c;请稍后再试 Code1000 "(null)" reslut {memo "Error Domain\U7cfb\U7edf\U7e41\U5fd9\Uff0c\U8bf7\U7a0d\U540e\U518d\U8bd5 Code1000 \"(null)\"";result "";resultStatus 4000;} 请问安装…

servlet中实现页面跳转return “r:”和return “f:

servlet中实现页面跳转return “r&#xff1a;”和return “f&#xff1a;”的区别和作用 分享| 2015-07-28 14:22741830480 | 浏览 48 次Pascal2015-07-28 14:26 #知道行家专业创造价值&#xff0c;火热招募中&#xff01;#提问者采纳热心网友r是redirect重定向&#xff0c;参…

多线程编程 RW_LOCK 读写锁

RW锁 读写锁&#xff0c;也叫共享独占锁 互斥量 要么是锁住状态&#xff0c;要么是不加锁状态&#xff0c;而且一次只有一个线程可以对其加锁。 读写锁可以有三种状态&#xff0c;读模式下加锁状态&#xff0c;写模式下加锁状态&#xff0c;不加锁状态。一次只有一个线程可以占…

Error Domain=NSCocoaErrorDomain Code=3840 JSON text did not start with array or object and option

数据请求失败 报错 Error DomainNSCocoaErrorDomain Code3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo{NSDebugDescriptionJSON text did not start with array or object and option to allow fragm…

vim学习笔记(4)帮助与配置

使用帮助 在Vim中输入命令&#xff1a;help&#xff0c;即可进入帮助界面&#xff0c;默认是英文&#xff0c;可以通过以下方式安装中文帮助&#xff08;以vimcdoc-1.9.0为例&#xff09;&#xff1a; 1、下载中文帮助的文件压缩包 2、解压 tar -xzvf vimcdoc-1.9.0.tar.gz 3、…

C语言程序代码优化

我认为一个好的用于科学计算的程序代码应该&#xff1a;算法漂亮精妙&#xff0c;程序简洁易懂&#xff0c;运算快速&#xff0c;节省内存。这里有的地方是矛盾的&#xff0c;比如简洁vs易懂&#xff0c;时间vs空间&#xff0c;找个平衡吧。目前来看时间要比空间宝贵一些。写程…

微信支付不回调支付成功的方法,这是为什么

如果你是Xcode7.2&#xff0c;或者IOS9.2的话&#xff0c;可能会遇见在微信客户端操作返回程序之后不能执行微信的onResp回调方法的问题&#xff0c;就是因为一下这两个方法被废弃掉了&#xff0c;所以我的新demo替换了一个新的方法在下面。就完美解决这个问题了&#xff08;并…

如何在苹果官网下载旧版本的Xcode 方法

1 在百度里输入“苹果开发者中心“&#xff0c;进入以下页面。点击页面中的“Member Center" 2 出现登录界面。这是需要苹果开发者帐号的&#xff0c;没有帐号的可以选择“Create Apple ID”进行注册。已经注册的选择“Sign In"登录 3 页面跳转后&#xff0c;选择…

屏幕尺寸 分辨率

1、分辨率 分辨率又称显示分辨率、屏幕分辨率 确定手机屏幕上显示多少信息的设置&#xff0c;以水平和垂直像素来衡量 6 750 *1334 像素 5s 640 * 1136 像素 2、屏幕尺寸 屏幕大小的物理尺寸&#xff0c;以屏幕对角线长度衡量 单位&#xff1a;英寸 1英寸2.54厘米 6 4.7英…

程序代码优化2

程序进行优化&#xff0c;通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一&#xff0c;一般是优化了代码的尺寸&#xff0c;就会带来执行时间的增加&#xff0c;如果优化了程序的执行速度&#xff0c;通常会带来代码增加的副作用&#xff0c;很…

【转】android多分辨率适配

前一阶段开发android项目&#xff0c;由于客户要求进行多分辨率适配&#xff0c;能够支持国内主流的分辨率手机。因此经过了几次开发走了很多弯路&#xff0c;目前刚刚领略了android多分辨率适配的一些方法。 先介绍一下所走的弯路&#xff0c;由于android的布局文件存放在res的…

TCP/IP SOCKET HTTP及HTTPS之间的关系

GET跟POST的区别&#xff1a; get只能传送128K的数据 而post是无限制的 post提交是不在会IE上带上参数 就算你加密了别人也会解密 一般比较重要的数据通过post 传&#xff0c;因为get是别人可以改参数值的 别人乱写参数&#xff0c;你的异常报个不停 网络七层由下往上分别为物理…

静态链接与动态链接的区别

动态链接库、静态库、import库区别 动态链接库(Dynamic Linked Library)&#xff1a; Windows为应用程序提供了丰富的函数调用&#xff0c;这些函数调用都包含在动态链接库中。其中有3个最重要的DLL&#xff0c;Kernel32.dll&#xff0c;它包含用于管理内存、进程和线程的各个函…

Java线程池介绍

根据摩尔定律&#xff08;Moore’s law&#xff09;&#xff0c;集成电路晶体管的数量差不多每两年就会翻一倍。但是晶体管数量指数级的增长不一定会导致 CPU 性能的指数级增长。处理器制造商花了很多年来提高时钟频率和指令并行。在新一代的处理器上&#xff0c;单线程程序的执…

curl -L get.rvm.io | bash -s stable报错:连接不上服务器

1、安装cocoa pods时&#xff0c; ERROR: Error installing cocoa: activesupport requires Ruby version > 2.2.2. 这个错误是说&#xff1a;rvm的版本过低&#xff0c;需要升级一下版本 2、升级rvm版本的时候&#xff0c;报标题的错误解决办法如下 将上面的命令行改成&a…

C语言中#define的用法(转)

转自&#xff1a;http://www.dingge.com/main/article.asp?id10 今天整理了一些#define的用法&#xff0c;与大家共享&#xff01; 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了&#xff0c;它代表1000&#xff0c;如果在程序里面写 if(i<MAXTIM…