一、session介绍:

1. session和cookie的区别在于,cookie是把信息保存在用户本地的浏览器中,而session是把信息保存在服务器端的内存中,

2. 浏览器向服务器发送一个类键值对的数据,同时还会生成一个sessionID,这样才会保证数据的正确性。

3 . session的默认有效期为20分钟

4. session的主要作用是用来登录,登录时需要校验用户输入的用户名和密码都正确,如果正确,那么会将用户的信息存储到session中,在需要登录以后才能访问的页面中校验session,如果session有值,说明用户登录了,继续访问页面,如果没有值,说明用户没有登录,那么跳转到登录页面,让用户重新进行登录,防止用户跨过登陆直接进入主页面

5. asp后台使用session时可以直接使用,因为该程序继承了session的接口,但是其余的需要继承session

6. 创建和写入session:

  a. 创建session对象

    

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace CZBK.ItcastProject.WebApp._2015_5_31
{
public partial class SessionDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string name=Request.Form["txtName"];
//创建session
Session["userName"] = name;
// Session.Timeout = 30;
Response.Redirect("Test.aspx");
} }
}
}

    //取出session的值

    

    protected bool CheckValidateCode()
{
bool isSucess = false;
if (Session["validateCode"] != null)//在使用Session时一定要校验是否为空,因为如果为null的时候,执行到后面的.tostring()代码会出异常
{
string txtCode = Request.Form["txtCode"];//获取用户输入的验证码。
//获取session值
string sysCode = Session["validateCode"].ToString();
//equals方法需要两个参数,第一个是对比的字符串,第二个如果是字母表示不计大小写
if (sysCode.Equals(txtCode, StringComparison.InvariantCultureIgnoreCase))
{
isSucess = true;
Session["validateCode"] = null;
}
}
return isSucess;
}

清除session:  Session["validateCode"] = null;

为session设置有效时间:

  Session.Timeout = 30;

  b . aspx文件使用session,直接 context.Session["名称"] = code; 如 context.Session["validateCode"] = code;

  c . ashx文件以及一些其余的文件使用session,必须实现.IRequiresSessionState 接口,具体代码如下:

  

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace CZBK.ItcastProject.WebApp._2015_5_31
{
/// <summary>
/// ValidateImageCode 的摘要说明
/// </summary> //使用session创建对象,必须引入以下System.Web.SessionState.IRequiresSessionState
public class ValidateImageCode : IHttpHandler,System.Web.SessionState.IRequiresSessionState
{
//在一般处理程序中如果要使用Session必须实现.IRequiresSessionState接口.
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
Common.ValidateCode validateCode = new Common.ValidateCode();
//创建一个4位数字的图形验证码
string code=validateCode.CreateValidateCode();
//创建session对象
context.Session["validateCode"] = code;
validateCode.CreateValidateGraphic(code,context);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

二、使用session遇到的问题。

使用session如果项目比较大,可能会面临着创建一个集群,就是指把项目部署在不同的多个机器上,这样用户存储session时可能存储在A机器中,但是校验的时候就可能会访问的是B机器,这样,session的值就是一个null值。所以,就需要用到一个分布式缓存,就是指把所有的session值统一放置在一个服务器上,比如用到memcache,或许Redis。

分布式缓存访问我的此博客:https://www.cnblogs.com/wangjinya/p/10706739.html

session常用操作的更多相关文章

  1. java:Cookie(常用操作),Cookie和Session免登录实例

     1.常用操作: package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletEx ...

  2. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  3. MongoDB副本集的常用操作及原理

    本文是对MongoDB副本集常用操作的一个汇总,同时也穿插着介绍了操作背后的原理及注意点. 结合之前的文章:MongoDB副本集的搭建,大家可以在较短的时间内熟悉MongoDB的搭建和管理. 下面的操 ...

  4. 【WebDriver】WebDriver 常用操作

    WebDriver 常用操作 1 浏览器操作 2 窗口和弹框操作 3 cookies 操作 4 简单对象的定位 5 页面元素操作 6 鼠标事件 7 键盘事件 1 浏览器操作 #属性: driver.c ...

  5. fiddler常用操作之断点

    fiddler常用操作断点 标签(空格分隔): fiddler断点 一.断点: 1.为什么要打断点呢? 比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于1 ...

  6. JavaWeb request对象常用操作

      JavaWeb request对象常用操作 CreateTime--2018年6月1日16点47分 Author:Marydon 一.前提 import javax.servlet.http.Ht ...

  7. java集成开发环境常用操作集

    1.简单搭建maven集成开发环境 一.     Jetty安装 下载地址(包涵windows和Linux各版本,Jetty9需要JDK7):http://download.eclipse.org/j ...

  8. linux学习(2):linux服务器常用操作和命令

    linux服务器常用操作和命令 目录 1. 什么是linux服务器load average?2. 如何查看linux服务器负载3. 服务器负载高怎么办?4. 如何查看服务器内存使用率?5. 如何查看单 ...

  9. Django中cookie和session的操作

    一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...

随机推荐

  1. intelliJ IDEA之使用svn或git管理代码

    intelliJ IDEA之使用svn管理代码 1.VCS—>import into Version Control—>Share Project(Subversion) 2.点击+    ...

  2. 2019/3/25 wen 包,对象的行为

  3. 容器学习笔记之CentOS7安装Docker(安装指定版本的Docker,加速,卸载)

    0x00 概述 Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过 ...

  4. php stomp.dll 下载地址

    http://pecl.php.net/package/stomp/1.0.9/windows 查看方法,打开phpinfo

  5. Vue小案例 之 商品管理------为之前的页面修改样式

    最终修改的页面效果: 修改的css: <style> #container{ margin: auto; text-align: center; width: 1000px; border ...

  6. Spring Boot 整合Mybatis非starter时,mapper一直无法注入解决

    本来呢,直接使用mybatis-spring-boot-starter还是挺好的,但是我们系统比较复杂,有多个数据源,其中一个平台自己的数据源,另外一些是动态配置出来的,两者完全没有关系.所以直接使用 ...

  7. 14: element ui 使用

    1.1 element ui 基本使用 参考网址: http://element.eleme.io/#/zh-CN/component/button 1.初始一个vue项目并安装element ui ...

  8. bzoj 2844 albus就是要第一个出场 - 线性基

    题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 给定集合$S$,现在将任意$A\subseteq S$中的元素求异或和,然后存入一个数组中(下标从1开始),然后从小到大排 ...

  9. wait()和notify()的理解与使用

    void notify() Wakes up a single thread that is waiting on this object’s monitor. 译:唤醒在此对象监视器上等待的单个线程 ...

  10. IDEA安装与破解

    今天下午偶然在知乎上看到IDEA和eclipse的软件分析,所以装了一个IDEA,不过肯定是破解,不会购买激活码 IDEA官网:http://www.jetbrains.com/idea/ 安装教程: ...