思路:

ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成JAVA的Session对象
登录的ASPX文件中,在登录成功后将Session中的变量值保存到数据库中的一张表,关键字使用ASP.NET的Session对象的SessionID,
然后建立一个ASPX文件,取得当前登录用户的SessionID,并使用的ASP.NET重定向语句,转到JSP文件,该URL请求的路径格式为
test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45,如果ASP.NET没有登录或登录不成功,虽然有SessionID的值,但数据库中是没有该SessionID关联的数据可能有的读者发现,不用test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45这样的请求的路径也可以完成,是的,可以用test.jsp?userid=1111这样的方式也传递值,当然userid是由ASP.NET登陆成功后,取得的值,但这样有些用户就可以知道USERID(用户编号)这个敏感数据了。

操作步骤:


建立一张表
table name:

iis_session

field name :

id varchar(26) –存放ASP.NET的SessionID

userid int(4) –存放登录成功后的用户编号
power int(4) –存放用户的权限编号

ASP.NET程序源码片段:

/*登录成功后,可将下列CODEING放在登录的验证ASPX页面中

*/


//记录
Session value
到数据库

private void WriteSession2DB(string sessionID,string sUID,string
sPWR)

//连接数据库代码,读者自行添加
string sessID = sessionID;

string strSQL = “insert into iis_session(id,userid,power)
values(@seionID,@UID,@PWR)”;

//webmod.sqlConn是数据库的连接对象,读者自行替换成自己的数据库连接
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);

sqlCmd.Parameters.Add(“@seionID”,SqlDbType.VarChar).Value
= sessID;
sqlCmd.Parameters.Add(“@UID”,SqlDbType.Int
).Value = Convert.ToInt32(sUID.Trim());
sqlCmd.Parameters.Add(“@PWR”,SqlDbType.Int).Value
= Convert.ToInt32(sPWR.Trim());
sqlCmd.ExecuteNonQuery();

//关闭数据库连接,读者自行添加

/*当用户退出系统,将数据库中对应的SessionID的一行数据删除,可放在退出页面,或Global.asax的Session_END过程中*/


//删除数据库中的Session value


private void RemoveSession4DB()

//连接数据库代码,读者自行添加
string sessID = Session.SessionID;

string strSQL = “delete from iis_session where id=’”+sessID+”‘”;

//webmod.sqlConn是数据库的连接对象,读者自行替换成自己的数据库连接
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);

sqlCmd.ExecuteNonQuery();

//关闭数据库连接,读者自行添加

/*一个重定向到JSP的ASPX页面,在这个ASPX页面的PAGE_LOAD中添加如下代码*/


private void Page_Load(object sender,System.EventArgs e)


string strSessionID = Session.SessionID.Trim();

String strRoot = “http://localhost/test.jsp?aspnetsessionid=”+strSessionID;

Response.Redirect(strRoot,true);


}

JSP程序源码片段:

<%@ page contentType=”text/html;charset=gb2312″%>


/*
自己的数据库连接类,用户可以自己替换

*/

%>
<jsp:useBean id=”db” scope=”page” class=”com.itbaby.bean.dbx.database”/>


String sASPNetSessionID=request.getParameter(“aspnetsessionid”);

//使用了连接池连接数据库,用户可以替换成自己的

String sDBSourceName=”itbaby_dbpool”;

db.dbConnOpen(sDBSourceName);

String sSql=”select userid,power from iis_session where id=’”+sASPNetSessionID+”‘”;


//读者自己替换读出结果集的代码

java.sql.ResultSet rs=db.getRs(sSql);

if(rs.next())

String sUID = rs.getString(1);

String sPower = rs.getString(2);

/*将数据库中对应的SESSIONID的值读出来,并显示,如果ASP.NET的SESSION超时,将没有值*/

out.print(“<H1>ASP.Net
Session Value UserID = “+sUID+”</H1><br><br>“);

out.print(“<H1>ASP.Net
Session Value Power = “+sPower+”</H1><br><br>“);


rs.close();

db.dbConnClose();

%>

ASP.Net与JSP如何共享Session值的更多相关文章

  1. ASP.NET MVC 使用Redis共享Session

    储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...

  2. ASP.NET二级域名站点共享Session状态

    我的前面一篇文章提到了如何在使用了ASP.NET form authentication的二级站点之间共享登陆状态, http://www.cnblogs.com/jzywh/archive/2007 ...

  3. ASP.NET下跨应用共享Session和使用Redis进行Session托管简介

    在之前的博客中,我说到了Session的共享问题,其中说到了Web Farm和Web Garden两种情况下Session的处理.在ASP.NET提供的Session处理方法中,有以下四种模式: 1. ...

  4. ASP.NET下跨应用共享Session和使用Redis进行Session托管

    在之前的博客中,我说到了Session的共享问题,其中说到了Web Farm和Web Garden两种情况下Session的处理.在ASP.NET提供的Session处理方法中,有以下四种模式: 1. ...

  5. [转]asp.net webform 与mvc 共享session

    公司内部系统最早是用.net webform模式开发的,现新项目用.net mvc 开发,现存在的问题就是如何保持原有.net webform的登录状态不变,而在mvc中能够验证用户的登录状态,也就是 ...

  6. asp.net webform 与mvc 共享session

    公司内部系统最早是用.net webform模式开发的,现新项目用.net mvc 开发,现存在的问题就是如何保持原有.net webform的登录状态不变,而在mvc中能够验证用户的登录状态,也就是 ...

  7. .NET二级域名共享Session

    ASP.NET二级域名站点共享Session状态 今天, 我要写的是如何在二级域名站点之间,主站点和二级域名站点之间共享Session. 首先, Session要共享,站点之间SessionID必须要 ...

  8. 使用 Redis 共享 Session 会话

    储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...

  9. android如何与asp.net服务端共享session

    近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需 ...

随机推荐

  1. (转)pt-online-schema-change在线修改表结构

    原文:http://www.ywnds.com/?p=4442 一.背景 MySQL大字段的DDL操作:加减字段.索引.修改字段属性等,在5.1之前都是非常耗时耗力的,特别是会对MySQL服务产生影响 ...

  2. EF 数据库连接约定(Connection String Conventions in Code First)

    一个典型的EF应用大多数情况下是一个DbContext的派生类(derived class)来控制,通常可以使用该派生类调用DbContext的构造函数,来控制以下的东西: (1).上下文如何连接到数 ...

  3. Java的符号扩展与零扩展

    byte b = -127; System.out.println(b); // -127 int b1 = b & 0xff; System.out.println(b1); // 129 ...

  4. manjaro i3 sound soft

    sudo pacman -S pavucontrol sudo pacman -S pulseaudio # 为了启动 fcitx 输入法…… #exec --no-startup-id LANG=& ...

  5. centos6.5 + 7 静态ip配置

    2017/09/19日更, centos6.5 可用 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static D ...

  6. Rails中实现批量删除

    在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action.批量删除的效果图如下:

  7. JavaScript初级面试题

    前面几题是会很基础,越下越有深度. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型: ...

  8. Node.js之Express四

    Express提供的大部分功能是通过中间件函数完成的,这些中间件函数在Node.js收到请求的时点和发送响应的时点之间执行.Express的Connect模块提供了中间件框架,可以方便的在全局或路径级 ...

  9. hadoop2.x学习笔记(一):YARN

    一.YARN产生的背景 MapReduce1.x存在的问题:单点故障&节点压力大不易扩展. 资源利用率&成本 催生了YARN的诞生  不同计算框架可以共享同一个HDFS集群上的数据,享 ...

  10. 网页3D效果库Three.js学习[二]-了解照相机

    camera 上篇大致了解了three.js ,并可以创建一个简单的可动的立方体.下来我们着重了解下camera (照相机),照相机其实就是视角,就像你的眼睛.Three.js有两种不同的相机模式:直 ...