Ну, простыми словами:
Вы пытаетесь получить доступ к объекту, который не создан или в настоящее время не находится в памяти.
Итак, как это решить:
if (i == null) {
// Handle this
}
Поиск по имени означает, что некоторые фреймворки позволяют использовать FIndObjects с помощью строк, а код может выглядеть так: FindObject («ObjectName»);
Здесь вы можете сделать это, используя HttpRequest
или HttpSession
. И подумайте, что ваша проблема находится в JSP.
Если вы собираетесь использовать внутренний сервлет, выполните следующие действия:
Object obj = new Object();
session.setAttribute("object", obj);
или
HttpSession session = request.getSession();
Object obj = new Object();
session.setAttribute("object", obj);
и после установки вашего атрибута с помощью запроса или сеанса используйте следующие для доступа к нему в JSP,
<%= request.getAttribute("object")%>
или
<%= session.getAttribute("object")%>
. Кажется, ваша проблема в JSP.
Если вы хотите использовать скриптлеты, это должно быть следующим:
<%
Object obj = request.getSession().getAttribute("object");
out.print(obj);
%>
Или использовать выражения следующим образом:
<%= session.getAttribute("object")%>
или использовать EL следующим образом , ${object}
или ${sessionScope.object}
Объект запроса не является сеансом.
Вы хотите использовать объект сеанса для хранения. Сеанс добавлен в запрос и был ли вы хотите сохранить данные по запросам. Сессия может быть получена из
HttpSession session = request.getSession(true);
. Затем вы можете использовать setAttribute или getAttribute в сеансе.
Более современное руководство по сессиям jsp: http: //courses.coreservlets.com/Course-Materials/pdf/csajsp2/08-Session-Tracking.pdf
Добавьте его в сеанс, а не в запрос.
HttpSession session = request.getSession();
session.setAttribute("object", object);
Кроме того, не используйте сценарии в JSP. Вместо этого используйте EL ; для доступа к object
все, что вам нужно, - ${object}
.
Основной особенностью технологии JSP версии 2.0 является поддержка языка выражений (EL). Язык выражения позволяет легко получить доступ к данным приложения, хранящимся в компонентах JavaBeans. Например, язык выражения JSP позволяет автору страницы обращаться к компоненту, используя простой синтаксис, такой как
blockquote>${name}
для простой переменной или${name.foo.bar}
для вложенного свойства.
Вы не добавляете объект в сеанс, вместо этого вы добавляете его в запрос. Что вам нужно:
HttpSession session = request.getSession();
session.setAttribute("MySessionVariable", param);
В Servlets у вас есть 4 области, где вы можете хранить данные.
Убедитесь, что вы их понимаете. Подробнее здесь