思路:

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. 【hdu6035】 Colorful Tree dfs序

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6035 题目大意:给你一棵树,树上每个节点都有一个颜色. 现在定义两点间的距离为两点最短路径上颜色集合 ...

  2. WebDriverAPI(5)

    将当前浏览器截屏 测试网址 http://www.baidu.com Java语言版本实例 @Test public void captureScreenInCurrentWindows() { dr ...

  3. JSON 字符串转换为JavaScript 对象.JSON.parse()和JSON.stringify()

    使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象: var text = '{ "sites" : [' + '{ &qu ...

  4. 【数组】Minimum Size Subarray Sum

    题目: Given an array of n positive integers and a positive integer s, find the minimal length of a sub ...

  5. python如何帮我在投资中获取更高收益

    搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块).或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣 ...

  6. zk使用原理

    ZooKeeper的基本原理 ZNode的基本概念 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode.每个ZNode都可以通过其路径唯一标识 ...

  7. mysql 导出数据到csv文件的命令

    1.导出本地数据库数据到本地文件 mysql -A service_db -h your_host -utest -ptest mysql> select * from t_apps where ...

  8. Visual Studio最常用的快捷键

    Ctrl + J:快捷提示,强迫智能感知: Ctrl + 空格键:使用 IntelliSense(智能感知)自动完成: Ctrl + Z:撤销,回退键: Ctrl + Shift + 空格:强迫显示参 ...

  9. mysql 中文乱码 解决

    数据库安装设置编码: mysql默认的字符编码是latin1,而我用的是utf-8,存入数据库就变成了?????这样的乱码,解决方法:   修改安装路径下的my.ini文件,default-chara ...

  10. Java中反射和Unsafe破坏单例设计模式

    有如下单例模式设计代码: class Singleton { private String info = "HELLO SHIT"; private static Singleto ...