В моем приложении 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()
. на этом сервлете я проверяю, является ли 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
- это параметр, который я использую от клиента к серверу для передачи имени пользователя.