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的使用与过期实例代码的更多相关文章

  1. jQuery Ajax方法调用 Asp.Net WebService、WebMethod 的详细实例代码

    将以下html存为ws.aspx <%@ Page Language="C#" AutoEventWireup="true" %> <scri ...

  2. asp.net session

    简介编辑 session对象用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是"会话" ...

  3. ASP.NET Session原理及处理方法

    session是怎么存储,提取的 1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服 ...

  4. ASP.NET Session详解(转)

    ASP.NET Session详解 本文章来自:http://blog.163.com/adam601@126/blog/static/22506317200932824210996/ 当用户在 We ...

  5. ASP.NET Session 详解

    阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了 ...

  6. ASP.NET Session的七点认识

    原文:http://kb.cnblogs.com/page/108689/ ASP.NET Session的使用当中我们会遇到很多的问题,那么这里我们来谈下经常出现的一些常用ASP.NET Sessi ...

  7. [ASP.NET] Session的了解

    ASP.NET Session的使用当中我们会遇到很多的问题,那么这里我们来谈下经常出现的一些常用ASP.NET Session的理解: ASP.NET Session的七点认识之一 对于值类型的变量 ...

  8. [转]ASP.NET Session 详解

    来源:http://www.webshu.net/jiaocheng/programme/ASPNET/200606/1381.html 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解 ...

  9. ASP.net session丢失

    ASP.NET Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做 ...

随机推荐

  1. LeetCode242——Valid Anagram

    Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...

  2. Python 訪问Google+ (http)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-28 @author: guaguastd @name: l ...

  3. CoCos2D-X-2.1.5在Eclipse中导入HelloCpp项目搭建

    1.前言 最新正在做一个校园增强现实的应用,虽然不知道cocos2d-x具体到最后能做成什么样子,但还是拿来试试,本文章仅从在Eclipse中采用复制一个新项目副本的方式来导入一个现成的HelloCp ...

  4. 让input变成不可编辑状态的方法

    有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...

  5. singer页左侧滚动的时候右侧跟随高亮显示

    1.封装scroll.vue的listenScroll属性和方法,用来确定监听listview.vue的滚动事件 2.将listview.vue的listenScroll属性默认设置为true; 3. ...

  6. java 多线程2:Thread的实例方法

    Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...

  7. Maven学习之(四)Maven插件创建web项目

    另一种maven web项目的创建. 创建出来的目录是这样的,此时试一下,不能加入到tomcat中去启动. 这里要将项目转化为web项目. 右键->项目 选中下面的动态web项目,然后OK 此时 ...

  8. 【Unity/Kinect】显示Kinect摄像头内容,屏幕显示环境背景及人体投影

    最近学习用Unity做些体感小游戏,使用Kinect的Unity插件,结合一些官方Demo学习(网上资源用Unity做的较少,蛋疼).插件及其Demo就在Unity商店里搜Kinect即可找到,其中下 ...

  9. Spring 事物传播特性

    Spring 事物传播特性 这是Spring官方的定义 一共有7种 摘自源码省略了一部分 public interface TransactionDefinition { int PROPAGATIO ...

  10. MS-SQL 删除数据库所有的表

    godeclare @tbname varchar(250)declare #tb cursor for select name from sysobjects where objectpropert ...