0

我遇到了禁用 Cookie 的问题。我有一个用户使用他的用户帐户登录的页面。如果登录成功,连接本身会保存在会话中。

request.getSession().setAttribute("connection"  , connection);

Object DBConnection,在Session中命名为connection,是一个Object,里面有一个静态的Connection con Object

protected static Connection con = null;

当用户登录时,建立连接

con = DriverManager.getConnection(url, this.user, this.password);

这也适用于去中心化的 cookie。如果正在检查我要保存的连接和 con 对象System.out.println.

System.out.println(("DBConnection == null: " + connection == null));
System.out.println("Connection" connection.getCon());
//result ->
//DBConnection == null: false
//oracle.jdbc.driver.T4CConnection@15d51e5

所以登录成功。现在用户离开这一侧并由于一个按钮而转到其他一些信息页面。在这里,我再次需要这个连接,我在一个 Servlet 中得到它。

DBConnection connection = (DBConnection)request.getSession().getAttribute("connection");

使用与以前相同的 System.out.println,当启用 cookie 时,它​​会给出与以前相同的结果。当 cookie 被禁用时,它会抛出一个带有以下结果的异常:

DBConnection == null: false
java.lang.NullPointerException

所以现在我的问题。当我禁用 cookie 时,为什么我的连接会中断?在我看来,cookie 没有任何东西可以处理连接对象,或者保存在 JSP 中的任何其他对象?抛出 Nullpointer 的连接 Object 是 Package 中的 Objectjava.sql.Connection;

4

1 回答 1

1

这个问题与应用程序或 Web 服务器如何在客户端存储会话 ID 有关:他们为此使用 cookie。

关于如何为禁用的 cookie 客户端启用会话绑定,您可以在同一个站点上查看这个相关问题:如果有人在我的浏览器中禁用 cookie,我如何在 java 中进行会话?

于 2012-12-05T13:09:38.893 回答