Introduction : Après vous être connecté à ASP.NET, JSP peut utiliser la valeur de la session dans ASP.Net. Ce sujet vient de commencer. L'idée de Baby (itbaby.jss.cn) est que la session sérialisée est dans. ASP.NET est enregistré dans la base de données sous forme de données binaires. Ensuite, JSP lit les données binaires dans la base de données et les désérialise en un
objet
Session , puis les convertit de force en un objet Session JAVA. Lors de la conversion côté JAVA, une erreur se produit. s'est produit et la recherche d'informations sur Internet n'a pas pu le résoudre, une méthode de remplacement a donc été utilisée.L'idée de la méthode de remplacement :
dans le fichier ASPX connecté, après une connexion réussie, enregistrez la valeur de la variable dans le fichier ASPX connecté
.
Session vers une table de la base de données. Le mot clé utilise le SessionID de l'objet Session d'ASP.NET, puis crée un fichier ASPX,
obtient
le SessionID de l'utilisateur actuellement connecté et utilise l'instruction de redirection ASP.NET pour accéder à le fichier JSP. Le format du chemin de la demande d'URL est test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. SiASP.NET n'est pas connecté ou si la connexion échoue, Success Bien qu'il existe une valeur pour SessionID, aucune donnée n'est associée au fichier JSP. SessionID dans la base de données.
Certains lecteurs peuvent constater que la requête peut être complétée sans utiliser le chemin de requête tel que test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45 Oui, test.jsp peut
également
être utilisé ? est la valeur obtenue après la connexion réussie d'ASP.NET, mais de cette manière, certains utilisateurs peuvent connaître les données sensibles de USERID (numéro d'utilisateur).
Créer un tableau
nom du tableau :
iis_session
nom du champ :
id varchar(26) --stockage l'ID de session d'ASP.NET
userid int(4) – stocke le numéro d'utilisateur après une connexion réussie
power int(4) --stocke le numéro d'autorisation de l'utilisateur
Fragment de code source du programme ASP.NET :
/*Après une connexion réussie, le CODAGE suivant peut être placé dans la page ASPX de vérification de connexion*/
//Enregistrer la valeur de la session dans la base de données
private void WriteSession2DB (chaîne sessionID, chaîne sUID, chaîne sPWR)
{
//Connectez-vous au code de la base de données, les lecteurs peuvent l'ajouter eux-mêmes
chaîne ID session = ID session ;
string strSQL = "insérer dans les valeurs iis_session(id,userid,power) (@seionID,@UID,@PWR)"
//webmod.sqlConn est l'objet de connexion de la base de données, les lecteurs peuvent le remplacer par leur propre connexion à la base de données.
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();
//Fermez la connexion à la base de données, les lecteurs peuvent ajouter eux-mêmes
}
/*Lorsque l'utilisateur quitte le système, supprimez une ligne de données correspondant au SessionID dans la base de données, qui peut être placée sur la page de sortie ou dans le processus Session_END de Global.asax*/
//Supprimez la valeur Session dans la base de données
vide privé RemoveSession4DB()
{
//Connectez-vous au code de la base de données, les lecteurs peuvent l'ajouter eux-mêmes
chaîne sessID = Session.SessionID ;
string strSQL = "delete from iis_session où id='"+sessID+"'";
//webmod.sqlConn est l'objet de connexion de la base de données, et les lecteurs peuvent le remplacer par leur propre connexion à la base de données.
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
// Fermez la connexion à la base de données et les lecteurs peuvent l'ajouter eux-mêmes
}
/*Une page ASPX redirigée vers JSP, ajoutez le code suivant dans PAGE_LOAD de cette page ASPX*/
private void Page_Load (expéditeur de l'objet, System.EventArgs e)
{
string strSessionID = Session.SessionID.Trim();
String strRoot = " http://localhost/test.jsp?aspnetsessionid="+strSessionID ;
Réponse.Redirect(strRoot,true);
}
Extrait du code source du programme JSP :
<%@ page contentType="text/html;charset=gb2312"%>
<%
/*
Propre classe de connexion à la base de données, les utilisateurs peuvent la remplacer eux-mêmes
*/
%>
<jsp:useBean id="db" scope="page" class="com.itbaby.bean.dbx.database"/>
<%
String sASPNetSessionID=request.getParameter("aspnetsessionid");
//Une connexion au pool de connexions est Base de données utilisée, les utilisateurs peuvent la remplacer par la leur
Chaîne sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_sessionwhere id='"+sASPNetSessionID+"'"
//Les lecteurs peuvent remplacer eux-mêmes le code pour lire le jeu de résultats.
java.sql.ResultSet rs=db.getRs(sSql);
if(rs.next())
{
Chaîne sUID = rs.getString(1);
String sPower = rs.getString(2);
/*Lire la valeur SESSIONID correspondante dans la base de données et l'afficher si la SESSION ASP.NET expire, il n'y aura aucune valeur*/.
out.print("<H1>Valeur de session ASP.Net UserID = "+sUID+"</H1><br><br>");
out.print("<H1>Valeur de session ASP.Net Power = "+sPower+"</H1><br><br>"
}
rs.close();
db.dbConnClose();
%>
D'accord, même si ce n'est pas une très bonne méthode, elle peut être utilisée et protège également certaines données sensibles de l'utilisateur. Je continuerai à envisager d'utiliser la sérialisation et la désérialisation. . Moyens de réaliser le partage des objets Session entre différents langages WEB au lieu de ce qui précède, partage des valeurs de Session.