powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение объекта из сессии
19 сообщений из 19, страница 1 из 1
Получение объекта из сессии
    #33033327
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня сегодня опять трудности.
Задача: получить из сессии объект, а если такового нет, т. е. сессия потеряна, то делать редирект на страницу с ошибкой.
Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<!DOCTYPE HTML  PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<META http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<%@ page contentType="text/html;charset=Windows-1251" language="java" %>
<HTML>
<HEAD><TITLE>Test</TITLE></HEAD>
<BODY>
<TABLE width="100%"  border="0">
  <TR>
    <TD width="16%" valign="top">
        Пользователь: <BR>
        Организация:<BR>
        Телефон:<BR>
        Электронная почта:
    </TD>
    <TD width="84%" valign="top">
        <%
            UserBean bean = (UserBean) session.getAttribute("Bean");
             if  (bean ==  null ) {
                RequestDispatcher rd = request.getRequestDispatcher("/NoSessionError.jsp");
                rd.forward(request, response);
            }
        %>
        <%=bean.getUserName()%><BR>
        <%=bean.getUserOrganization()%><BR>
        <%=bean.getUserTelephone()%><BR>
        <%=bean.getUserEmail()%>
    </TD>
  </TR>
</TABLE>
</BODY>
</HTML>
В итоге, если сессия действительно была потеряна, то получаю не редирект, а ошибку 500 с таким текстом:
type Exception report

message
description The server encountered an internal error () that prevented it from fulfilling this request.

exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause
java.lang.NullPointerException
org.apache.jsp.UserInfo_jsp._jspService(UserInfo_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Где и что я делаю не так? И как надо?
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033359
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вместо
Код: plaintext
1.
RequestDispatcher rd = request.getRequestDispatcher("/NoSessionError.jsp");
rd.forward(request, response);
поставить
Код: plaintext
<jsp:forward page="NoSessionError.jsp" />
то все работает.
Почему?
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033371
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И если оставить первоначальный вариант, но закоментировать строки:
Код: plaintext
1.
2.
3.
        <%=bean.getUserName()%><BR>
        <%=bean.getUserOrganization()%><BR>
        <%=bean.getUserTelephone()%><BR>
        <%=bean.getUserEmail()%>
то тоже все работает.
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033391
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут новичек, но возможно скрипт обрабатывает

Код: plaintext
1.
2.
3.
4.
        <%=bean.getUserName()%><BR>
        <%=bean.getUserOrganization()%><BR>
        <%=bean.getUserTelephone()%><BR>
        <%=bean.getUserEmail()%>

в любом случае, и соответственно при

Код: plaintext
bean ==  null 

вываливается с ошибкой...

(?)
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033393
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа эта, else надо вкрячить...
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033403
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так если?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<!DOCTYPE HTML  PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<META http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<%@ page contentType="text/html;charset=Windows-1251" language="java" %>
<HTML>
<HEAD><TITLE>Test</TITLE></HEAD>
<BODY>
<TABLE width="100%"  border="0">
  <TR>
    <TD width="16%" valign="top">
        Пользователь: <BR>
        Организация:<BR>
        Телефон:<BR>
        Электронная почта:
    </TD>
    <TD width="84%" valign="top">
        <%
            UserBean bean = (UserBean) session.getAttribute("Bean");
             if  (bean ==  null ) {
                RequestDispatcher rd = request.getRequestDispatcher("/NoSessionError.jsp");
                rd.forward(request, response);
            }
        else {%>
        <%=bean.getUserName()%><BR>
        <%=bean.getUserOrganization()%><BR>
        <%=bean.getUserTelephone()%><BR>
        <%=bean.getUserEmail()%>
       <%}%>
    </TD>
  </TR>
</TABLE>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033432
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то у меня с самого начала возникала такая мысль (вставить else), но она была отвергнута как бредовая :)
Тем более когда заработало с jsp: forward без всяких else.
Сейчас я попробовал все-таки этот вариант и все заработало.
А кто-нибудь мне может объяснить почему все так происходит? Ведь компилятор изначально не знает нулевой объект или нет.
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033435
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может просто return поставить вот здесь:
Код: plaintext
1.
2.
3.
4.
5.
6.
 if  (bean ==  null ) {
                RequestDispatcher rd = request.getRequestDispatcher("/NoSessionError.jsp");
                rd.forward(request, response);
                 return ;       
     }

...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033442
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxВообще-то у меня с самого начала возникала такая мысль (вставить else), но она была отвергнута как бредовая :)
Тем более когда заработало с jsp: forward без всяких else.
Сейчас я попробовал все-таки этот вариант и все заработало.
А кто-нибудь мне может объяснить почему все так происходит? Ведь компилятор изначально не знает нулевой объект или нет.
не знает потому и проверку необходимо ставит if else,либо выход return
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033443
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxА кто-нибудь мне может объяснить почему все так происходит? Ведь компилятор изначально не знает нулевой объект или нет.
дело не в компиляторе - код сам по себе не содержит ошибок.
тут просто ошибка логики, поэтому поломка происходит только на стадии выполнения скрипта, а именно, когда
Код: plaintext
bean ==  null 
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033461
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все. До меня дошло! :) Он сначала видимо пытается отобразить всю страницу, а потом уже делает редирект.
Всем спасибо. Буду исползовать jsp: forward, красивее получается.
P.S. Вариант с return вижу впервые. Не вижу никакой логики, чтобы это работало, но работает.
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033483
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxВсе. До меня дошло! :) Он сначала видимо пытается отобразить всю страницу, а потом уже делает редирект.
Всем спасибо. Буду исползовать jsp: forward, красивее получается.
P.S. Вариант с return вижу впервые. Не вижу никакой логики, чтобы это работало, но работает.
Так пишут книги,в частности Дейтел,и логика по-моему есть
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033538
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО. Определение: return - возвращает результат работы метода. Я здесь никакого метода не вижу. Может после компиляции он и есть конечно :) Но у меня такой код вызывает только недоумение.
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033723
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxИМХО. Определение: return - возвращает результат работы метода. Я здесь никакого метода не вижу. Может после компиляции он и есть конечно :) Но у меня такой код вызывает только недоумение.
А
Код: plaintext
 return   NULL ;
разве не является возвратом результата???
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033742
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sehensucht! (потерял пароль) GMaxИМХО. Определение: return - возвращает результат работы метода. Я здесь никакого метода не вижу. Может после компиляции он и есть конечно :) Но у меня такой код вызывает только недоумение.
А
Код: plaintext
 return   NULL ;
разве не является возвратом результата???Конечно является. В моем посте ключевое слово "Метод". Просто я не вижу здесь явного метода, поэтому и говорю, что для меня этот код нелогичен.
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033749
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxПросто я не вижу здесь явного метода, поэтому и говорю, что для меня этот код нелогичен.
просто надо знать, что контент jsp вставляется (грубо говоря) в метод
_jspService() соот. класса :)
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033750
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шИрше мыслить надо, Товарисч! ширЕе, так сказать :)

и это... хорош флудить ;)
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033763
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ JE GMaxПросто я не вижу здесь явного метода, поэтому и говорю, что для меня этот код нелогичен.
просто надо знать, что контент jsp вставляется (грубо говоря) в метод
_jspService() соот. класса :)
Я конечно догадывался, что он вставляется в какой-то метод. Вот только в какой не знал. Теперь знаю. Но его же явно не видно, правильно? :) Ну да ладно...
...
Рейтинг: 0 / 0
Получение объекта из сессии
    #33033774
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMax А.Грасоff™ JE GMaxПросто я не вижу здесь явного метода, поэтому и говорю, что для меня этот код нелогичен.
просто надо знать, что контент jsp вставляется (грубо говоря) в метод
_jspService() соот. класса :)
Я конечно догадывался, что он вставляется в какой-то метод. Вот только в какой не знал. Теперь знаю. Но его же явно не видно, правильно? :) Ну да ладно...

тебе томкэт признался, что за метод:

type Exception report

message
description The server encountered an internal error () that prevented it from fulfilling this request.

...

root cause
java.lang.NullPointerException
org.apache.jsp.UserInfo_jsp._jspService(UserInfo_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение объекта из сессии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]