session的用法

定义:保存在服务器内存的数据,sesson 只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上,session在默认情况下20分钟就过期,在页面之中最好不要过多使用,因为这会加重服务器的压力和带宽

增与修:

Session.Add("session名称", 变量名);

Session.Add("userId",userId);

Session.Add("test", DateTime.Now);

Session["test"] = DateTime.Now;

      添加和修改Session的方法是一样的,当指定的Session标识不存在时,系统会添加。当存在时系统会更新。

在一般处理程序中需要加using

1、引入 命名空间:

using System.Web.SessionState;

 public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法
{ public void ProcessRequest(HttpContext context)
{       //...       //这样你就可以如下 操作了 if(context.Session["userAccount"] != null)       {         string account = context.Session["userAccount"].ToString();       }       //...继续下面的代码     }   }

  

删:

Session.Remove("test");  //删除指定的

不要使用Session["test"] = null; 这样只是将值设置为NULL!

移除所有Session项

Session.Clear(); 或 Session.RemoveAll();

终止当前会话状态

Session.Abandon();

当前Session项数量

Session.Count

当前SessionId

Session.SessionID

Session过期时间

在web.config中设置 <sessionState mode="InProc" timeout="20"></sessionState> 分钟值。(未填写时默认是20分钟过期)

如果需要防止过期那就把时间加长并且不允许缓冲

 如何让网页不缓冲
Response.Expires = 0
Response.ExpiresAbsolute = Now() - 1
Response.Addheader “pragma”,”no-cache”
Response.Addheader “cache-control”,”private”
Response.CacheControl = “no-cache

cookie

定义: 保存在客户端中的数据,存储最大4kb的数据。cookie的名/值中的值不允许包含分号、逗号和空白符。认的有效期很短暂,它只能持续在Web浏览器的会话期间,一旦用户关闭了浏览器,cookie保存的数据就丢失了。如果想延长cookie的有效期,可以通过设置max-age属性.

语法:

HttpCookie(String)  //创建并命名Cookie

  HttpCookie(String,String)  //创建命名Cookie并为其赋值

属性:

Domain  //获取或设置Cookie的作用域   接受或返回一个String值

  Expires  //获取或设置Cookie的有效时间  接受或返回一个DateTime值

  HasKeys  //获取一个值,通过该值指示Cookie是否含有子键,返回一个bool值

  HttpOnly //获取或设置一个值,该值指定Cookie是否可以通过客户端脚本访问,接受或返回一个bool值

  Name   //获取或设置Cookie的名称,该值接受或返回一个String值

  Path   //获取或设置该Cookie作用路径,接受或返回一个String值

  Secure  //获取或设置Cookie是否安全传输(即仅通过Https传送),接受或返回一个bool值

  Value    //获取或设置单个Cookie的值,接受或返回一个String

  Values  //获取单个Cookie所包含的键值对的集合,返回一个

C#写入一个Cookie,在前台通过jQuery读取。后端代码

增加 :

 public ActionResult Index()
{
HttpCookie hc = new HttpCookie("userName","admin");
hc.Path = "/";
hc.Expires = DateTime.Now.AddDays(7);
Response.SetCookie(hc);
return View();
} 注意:有的情况下会出现乱码!

存cookie,进行编码:

cookie.Value = HttpUtility.UrlEncode("上海");

取cookie时候,进行解码:
cookieValue = HttpUtility.UrlDecode(cookie.Value);

  添加cookies一般不会有人出错的。。。记得添加Expires就行

修改:

       HttpCookie cookies = Request.Cookies["Porschev"];
cookies["name"] = "wilson Z";
//加上下面一句
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1);

 删除:

删除部分:

            HttpCookie cookies = new HttpCookie("Porschev");
cookies.Expires = DateTime.Now.AddDays(-);
Response.Cookies.Add(cookies); 删除全部: foreach (string cookiename in Request.Cookies.AllKeys)
{
HttpCookie cookies = Request.Cookies[cookiename];
if (cookies != null)
{
cookies.Expires = DateTime.Today.AddDays(-);
Response.Cookies.Add(cookies);
Request.Cookies.Remove(cookiename);
}
}
}

viewstate

在asp时代, 大家都知道一个html控件的值,比如input 控件值,当我们把表单提交到服务器后, 页面再刷新回来的时候, input里面的数据已经被清空. 这是因为web的无状态性导致的, 服务端每次把html输出到客户端后就不再于客户端有联系.

asp.net巧妙的改变了这一点. 当我们在写一个asp.net表单时, 一旦标明了 form runat=server ,那么,asp.net就会自动在输出时给页面添加一个隐藏域

<input type="hidden" name="__VIEWSTATE" value="">
viewstate用来保存状态,包括页面本身, 那么,这里的viewstate就属于页面本身的状态.viewstate则永远不会过期,使用viewstate会增加页面html的输出量,占用更都的带宽,这一点是需要我们慎重考虑的. 另外, 由于所有的viewstate都是存储在一个隐藏域里面,用户可以很容易的通过查看源码来看到这个经过base64编码的值.然后再经过转换就可以获取你存储其中的对象和变量值.

session、cookie、viewstate的更多相关文章

  1. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  2. JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session

    EL表达式语言 EL这是Expression Language.的目的是为了简化JSP句法.来看几个例子来清除. ${test} 它会被翻译成<%=test%> ${test.name} ...

  3. localstrage、cookie、session等跨域和跨页面监听更新问题

    localstrage.cookie.session等跨域和跨页面监听更新问题

  4. 【python】-- Django 分页 、cookie、Session、CSRF

    Django  分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...

  5. iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent

    公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...

  6. (11)Web程序保存状态的几种方式,Application,Session,Cookie,ViewState

    WEb程序保存状态的方式有这样几种: 1.Application:保存在Application中的数据是全局有效的:Application里面存放的应该是访问多修      改较少并且是全局至少大部分 ...

  7. Python3+Selenium2完整的自动化测试实现之旅(四):Selenium-webdriver操作浏览器、Cookie、鼠标键盘、警示框、设置等待时间、多窗口切换

    本篇学习总结webdriver模块操作浏览器.Cookie.鼠标键盘.警示框.设置等待时间.多窗口切换等方法的使用 1    浏览器控制 Selenium-webdriverAPI提供了对页面元素定位 ...

  8. javascript常用函数封装——运动、cookie、ajax、获取行内样式兼容写法、拖拽

    运动.cookie.ajax.获取行内样式兼容写法.拖拽封装大合集. //url,data,type,timeout,success,error function ajax(options){ //- ...

  9. [Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

    Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间 ...

  10. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

随机推荐

  1. 有关RDD的基础学习1

    1.spark rdd为什么不能嵌套?    譬如 val rdd1=sc.parallel(range(1,100))    val rdd2=sc.parallel(range(1,100))   ...

  2. react.js 引用 NavBar 报错svg-spite-loader

    Navbar   iconName="false"  配置 改为  iconName={this.props.bool}

  3. QML Image Element

    QML Image Element The Image element displays an image in a declarative user interface More... Image元 ...

  4. linux下多线程之pthread_detach(pthread_self())

    写个碰到的问题,记录下自己的技术之路点滴pthread_detach(pthread_self())linux线程执行和windows不同,pthread有两种状态joinable状态和unjoina ...

  5. 获取 config文件的节点值

    System.Configuration.ConfigurationManager.AppSettings["followTemplate"];

  6. git服务器-------》用户免密git操作

    找到/etc/ssh/sshd_config文件 开启 RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile      .ss ...

  7. SQL学习笔记之B+树

    0x00 概述 要描述清楚B+树,得先了解二叉查找数,平衡二叉树. 0x01 二叉查找树 任意节点,它的左子树如果不为空,那么左子树上所有节点的值都小于根节点的值:任意节点,他的右子树如果不为空,那么 ...

  8. 关于Linq的对List<实体>去掉重复ID的一个小例子!

    注意 下面的代码只要ID相同(即使其他的不相同)都会过滤掉,简单来讲就是过滤掉ID相同的实体,如果ID相同,其他属性取第一个的值 List<Abc> list = new List< ...

  9. 在MySQL中使用explain查询SQL的执行计划

    1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...

  10. goland 使用简单配置-不断更新

    1.格式化代码 Ctrl+Alt+L  格式化代码 2.快捷键可能被占用 用tools-file watchers file->setting->tools->file watche ...