Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Я думаю, что Вы ищете, вот запрос, сессия или данные приложения.
В сервлете можно добавить объект как атрибут к объекту запроса, объекту сессии или объекту контекста сервлета:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
String shared = "shared";
request.setAttribute("sharedId", shared); // add to request
request.getSession().setAttribute("sharedId", shared); // add to session
this.getServletConfig().getServletContext().setAttribute("sharedId", shared); // add to application context
request.getRequestDispatcher("/URLofOtherServlet").forward(request, response);
}
при помещении его в объект запроса это будет доступно сервлету, который передается тому, пока запрос не закончен:
request.getAttribute("sharedId");
при помещении его в сессию это будет доступно всем сервлетам продвижение, но значение будет связано с пользователем:
request.getSession().getAttribute("sharedId");
, Пока сессия не истекает на основе неактивности от пользователя.
сбрасывается Вами:
request.getSession().invalidate();
Или один сервлет удаляет его из объема:
request.getSession().removeAttribute("sharedId");
при помещении его в контекст сервлета это будет доступно, в то время как приложение работает:
this.getServletConfig().getServletContext().getAttribute("sharedId");
, Пока Вы не удаляете его:
this.getServletConfig().getServletContext().removeAttribute("sharedId");
Поместите его в один из 3 различных объемов.
запрос - длится жизнь запроса
, сессия - длится жизнь сессии пользователя
, приложение - длится, пока приложение не закрывается
, можно получить доступ ко всем этим объемам через переменную HttpServletRequest, которая передается в методам, которые расширяются от класс
HttpServletЗависит от объема надлежащего использования данных.
, Если данные только используются на основе в расчете на пользователя, как пользовательская информация о входе в систему, количество хита страницы, и т.д. используют объект сессии (httpServletRequest.getSession () .get/setAttribute (Строка [Объект]))
, Если это - те же данные через многочисленных пользователей (общие хиты веб-страницы, рабочие потоки, и т.д.) используют атрибуты ServletContext. servlet.getServletCongfig () .getServletContext () .get/setAttribute (Строка [Объект])). Это будет только работать в том же военном файле/сети applicaiton. Обратите внимание, что эти данные не сохраняются через перезапуски также.
Вы не могли только поместить объект в HttpSession и затем обратиться к нему его названием атрибута в каждом из сервлетов?
, например:
getSession().setAttribute("thing", object);
... тогда в другом сервлете:
Object obj = getSession.getAttribute("thing");