我遇到禁用 Cookie 的问题。我有一个用户使用其用户帐户登录的页面。如果登录成功,连接本身将保存在 session 中。
request.getSession().setAttribute("connection" , connection);
DBConnection对象,在Session中名为connection,是一个Object,它有一个静态的Connection con对象
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 中的任何其他对象?
抛出空指针的连接对象是包中的对象java.sql.Connection;
最佳答案
这个问题与应用程序或 Web 服务器如何在客户端存储 session ID 有关:它们为此使用 cookie。
关于如何为禁用的 cookie 客户端启用 session 绑定(bind),您可以在同一站点上检查此相关问题:How can i do sessions in java if some one disables cookies in my browser?
关于Javaobject "Connection"不适用于禁用的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723884/