Einführung: Nach der Anmeldung bei ASP.NET kann JSP den Wert der Sitzung in ASP.Net verwenden. Dieses Thema hat gerade erst begonnen. Die Idee von Baby (itbaby.jss.cn) ist, dass die Sitzung in serialisiert wird ASP.NET wird als Binärdaten in der Datenbank gespeichert, dann liest JSP die Binärdaten in ein
Sitzungsobjekt
und konvertiert sie dann zwangsweise in ein JAVA-Sitzungsobjekt. Bei der Konvertierung auf der JAVA-Seite tritt ein Fehler auf Die Suche nach Informationen im Internet konnte das Problem nicht lösen. Daher wurde eine Methodezum Ersetzen
verwendet:
Speichern Sie den Variablenwert in der angemeldeten ASPX-Datei Sitzung zu einer Tabelle in der Datenbank. Das Schlüsselwort verwendet die SessionID des Session-Objekts von ASP.NET, erstellt dann eine ASPX-Datei,
ruft
die SessionID des aktuell angemeldeten Benutzers ab und verwendet die ASP.NET-Umleitungsanweisung, um zu dieser zu gelangen Die JSP-Datei hat das Pfadformat test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45.Obwohl ein Wert für SessionID vorhanden ist, sind keine Daten damit verknüpft
Einige Leser stellen möglicherweise fest, dass die Anforderung ohne Verwendung des Anforderungspfads abgeschlossen werden kann, z. B. test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Natürlich kann
auch
die Benutzer-ID
verwendet werden ist der Wert, der nach der erfolgreichen Anmeldung bei ASP.NET erhalten wird. Auf diese Weise können einige Benutzer jedoch die vertraulichen Daten von USERID (Benutzernummer) kennen.
Erstellen Sie eine Tabelle
Tabellenname:
iis_session
Feldname:
id varchar(26) --storage die SessionID von ASP.NET
userid int(4) – speichert die Benutzernummer nach erfolgreicher Anmeldung
power int(4) --storage die Berechtigungsnummer des Benutzers
Quellcodefragment des ASP.NET-Programms:
/*Nach erfolgreicher Anmeldung kann der folgende CODIERUNG auf der ASPX-Seite zur Anmeldeüberprüfung platziert werden*/
//Sitzungswert in der Datenbank aufzeichnen
private void WriteSession2DB(string sessionID,string sUID,string sPWR)
{
// Stellen Sie eine Verbindung zum Datenbankcode her, der Leser kann ihn selbst hinzufügen
string sessID = sessionID;
string strSQL = "insert into iis_session(id,userid,power) Values(@seionID,@UID,@PWR)";
//webmod.sqlConn ist das Verbindungsobjekt der Datenbank, Leser können es durch ihre eigene Datenbankverbindung ersetzen
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();
//Datenbankverbindung schließen, Leser können selbst hinzufügen
}
/*Wenn der Benutzer das System verlässt, löschen Sie eine Datenzeile entsprechend der SessionID in der Datenbank, die auf der Exit-Seite oder im Session_END-Prozess von Global.asax platziert werden kann*/
//Löschen Sie den Session-Wert in der Datenbank
private void RemoveSession4DB()
{
// Stellen Sie eine Verbindung zum Datenbankcode her, der Leser kann ihn selbst hinzufügen
string sessID = Session.SessionID;
string strSQL = "delete from iis_session where id='"+sessID+"'";
//webmod.sqlConn ist das Verbindungsobjekt der Datenbank, und Leser können es durch ihre eigene Datenbankverbindung ersetzen.
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//Schließen Sie die Datenbankverbindung und die Leser können sie selbst hinzufügen
}
/*Eine ASPX-Seite, die zu JSP umgeleitet wurde, fügen Sie den folgenden Code in PAGE_LOAD dieser ASPX-Seite hinzu*/
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);
}
Quellcode-Snippet des JSP-Programms:
<%@ page contentType="text/html;charset=gb2312"%>
<%
/*
Eigene Datenbankverbindungsklasse, Benutzer können diese selbst ersetzen
*/
%>
<jsp:useBean id="db" Scope="page" class="com.itbaby.bean.dbx.database"/>
<%
String sASPNetSessionID=request.getParameter("aspnetsessionid");
//Eine Verbindungspoolverbindung ist Verwendete Datenbank, Benutzer können sie durch ihre eigene ersetzen
String sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session where id='"+sASPNetSessionID+"'";
//Leser können den Code zum Lesen der Ergebnismenge selbst ersetzen
java.sql.ResultSet rs=db.getRs(sSql);
if(rs.next())
{
String sUID = rs.getString(1);
String sPower = rs.getString(2);
/*Lesen Sie den entsprechenden SESSIONID-Wert in der Datenbank und zeigen Sie ihn an. Wenn die ASP.NET-SESSION abläuft, gibt es keinen Wert*/.
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();
%>
Okay, es ist zwar keine sehr gute Methode, aber sie schützt auch einige sensible Daten des Benutzers. Ich werde weiterhin über die Verwendung von Serialisierung und Deserialisierung nachdenken . Möglichkeiten zur gemeinsamen Nutzung von Sitzungsobjekten zwischen verschiedenen WEB-Sprachen anstelle der oben genannten, der gemeinsamen Nutzung von Sitzungswerten