asp.net session的使用与过期实例代码
Session的使用
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function getSessionClick(action) { //这个函数是为了知道哪一个提交按钮被点击
$("#hidlgc").val(""); //清空隐藏值
$("#hidlgc").val(action); //给隐藏控件赋值
}
</script>
</head>
<body>
<form id="form1" method="post" action="MySession.aspx">
<table>
<tr>
<td>账号:</td><td><input type="text" name="txtUid" /></td>`
</tr>
<tr>
<td>密码:</td><td><input type="password" name="txtPwd" /></td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" value="" id="hidlgc" name="hidlgclick" />
<input onclick="getSessionClick('lgclick')" type="submit" value="登录" />
<input type="submit" onclick="getSessionClick('getSession')" value="获取session" />
<input type="submit" onclick="getSessionClick('backLg')" value="退出登录" />
</td>
</tr>
</table>
</form>
</body>
.net代码
protected void Page_Load(object sender, EventArgs e)
{
//把用户id写入session中
if (Request.Form["hidlgclick"] == "lgclick")
{
if(Request.Form["txtUid"].ToString()=="admin"&&Request.Form["txtUid"].ToString()=="admin") //判断用户登录
{
Session["userName"] = Request.Form["txtUid"].ToString(); //把用户id保存到session中
Response.Write(Session["userName"].ToString()+"---点击登录"); //获取session,并写入页面
}
}
//获取Session
if (Request.Form["hidlgclick"] == "getSession")
{
if (Session["userName"] != null)
{
Response.Write(Session["userName"].ToString() + "---点击获取session"); //获取session,并写入页面
}
}
//取消当前会话,相当于注销(退出登录)。
if (Request.Form["hidlgclick"] == "backLg")
{
Session.Abandon();
}
}
那么我们要怎么判断session是否过期了呢
方法二:可以在HttpModule中判断,在HttpModule中注册请求管道的AcquireRequestState
事件(可以拿到session的那个事件)
步奏:
1:新建一个继承IHttpModule接口的类Module
2:让Module类实现接口成员。
3:在Init()方法中对Context进行注册AcquireRequestState事件(在这个事件中可以拿到Session)
4:在方法中写
void context_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Context.Session["userId"] == null)
{
app.Response.Write("<script>alert('没有登录');</script>");
}
}
5:在web.config配置文件中<system.web>节点下添加一个节点
<httpModules>
<add name="demo" type="Module"/> <!--type后面是命名空间.类名-->
</httpModules>
使用这种方法会在每个页面加载的时候都先检查module。
原理是实现IHttpModule接口的类是在执行页面之前执行的。 在page_load()事件执行之前就判 断Session如果不存在就提示。
这种方法效率能高一些,因为如果不存在 session直接就可以处理。后面的一系列事件都可以不 用执行。
方法三:在page类上做点手脚
Page类中有OnInit()这个虚方法。
步奏:
1:创建一个集成Page类的类TestSession
2:在TestSession中重写OnInit()这个方法。
3:在OnInit()方法中判断Session
4:在需要判断session的页面集成TestSession这个类,而不是继承Page类
这种方法比较灵活,在需要判断session的页面中继承TestSession就可以,不需要判断session 的页面直接继承Page就行了
asp.net session的使用与过期实例代码的更多相关文章
- jQuery Ajax方法调用 Asp.Net WebService、WebMethod 的详细实例代码
将以下html存为ws.aspx <%@ Page Language="C#" AutoEventWireup="true" %> <scri ...
- asp.net session
简介编辑 session对象用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是"会话" ...
- ASP.NET Session原理及处理方法
session是怎么存储,提取的 1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服 ...
- ASP.NET Session详解(转)
ASP.NET Session详解 本文章来自:http://blog.163.com/adam601@126/blog/static/22506317200932824210996/ 当用户在 We ...
- ASP.NET Session 详解
阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了 ...
- ASP.NET Session的七点认识
原文:http://kb.cnblogs.com/page/108689/ ASP.NET Session的使用当中我们会遇到很多的问题,那么这里我们来谈下经常出现的一些常用ASP.NET Sessi ...
- [ASP.NET] Session的了解
ASP.NET Session的使用当中我们会遇到很多的问题,那么这里我们来谈下经常出现的一些常用ASP.NET Session的理解: ASP.NET Session的七点认识之一 对于值类型的变量 ...
- [转]ASP.NET Session 详解
来源:http://www.webshu.net/jiaocheng/programme/ASPNET/200606/1381.html 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解 ...
- ASP.net session丢失
ASP.NET Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做 ...
随机推荐
- LeetCode242——Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...
- Python 訪问Google+ (http)
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-28 @author: guaguastd @name: l ...
- CoCos2D-X-2.1.5在Eclipse中导入HelloCpp项目搭建
1.前言 最新正在做一个校园增强现实的应用,虽然不知道cocos2d-x具体到最后能做成什么样子,但还是拿来试试,本文章仅从在Eclipse中采用复制一个新项目副本的方式来导入一个现成的HelloCp ...
- 让input变成不可编辑状态的方法
有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...
- singer页左侧滚动的时候右侧跟随高亮显示
1.封装scroll.vue的listenScroll属性和方法,用来确定监听listview.vue的滚动事件 2.将listview.vue的listenScroll属性默认设置为true; 3. ...
- java 多线程2:Thread的实例方法
Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...
- Maven学习之(四)Maven插件创建web项目
另一种maven web项目的创建. 创建出来的目录是这样的,此时试一下,不能加入到tomcat中去启动. 这里要将项目转化为web项目. 右键->项目 选中下面的动态web项目,然后OK 此时 ...
- 【Unity/Kinect】显示Kinect摄像头内容,屏幕显示环境背景及人体投影
最近学习用Unity做些体感小游戏,使用Kinect的Unity插件,结合一些官方Demo学习(网上资源用Unity做的较少,蛋疼).插件及其Demo就在Unity商店里搜Kinect即可找到,其中下 ...
- Spring 事物传播特性
Spring 事物传播特性 这是Spring官方的定义 一共有7种 摘自源码省略了一部分 public interface TransactionDefinition { int PROPAGATIO ...
- MS-SQL 删除数据库所有的表
godeclare @tbname varchar(250)declare #tb cursor for select name from sysobjects where objectpropert ...