zoukankan      html  css  js  c++  java
  • Session的简单使用

    1.Session的简单介绍

    Session是服务器端存储数据的一种方式,为了解决HTTP的无状态性,Session与Cookie不同的是,Cookie是存储在客户端的,而Session存储在服务器端,所以Session是一种相对比较安全的信息存储方式,同时Session的使用需要Cookie的支持,因为Session对于用户来说并不是共享的,每一个用户的Session都有系统默认的提供一个SessionID,每次用户访问站点的时候,都会将Session ID添加到响应报文头中,发送给服务器,然后由服务器根据SessionID找到具体的存储区域获取到指定的数值。此外Application也是数据存储传递的一种方式,它和Session相比最重要的一点区别就是它里面存储的数据,对于所有的访问站点的用户来说是共享的,所以,一般当需要统计站点的访问的人数的时候,可以将信心存储在Application当中。

    因为Session是存储在服务器中,可能会占用服务器大量的内存,所以Session是有一个过期时间的,默认的过期时间是20分钟,可以通过设置Session的属性TimeOut设置Session的过期时间,类似于cookie的Empires属性设置过期时间,同时可以使用Web.config文件中的节点属性timeout进行设置。

    2.Session的使用优劣

    优点:

    1.Session可以解决HTTP的无状态性,实现信息的保持和在页面中的传递,实现页面信息的共享。

    2.相对于Cookie而言,Session存在于服务器端,保证数据的安全性。

    3.Session是不共享的,独立的保存每一个用户的数据,对于用户来说是安全的。

    4.使用简单,可以很轻松的实现对各种类型数据的存储。

    缺点:

    1.由于数据是存储在服务器端,所以当用户的访问量比较大的时候,占用的内存将比较大,成为瓶颈(主要针对的是InProc模式)。

    2.对于StateServer和SqlServer模式来说,当数据的传递的时候,用到的类必须进行可序列化处理,因为这两种模式对于数据的存储和读取使用的是序列化和反序列化,但是序列化和反序列化是相对比较慢的,影响反应速度。

    3.Session的使用

    添加Session:

    Session["Name"]="小明";

    设置过期时间:

    Session.TimeOut="10";//是以分钟为单位

    除去Session:

    Session["Name"]=null;//等待GC回收

    使用方法去除Session:

    Session.Clear();

    Session.RemoveAll();

    Session.Remove(“Name”);

    4.Session的模式设置

    1.默认的模式:InProc,这是内存模式,也就是存在于当前服务器的内存中

    <System.Web>
         <sessionState mode="InProc" timeout="10">
         </sessionState>
    </System.Web>

    这种方式的优点是显而易见的,存储在服务器的内存中,跟应用程序在同一程序域,也就是在IIS中,访问速度快,但是当访问量过大的时候,这将给服务器带来压力,同时当应用程序重新启动的时候(IIS重启),session将会全部丢失。所以不适合在大访问量并且服务器容易挂掉的场合。

    2.StateSession模式,状态服务器模式

    <System.Web>
        <sessionState mode="StateServer"  stateConnectionString="tcpip="127.0.0.1:42424" timeout="30"> 
        </sessionState>
    </System.Web>


    这种模式还是比较常用的,需设置stateConnectionString中的tcpip,设置对应的状态服务器的ip地址和端口号,默认的端口号是42424,可以通过修改配置表修改端口。

    需要启动State Server服务,具体的方式使用右键点击“我的电脑”,然后选择管理-服务,找到ASP.NET State Server,将服务开启。然后就可以正常使用了

    StateServer服务器和IIS是不同的服务器,所以即使IIS重新启动,数据都不会丢失,同时StateServer可以通过设置tcpip,将其部署到某台服务器中。

    3.SqlServer模式

    需要设置mode=“SqlServer”,同时需要对Sql Server数据库进行配置,具体流程略,配置结束后,会在Sql Server数据库中生成两张表格,用来存储SessionID等信息

    这种模式实现的功能和StateServer模式近似,但是这种模式对于数据的存储是持久化的存储,可以使用其他的应用进程进行访问,这是一种最安全可靠的Session存储方式,对于数据的传输,同样需要序列化和反序列化,所以在存取性能是很慢,同时因为需要用到Sql Server数据库,所以必须保证Sql Server的正常运行。

    4.Custom模式

    这种模式是用户自定义模式,相比于Sql Server模式生成两个默认的表,你可以使用自定义模式,在已有的表中添加,或者自定义表添加。可以存储在其他类型的数据库中,还可以自己手动的创建Session Id代替系统默认的创建,通过实现系统接口ISessionIDManager接口

    5.Off模式

    禁止使用Session,这是应用程序级别的禁止,在整个应用程序中将被禁止使用Session

    同时可以使用页面级别的禁止,这种方式是比较常用的也比较的灵活。

    <%@ Page EnableSessionState="false"%>
    
  • 相关阅读:
    LeetCode 264. Ugly Number II
    LeetCode 231. Power of Two
    LeetCode 263. Ugly Number
    LeetCode 136. Single Number
    LeetCode 69. Sqrt(x)
    LeetCode 66. Plus One
    LeetCode 70. Climbing Stairs
    LeetCode 628. Maximum Product of Three Numbers
    Leetcode 13. Roman to Integer
    大二暑假周进度报告03
  • 原文地址:https://www.cnblogs.com/XZhao/p/6340719.html
Copyright © 2011-2022 走看看