马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。asp.net|js|session先容:ASP.NET中登录后,JSP能够用ASP.Net中的Session的值
这个话题刚入手下手,宝宝(itbaby.jss.cn)的思绪是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(用户编号)这个敏感数据了.
创建一张表
tablename:
iis_session
fieldname:
idvarchar(26)--寄存ASP.NET的SessionID
useridint(4)--寄存登录乐成后的用户编号
powerint(4)--寄存用户的权限编号
ASP.NET程序源码片断:
/*登录乐成后,可将以下CODEING放在登录的考证ASPX页面中*/
//纪录Sessionvalue到数据库
privatevoidWriteSession2DB(stringsessionID,stringsUID,stringsPWR)
{
//毗连数据库代码,读者自行增加
stringsessID=sessionID;
stringstrSQL="insertintoiis_session(id,userid,power)values(@seionID,@UID,@PWR)";
//webmod.sqlConn是数据库的毗连对象,读者自行交换成本人的数据库毗连
SqlCommandsqlCmd=newSqlCommand(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过程当中*/
//删除数据库中的Sessionvalue
privatevoidRemoveSession4DB()
{
//毗连数据库代码,读者自行增加
stringsessID=Session.SessionID;
stringstrSQL="deletefromiis_sessionwhereid="+sessID+"";
//webmod.sqlConn是数据库的毗连对象,读者自行交换成本人的数据库毗连
SqlCommandsqlCmd=newSqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//封闭数据库毗连,读者自行增加
}
/*一个重定向到JSP的ASPX页面,在这个ASPX页面的PAGE_LOAD中增加以下代码*/
privatevoidPage_Load(objectsender,System.EventArgse)
{
stringstrSessionID=Session.SessionID.Trim();
StringstrRoot="http://localhost/test.jsp?aspnetsessionid="+strSessionID;
Response.Redirect(strRoot,true);
}
JSP程序源码片断:
<%@pagecontentType="text/html;charset=gb2312"%>
<%
/*
本人的数据库毗连类,用户能够本人交换
*/
%>
<jsp:useBeanid="db"scope="page"class="com.itbaby.bean.dbx.database"/>
<%
StringsASPNetSessionID=request.getParameter("aspnetsessionid");
//利用了毗连池毗连数据库,用户能够交换成本人的
StringsDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
StringsSql="selectuserid,powerfromiis_sessionwhereid="+sASPNetSessionID+"";
//读者本人交换读出了局集的代码
java.sql.ResultSetrs=db.getRs(sSql);
if(rs.next())
{
StringsUID=rs.getString(1);
StringsPower=rs.getString(2);
/*将数据库中对应的SESSIONID的值读出来,并显现,假如ASP.NET的SESSION超时,将没有值*/
out.print("<H1>ASP.NetSessionValueUserID="+sUID+"</H1><br><br>");
out.print("<H1>ASP.NetSessionValuePower="+sPower+"</H1><br><br>");
}
rs.close();
db.dbConnClose();
%>
好了,固然不是很好的办法,但也能够用,也一样回护了用户的一些敏感数据
我将持续思索利用序列化和反序列化的体例来到达分歧的WEB言语之间共享Session对象而不是下面的,共享Session的值
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |