`
Joy.zhang
  • 浏览: 58807 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

JSP与ASP.Net之间的Session值共享

    博客分类:
  • Jsp
阅读更多
本篇介绍思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成JAVA的Session对象,在JAVA端转换时,出现了错误,找遍网上的资料也没能解决,故采用一种替换的方式。

介绍:ASP.NET中登录后,JSP可以用ASP.Net中的Session的值。

这个话题刚开始,宝宝的思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成 Session对象,再强制转化成JAVA的Session对象,在JAVA端转换时,出现了错误,找遍网上的资料也没能解决,故采用一种替换的方式。

替换的方式的思路:

登录的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();

%>

好了,虽然不是很好的方法,但也可以用,也同样保护了用户的一些敏感数据
我将继续考虑使用序列化和反序列化的方式来达到不同的WEB语言之间共享Session对象而不是上面的,共享Session的值。
分享到:
评论

相关推荐

    jsp和asp.net共享session值示例代码

    本文将探讨一种实现ASP.NET与JSP共享Session值的方法,旨在帮助开发者在不同平台间传递和使用Session数据。 首先,我们要理解Session的概念。Session是一种服务器端的存储机制,用于在用户的多个页面请求之间保持...

    asp.net PPT 课件

    ASP.NET内置对象包括Request、Response、Session、Application、Cache等,它们为开发者提供了对Web应用程序运行时环境的访问。例如,Request对象用于获取来自客户端的HTTP请求信息,Response对象则用于向客户端发送...

    jsp.net学生信息管理

    1. **后端服务**:.NET框架的ASP.NET可以作为后台服务器端技术,处理来自JSP的请求,执行数据库操作,如SQL查询,以获取或更新学生信息。 2. **数据访问层**:使用ADO.NET,.NET框架提供了一套完整的数据访问接口,...

    ASP基于WEB的产品管理系统(ASP.NET,JAVA,JSP,VB,ASP)

    综合上述技术,"ASP基于WEB的产品管理系统"可能是一个支持多种编程语言的项目,旨在利用ASP.NET、JAVA、JSP、VB和ASP构建一个用于管理产品信息、库存、订单等业务流程的Web应用。这样的系统通常具备用户认证、权限...

    北大青鸟ASP.NET教学PPT(2)

    与JSP不同,ASP.NET的运行机制基于编译模型。当.aspx文件首次被请求时,ASP.NET引擎会解析页面的后台代码,生成一个页面类,并对其进行编译。第二次请求同一个页面时,不再需要重复编译,而是直接实例化页面类来处理...

    .Net的jsp里添加验证码文件

    .NET框架与JSP(JavaServer Pages)通常是在不同的开发环境中使用的,.NET主要适用于微软的ASP.NET平台,而JSP则是Java生态系统的一部分。然而,在某些情况下,开发者可能需要在JSP应用中集成.NET编写的组件或服务,...

    ASP.Net网络编程实用教程

    - **ASP.NET与ASP对比**:解释了ASP.NET相对于旧版ASP的主要改进和区别。 - **ASP.NET与Java**:比较两种技术在Web开发方面的优缺点。 - **新一代的人机界面**:介绍现代Web应用中使用的用户界面技术。 - **...

    ASP.NET程序设计期末分章练习,涵盖选择填判断等多种题型

    13. 列举 ASP.NET 中的七个内置对象:Request、Response、Server、Session、Application、Context、Cache。 14. URL 的中文意思是指统一资源定位符。 15. DTD 最大的作用就是验证 XML 文件的正确性。 五、框架结构 ...

    jsp.net中的页面数据传递

    与Session不同,它不依赖于特定用户,适用于存储需要跨用户共享的信息。在JSP.NET中,使用`Application["key"] = value;`存储,`Application["key"]`读取。 8. **查询数据库** 如果数据量较大或者需要持久化存储,...

    asp.net内置对象

    **定义**: `Session`对象代表了一个客户端与服务器之间的一次会话,从客户端首次连接到服务器的应用程序开始,直到客户端与服务器断开连接或会话超时为止。 **实例类型**: `Session`对象通常是一个`HttpSession`类...

    北大青鸟ASP.NET教学PPT(3)

    【ASP.NET站点导航控件与母版页】 ASP.NET中的站点导航控件是构建网站结构的重要工具,它们帮助用户在网站中轻松地找到所需信息。本章主要关注站点导航控件和母版页的使用,适合ASP.NET初学者学习。 在回顾部分,...

    北大青鸟ACCP5.0 ASP.NET第三章课件

    【ASP.NET站点导航控件与母版页】 在ASP.NET开发中,站点导航控件和母版页是构建高效、可维护网站的重要工具。在北大青鸟ACCP5.0课程的第三章中,主要讲解了这两部分的内容,旨在帮助学员掌握如何构建清晰的网站...

    基于ASP的售后服务管理系统源码.zip

    但相比于ASP和ASP.NET,JSP在现代Web开发中使用较少。 综上所述,这个基于ASP的售后服务管理系统源码可能包含了一个使用ASP技术的前端页面,以及可能用到的ASP.NET或Java技术实现的后端服务。通过分析和学习这些...

    session与application制作.NETt聊天室

    在ASP.NET中,Session是一个会话级别的存储容器,它允许开发者在用户的不同请求之间保持数据。当用户打开一个网页,服务器为该用户分配一个唯一的SessionID,然后所有在这个会话期间通过Session存储的数据都会与这个...

    北大青鸟 ACCP 5.0 Y2 笔试题 2009-1-11

    1. ASP.NET 与 JSP 的比较: ASP.NET 提供了更便捷、高效的开发环境,能够轻松绑定数据源,并且内置样式支持,使得页面展示更美观。然而,尽管 ASP.NET 控件可以直接显示数据,对于复杂的操作如排序、分页,通常...

    ASP辅导教程 相当不错的!

    6. **ASP.NET的进化**:尽管现在的Web开发趋势更倾向于ASP.NET,它是ASP的升级版,但基础的ASP技术仍然是理解和学习ASP.NET的重要基石。ASP.NET引入了更强大的编程模型,如C#和VB.NET,以及ASP.NET控件和.NET ...

    基于JSP的企业网站系统源码.zip

    ASP.NET是微软的Web开发框架,与JSP类似,用于构建动态网站。这些标签可能是为了表明该源码可以作为不同Web开发技术的学习对比。 【压缩包子文件的文件名称列表】中的"MF00121-JAVA企业网站源码"可能代表项目的内部...

    基于ASP的讯时新闻系统2.8SQL官方原版.zip

    5. ASP的扩展性:虽然ASP本身功能有限,但可以通过引入ASP.NET、JSP或PHP等更现代的技术进行扩展。ASP.NET是ASP的升级版,提供了更丰富的功能和更高的性能,而JSP和PHP则是跨平台的替代方案,分别由Java和PHP语言...

Global site tag (gtag.js) - Google Analytics