当用户使用JSP应用程序访问ASP.NET应用程序时,需要在这两个应用程序之间共享sessions,这可以用以下两种方法实现:使用相同的session ID,使用数据库来持久化sessions。
下面是使用相同的session ID来共享跨平台sessions的示例代码:
首先,要在相应的服务器端设置session ID的cookie为Java Servlet API。Java servlet API提供了一个名为JSESSIONID的Cookie。此时,在ASP.NET项目的Web.config文件中添加以下代码块:
<system.web>
<sessionState cookieName="ASP.NET_SessionId"
mode="StateServer"
cookieless="false"
timeout="20" />
</system.web>
此时,当ASP.NET应用程序会话执行时,将利用ASP.NET_SessionID cookie生成Session ID。然后,JSP应用程序应使用JSESSIONID cookie设置同一ID。
<script>
document.cookie="JSESSIONID=<%=session.getId()%>";
</script>
通过上述code,JSP应用程序的Cookie将包含Session的ID,即JSESSIONID和服务器IP地址信息。ASP.NET应用程序将使用相同的SessionID来创建session,因此session能够共享,并跨平台使用。
下面是使用数据库存储sessions来跨平台共享sessions的示例代码:
在JSP应用程序和ASP.NET应用程序之间共享sessions,需要使用相同的数据库来存储sessions。下面是在JSP应用程序中使用MySQL数据库存储sessions的示例代码:
<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=root");
stmt = con.createStatement();
rs = stmt.executeUpdate("INSERT INTO sessions VALUES ('" + session.getId() + "', " + session.getMaxInactiveInterval() + ", '" + new Date() + "')");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try { rs.close(); } catch (Exception e) { }
try { stmt.close(); } catch (Exception e) { }
try { con.close(); } catch (Exception e) { }
}
%>
此时,在ASP.NET应用程序中,可以通过在Web.config文件中添加一个提供程序来使用相同的MySQL数据库来存储sessions。下面是使用ASP.NET Session State SQL Server提供程序的示例Web.config文件:
<configuration>
<connectionStrings>
<add name="MySqlConnection" connectionString="Data Source=localhost;User ID=root;Password=root;Persist Security Info=True;initial catalog=test;"/>
</connectionStrings>
<system.web>
<sessionState mode="SQLServer" sqlConnectionString="data source=localhost;user id=root;password=root;Initial Catalog=ASPState; " cookieless="false" timeout="20"/>
</system.web>
</configuration>
上述Web.config文件使用连接到MySQL数据库的提供程序,并设置session mode为SQLServer,以连接共享的MySQL数据库。将ASP.NET应用程序运行时的session存储在相同的MySQL数据库中,然后在JSP应用程序中读取该session。
以上是 jsp和asp.net共享session值示例代码
的完整攻略,介绍了通过共享Session ID和使用数据库存储sessions来跨平台共享sessions的示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp和asp.net共享session值示例代码 - Python技术站