思路:

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. POJ 1045

    #include<iostream> #include<cmath> #include<iomanip> using namespace std; int main ...

  2. (转)修改及查看mysql数据库的字符集

    原文:http://www.cnblogs.com/donqiang/articles/2057972.html Liunx下修改MySQL字符集:1.查找MySQL的cnf文件的位置find / - ...

  3. SpringMVC3.2+Spring3.2+Mybatis3.1(SSM~Demo)

    SpringMVC+Spring+Mybatis 框架搭建 整个Demo的视图结构: JAR: 下载地址:http://download.csdn.net/detail/li1669852599/85 ...

  4. wordpress常用标记

    博客地址:bloginfo('url'); 博客名称:bloginfo("name"); 博客描述:bloginfo("decription"); 文章内容: ...

  5. 在 mac 上利用 homebrew 安装软件

    在mac经常需要安装一些软件,你可以通过app store下载,或者可以通过浏览袭搜索下载.这里介绍通过homebrew安装一些软件,它会自动为你下载一些软件的相关依赖,免去安装的烦恼. 首先我们需要 ...

  6. java.text包

    JDK在java.text包中,提供了对显示对象格式化的接口.类及异常处理,这里我们只来谈一谈text包中的format类及其子类.其中,最重要的是两个差不多互为“逆运算”的方法format(将某对象 ...

  7. Java指定保留小数位数的方法

    package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...

  8. Java简单的RPC实现(一)

    RPC使用java最基本的,传输层使用Socket,序列化使用Serializable,java 动态代理模式,但是未实现消息注册等相关信息 大道至简 server端 package com.rpc. ...

  9. [经典]网关,DNS,DHCP三者关系详解

    什么叫网关的精解 Sample Text转自(协议分析论坛)计算机主机网关的作用是什么?假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的 ...

  10. Firebird shadow

    火鸟数据库的shadow,即实时镜像. 主库发生变化,shadow也跟随变化,防止任何意外造成主库损坏无法使用,当然shadow可以有多个. 1.创建shadow的准备:修改Firebird.conf ...