【问题标题】:HttpSession Null with BlobstoreService带有 BlobstoreService 的 HttpSession Null
【发布时间】:2012-03-31 14:18:58
【问题描述】:

在我的Google App Engine 应用程序中,登录的用户可以上传他们的图片以及其他详细信息。我使用HttpSession 来管理日志记录。当登录的用户填写表单并选择要上传的照片并单击“保存”按钮时,由于Session 为空,会抛出NullPointerException。 (数据存储在数据库中,但是在数据存储到数据库后尝试转发到成功页面时会抛出NullPointerException)。

Form action = `blobstoreService.createUploadUrl("/users/adddetails")`

我已将System.out.println(hs.getAttribute("logUserName") + ""); 放在servlet 之上,这是在单击“保存”按钮后触发的。输出为null

我怎样才能避免这种情况?

更新

登录用户填写表格后,转到我在问题中提到的 (/users/adddetails) 路径并将数据添加到数据库。它工作正常。添加数据后,使用resp.sendRedirect() 方法重定向到另一个servlet。在那个 servlet 上,我正在检查 Session 是否为空,如下所示。

try 

{ 
  HttpSession hs = req.getSession();     

  if(!hs.getAttribute("logUserName").equals(null)) {
      RequestDispatcher d = req .getRequestDispatcher("/WEB-INF/userhome/add_data.jsp");
      d.forward(req, resp); }

  else { 
      RequestDispatcher d = req .getRequestDispatcher("user_login.jsp");
      d.forward(req, resp);
  }

} catch (NullPointerException ex) {

    // NullPointerException thrown from here

    RequestDispatcher d = req.getRequestDispatcher("user_login.jsp");
    d.forward(req, resp);
}catch (Exception ex) {
    RequestDispatcher d = req.getRequestDispatcher("/msg/exception.jsp");
    d.forward(req, resp);
}

NullPointerException 是从上述代码中的 catch 块抛出的。 logUserName 是我从客户端到服务器用来传递用户名的参数。

【问题讨论】:

  • 你能粘贴异常的堆栈跟踪吗? logUserName 也是您从客户端到服务器用来传递用户名的参数吗?抛出异常的实际操作的一些代码也会有帮助!
  • 绝对不可读。你可以编辑原始问题并在那里添加代码
  • @vishal.biyani 抱歉。我会编辑原帖

标签: java google-app-engine httpsession


【解决方案1】:

请尝试以下代码。

HttpSession hs = req.getSession(false);
if(hs == null)System.out.println("session is null");
else {
  String name = hs.getAttribute("logUserName");
  if(name == null)System.out.println("name is null");
  else System.out.println(name);

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2011-06-09
    • 2013-12-12
    • 1970-01-01
    • 2016-09-28
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多