Pendahuluan: Setelah masuk di ASP.NET, JSP dapat menggunakan nilai Sesi di ASP.Net. Topik ini baru saja dimulai. Ide Baby (itbaby.jss.cn) adalah Sesi berseri ASP.NET disimpan ke database sebagai data biner. Kemudian JSP membaca data biner dalam database dan melakukan deserialisasi menjadi
objek
Sesi , dan kemudian secara paksa mengubahnya menjadi objek Sesi JAVA. Selama konversi di sisi JAVA, terjadi kesalahan terjadi, dan mencari informasi di Internet tidak dapat menyelesaikannya, jadi digunakanmetode penggantian
.Ide metode penggantian:
Dalam file ASPX yang login, setelah login berhasil, simpan nilai variabel di Sesi ke tabel dalam database. Kata kunci menggunakan SessionID dari objek Sesi ASP.NET, dan kemudian membuat file ASPX,
mendapatkan
SessionID dari pengguna yang saat ini masuk, dan menggunakan pernyataan pengalihan ASP.NET untuk pergi ke file JSP. Format jalur permintaan URL adalah test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. JikaASP.NET tidak masuk atau gagal masuk, Berhasil. Meskipun ada nilai untuk SessionID, tidak ada data yang terkait dengan SessionID dalam database.
Beberapa pembaca mungkin menemukan
bahwa
permintaan dapat diselesaikan tanpa menggunakan jalur permintaan seperti test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Ya, test.jsp dapat digunakan? adalah nilai yang didapat setelah ASP.NET berhasil login, namun dengan cara ini beberapa pengguna dapat mengetahui data sensitif USERID (nomor pengguna).
Buat tabel
nama tabel:
iis_sesi
nama bidang:
id varchar(26) --menyimpan SessionID ASP.NET
userid int(4) – menyimpan nomor pengguna setelah login berhasil
power int(4) --menyimpan nomor izin pengguna
Fragmen kode sumber program ASP.NET:
/*Setelah login berhasil, KODEING berikut dapat ditempatkan di halaman ASPX verifikasi login*/
//Rekam nilai Sesi ke database
kekosongan pribadi WriteSession2DB(string sessionID,string sUID,string sPWR)
{
//Hubungkan ke kode database, pembaca dapat menambahkannya sendiri
string sesID = ID sesi;
string strSQL = "masukkan ke iis_session(id,userid,power) value(@seionID,@UID,@PWR)";
//webmod.sqlConn adalah objek koneksi database, pembaca dapat menggantinya dengan koneksi database mereka sendiri
SqlCommand sqlCmd = SqlCommand baru(strSQL,webmod.sqlConn);
sqlCmd.Parameters.Add("@seionID",SqlDbType.VarChar).Nilai = sessID;
sqlCmd.Parameters.Add("@UID", SqlDbType.Int ).Nilai = Konversi.ToInt32(sUID.Trim());
sqlCmd.Parameters.Add("@PWR", SqlDbType.Int).Nilai = Konversi.ToInt32(sPWR.Trim());
sqlCmd.ExecuteNonQuery();
//Tutup koneksi database, pembaca dapat menambahkan sendiri
}
/*Saat pengguna keluar dari sistem, hapus baris data yang sesuai dengan SessionID di database, yang dapat ditempatkan di halaman keluar atau di proses Session_END di Global.asax*/
//Hapus nilai Session di database
kekosongan pribadi HapusSession4DB()
{
//Hubungkan ke kode database, pembaca dapat menambahkannya sendiri
string sessID = Sesi.SessionID;
string strSQL = "hapus dari iis_session di mana id='"+sessID+"'";
//webmod.sqlConn adalah objek koneksi database, dan pembaca dapat menggantinya dengan koneksi database mereka sendiri.
SqlCommand sqlCmd = SqlCommand baru(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//Tutup koneksi database dan pembaca dapat menambahkannya sendiri
}
/*Halaman ASPX dialihkan ke JSP, tambahkan kode berikut di PAGE_LOAD halaman ASPX ini*/
private void Page_Load(pengirim objek, System.EventArgs e)
{
string strSessionID = Sesi.SessionID.Trim();
String strRoot = " http://localhost/test.jsp?aspnetsessionid="+strSessionID ;
Respon.Redirect(strRoot,true);
}
Cuplikan kode sumber program JSP:
<%@ halaman contentType="teks/html;charset=gb2312"%>
<%
/*
Kelas koneksi database sendiri, pengguna dapat menggantinya sendiri
*/
%>
<jsp:useBean id="db" scope="page" class="com.itbaby.bean.dbx.database"/>
<%
String sASPNetSessionID=request.getParameter("aspnetsessionid");
//Sambungan kumpulan koneksi adalah Database yang digunakan, pengguna dapat menggantinya dengan milik mereka sendiri
String sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session Where id='"+sASPNetSessionID+"'";
//Pembaca dapat mengganti kode untuk membaca hasil yang ditetapkan sendiri
java.sql.ResultSet rs=db.getRs(sSql)
;
{
String sUID = rs.getString(1);
String sPower = rs.getString(2);
/*Baca nilai SESSIONID yang sesuai dalam database dan tampilkan. Jika waktu ASP.NET SESSION habis, tidak akan ada nilai*/
out.print("<H1>Nilai Sesi ASP.Net UserID = "+sUID+"</H1><br><br>");
out.print("<H1>Kekuatan Nilai Sesi ASP.Net = "+sPower+"</H1><br><br>")
;
rs.close();
db.dbConnClose();
%>
Oke, meskipun ini bukan metode yang bagus, ini bisa digunakan, dan juga melindungi beberapa data sensitif pengguna . Cara untuk mencapai berbagi objek Sesi antara bahasa WEB yang berbeda, bukan di atas, berbagi nilai Sesi