Введение: После входа в ASP.NET JSP может использовать значение сеанса в ASP.Net. Эта тема только началась. Идея Baby (itbaby.jss.cn) заключается в том, что сериализованный сеанс в. ASP.NET сохраняется в базе данных как двоичные данные. Затем JSP считывает двоичные данные в базе данных и десериализует их в
объект
сеанса , а затем принудительно преобразует их в объект сеанса JAVA. Во время преобразования на стороне JAVA возникает ошибка. произошла, и поиск информации в Интернете не смог ее решить, поэтому был использован методзамены
.Идея метода замены:
В авторизованном ASPX-файле после успешного входа сохранить значение переменной. Сеанс с таблицей в базе данных. Ключевое слово использует SessionID объекта Session ASP.NET, а затем создает файл ASPX,
получает
SessionID текущего вошедшего в систему пользователя и использует оператор перенаправления ASP.NET для перехода к таблице. Формат пути URL-запроса: test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Есливход в систему ASP.NET не выполнен или вход не выполнен, отображается значение Success. Несмотря на наличие значения для SessionID, данные, связанные с ним, отсутствуют. SessionID в базе данных
Некоторые читатели могут обнаружить, что запрос можно выполнить без использования пути запроса, например test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Да, test.jsp можно использовать? Userid=1111
также
передает значения. — это значение, полученное после успешного входа в систему ASP.NET, но таким образом некоторые пользователи могут узнать конфиденциальные данные USERID (номер пользователя).
Создать таблицу
имя таблицы:
iis_session
имя поля:
id varchar(26) — хранение идентификатора сеанса ASP.NET
userid int(4) – сохраняет номер пользователя после успешного входа в систему
power int(4) --хранит номер разрешения пользователя
Фрагмент исходного кода программы ASP.NET:
/*После успешного входа в систему на странице ASPX проверки входа можно разместить следующий КОД*/
//Записать значение сеанса в базу данных
Private void WriteSession2DB (строка sessionID, строка sUID, строка sPWR)
{
//Подключаемся к коду базы данных, читатели могут добавить его сами
строка sesID = sessionID;
string strSQL = "вставить в значения iis_session(id,userid,power)(@seionID,@UID,@PWR)"
//webmod.sqlConn — это объект подключения к базе данных, читатели могут заменить его собственным подключением к базе данных
SqlCommand sqlCmd = новый 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 в базе данных, которую можно разместить на странице выхода или в процессе Session_END Global.asax*/
//Удалить значение Session в базе данных
частная пустота RemoveSession4DB()
{
//Подключаемся к коду базы данных, читатели могут добавить его сами
строка sessID = Session.SessionID;
string strSQL = "удалить из iis_session, где id='"+sessID+"'"
//webmod.sqlConn — это объект подключения к базе данных, и читатели могут заменить его своим собственным подключением к базе данных.
SqlCommand sqlCmd = новый SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//Закрываем соединение с базой данных и читатели смогут добавить ее самостоятельно
}
/*Страница ASPX, перенаправленная на JSP, добавьте следующий код в PAGE_LOAD этой страницы ASPX*/
частная пустота Page_Load (отправитель объекта, System.EventArgs e)
{
строка 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");
//Соединение с пулом соединений установлено
;используемая база данных, пользователи могут заменить ее своей собственной
Строка sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session где id='"+sASPNetSessionID+"'"
//Читатели могут самостоятельно заменить код для чтения набора результатов.
java.sql.ResultSet rs=db.getRs(sSql);
if(rs.next());
{
Строка sUID = rs.getString(1);
String sPower = rs.getString(2);
/*Читаем соответствующее значение SESSIONID в базе данных и отображаем его. Если время ожидания ASP.NET SESSION истекло, значения не будет*/.
out.print("<H1>Значение сеанса ASP.Net UserID = "+sUID+"</H1><br><br>");
out.print("<H1>Мощность сеанса ASP.Net = "+sPower+"</H1><br><br>")
;
rs.close();
db.dbConnClose();
%>
Хорошо, хотя это и не очень хороший метод, его можно использовать, и он также защищает некоторые конфиденциальные данные пользователя. Я продолжу рассматривать возможность использования сериализации и десериализации. Способы достижения совместного использования объектов Session между разными WEB-языками вместо описанного выше совместного использования значений Session.