Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли установить атрибут из AJAX-сервлета? / 6 сообщений из 6, страница 1 из 1
17.03.2007, 02:56:39
    #34397461
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
В сервлете, который обрабатывает запрос AJAX, возникла необходимость установить/изменить аттрибут сессии: request.getSession().setAttribute(name, value).

Возможно ли такое сделать?
Точнее, сделать можно :), но воспользоваться далее - уже нет (request читается, но не пишется).

Если нет, то как это можно обойти, если в аттрибут хочу записать объект?

Спасибо.
...
Рейтинг: 0 / 0
17.03.2007, 12:18:58
    #34397652
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
AJAX-сервлет - это выражение, которое ты сам придумал. Поэтому чего спрашивать. А именно, он ничем не отличается от обычного сервлета. Сл., установить и получить "атрибут сессии" (извиняюсь за выражение) в нём можно так же, как в любом другом. А почему у тебя не устанавливается - ищи ошибку. В приведённом тобой фрагменте её не видно.

Хотя есть другая:
request().getSession().setAttribute(...)

Неправильно.

getSession() без аргумента или получает существующую сессию или создаёт новую, причём ты не знаешь, какой из этих вариантов случился. Пусть ты сохранил объект в сессии, она пропала, и теперь ты пытаешься получить его из новой сессии, которая создастся по getSession(). Ошибка будет.
...
Рейтинг: 0 / 0
17.03.2007, 16:34:55
    #34397866
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
Абсолютно не спорю по поводу своих ошибок в терминологии - это мое слабое место.

Видимо, я не полностью переварил весь процесс jsp-servlet, но мой вопрос базируется на отладке, которая меня не радует, и интуитивных наблюдений:

1. Сервлет, к которому обращается запрос при отправке формы (submit) после всех манипуляций перенаправляет запрос выражением this.getServletContext().getRequestDispatcher(jspPage).forward(request, response) - то есть я уверен, что и request, и response будут доступны в клиентской части проекта.
2. Сервлет, к которому обращается запрос типа XMLHttpRequest (опять могу ошибиться, но "посредством технологии AJAX"), после выполнения на сервере ряда манипуляций уже не перенаправляет запрос/отклик, а передает клиенту некий контент посредством выражения response.getWriter().print(result).

Таким образом, request не учавствует в данном случае в "пересылке" данных, в частности, при установке атрибута в сессию он элементарно не передается обратно клиенту. Или я ошибаюсь? - внесенный в сессию атрибут не надо отправлять ...?

На практике получается следующее: добавил/изменил атрибут вешеуказанным способом, а при следующем вызове сервлета обращаюсь к сессии (которая есть), но данный атрибут null.

И непонятно, почему приведенное выражение ошибочно? - Я так понимаю, сессия уникальна и соответственно, вызов сессии может вернуть только единственный экземпляр ...

Спасибо.
...
Рейтинг: 0 / 0
17.03.2007, 17:02:10
    #34397900
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
- все данные связанные с сессией хранятся на сервере и клиент доступа к ним не имеет.

- единственный механизм связывающий клиента и сервер - протокол HTTP

- передавать данные по протоколу HTTP можно следующим образом:
от клиента:
- при использовании метода GET, дописав данные в URL
- при использовании метода POST данные передаются в теле запроса
- для всех методов доступны заголовки протокола HTTP (Coookie, и т. п.)

от сервера:
- данные передаются в теле ответа (HTML-код и т. п.)
- в заголовках протокола HTTP (Set-Cookie и т. п.)
...
Рейтинг: 0 / 0
17.03.2007, 22:08:40
    #34398178
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
После "ряда испытаний" оказалось, что проблема скрывается не там ... надо было сразу говорить обо всей проблеме :)

Запрос вызвал сервлет. В сервлете я установил атрибут типа объект в сессию. Данные на страничке обновились. Делаю рефреш ... атрибута в сессии нет. В чем дело? Судя по тому, что стринговые так и остались, а типа объект - делаю вывод, что при выходе из сервлета содержимое атрибута "потерялось" - мой объект стал null и из сессии был автоматически удален. Немного глуповато ... но как обойти данную проблему, не делая глобальных переменных?
...
Рейтинг: 0 / 0
18.03.2007, 02:32:44
    #34398346
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли установить атрибут из AJAX-сервлета?
Вопрос полностью снимается.
Детальное изучение документации и наблюдение за кодом решило все проблемы.
Признаю, что вопросы были очень глупые ... прдн. :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли установить атрибут из AJAX-сервлета? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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