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就行了

最新文章

  1. 微信JSApi支付~微信支付代理模式的实现(原创)
  2. C# 在异步中使用HttpWebRequest出现的“正在终止线程”错误的解决方案
  3. 回文字算法(java版本)
  4. 【BZOJ2038】【2009国家集训队】小Z的袜子(hose) 分块+莫队
  5. lucene字典实现原理——FST
  6. 面试问到的Spring
  7. SQL Server高级内容之表表达式和复习
  8. LINQ实战
  9. JQuery 判断IPad、IPhone、Android是横屏还是竖屏(Window.Orientation实现)
  10. iOS 使用NJKWebViewProgress做webview进度条
  11. 小小换行符乱谈(文本文件vs二进制文件)
  12. login/logout切换
  13. Apache Flume 1.7.0 各个模块简介
  14. Springboot 学习笔记 ①
  15. 3. mysql性能分析
  16. 日志框架学习(log4j2+slf4j)
  17. (转)手机的AP和BP是什么?
  18. POJ 2336
  19. 铁乐学python_day25_序列化模块
  20. clog,cout,cerr 输出机制

热门文章

  1. Oracle PLSQL Demo - 11.定义包头[Define PACKAGE]
  2. c++11特性与cocos2d-x 3.0之std::bind与std::function
  3. .net 中异步SOCKET发送数据时碰到的内存问题
  4. 如何做一个像btbook.net这样的搜片神器?
  5. dubbo源码解析-zookeeper创建节点
  6. C#类的修饰符
  7. 风雪之隅(Laruence PHP开发组成员, Zend兼职顾问, Yaf, Yar, Yac, Opcache等项目作者、维护者.)
  8. 【C#】List&lt;T&gt;对象的深复制
  9. 启动haoop并运行wordcount
  10. C语言 &#183; 第二大整数