使用BlobstoreService的HttpSession Null

时间:2012-03-15 03:24:31

标签: java google-app-engine httpsession

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

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

我已将System.out.println(hs.getAttribute("logUserName") + "");置于点击“保存”按钮后触发的servlet之上。输出为null

我怎么能避免这个?

已更新

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

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块会抛出

catchlogUserName是我在客户端与服务器之间传递用户名的参数。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)