|
|
|
Можно ли установить атрибут из AJAX-сервлета?
|
|||
|---|---|---|---|
|
#18+
В сервлете, который обрабатывает запрос AJAX, возникла необходимость установить/изменить аттрибут сессии: request.getSession().setAttribute(name, value). Возможно ли такое сделать? Точнее, сделать можно :), но воспользоваться далее - уже нет (request читается, но не пишется). Если нет, то как это можно обойти, если в аттрибут хочу записать объект? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2007, 02:56:39 |
|
||
|
Можно ли установить атрибут из AJAX-сервлета?
|
|||
|---|---|---|---|
|
#18+
AJAX-сервлет - это выражение, которое ты сам придумал. Поэтому чего спрашивать. А именно, он ничем не отличается от обычного сервлета. Сл., установить и получить "атрибут сессии" (извиняюсь за выражение) в нём можно так же, как в любом другом. А почему у тебя не устанавливается - ищи ошибку. В приведённом тобой фрагменте её не видно. Хотя есть другая: request().getSession().setAttribute(...) Неправильно. getSession() без аргумента или получает существующую сессию или создаёт новую, причём ты не знаешь, какой из этих вариантов случился. Пусть ты сохранил объект в сессии, она пропала, и теперь ты пытаешься получить его из новой сессии, которая создастся по getSession(). Ошибка будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2007, 12:18:58 |
|
||
|
Можно ли установить атрибут из AJAX-сервлета?
|
|||
|---|---|---|---|
|
#18+
Абсолютно не спорю по поводу своих ошибок в терминологии - это мое слабое место. Видимо, я не полностью переварил весь процесс jsp-servlet, но мой вопрос базируется на отладке, которая меня не радует, и интуитивных наблюдений: 1. Сервлет, к которому обращается запрос при отправке формы (submit) после всех манипуляций перенаправляет запрос выражением this.getServletContext().getRequestDispatcher(jspPage).forward(request, response) - то есть я уверен, что и request, и response будут доступны в клиентской части проекта. 2. Сервлет, к которому обращается запрос типа XMLHttpRequest (опять могу ошибиться, но "посредством технологии AJAX"), после выполнения на сервере ряда манипуляций уже не перенаправляет запрос/отклик, а передает клиенту некий контент посредством выражения response.getWriter().print(result). Таким образом, request не учавствует в данном случае в "пересылке" данных, в частности, при установке атрибута в сессию он элементарно не передается обратно клиенту. Или я ошибаюсь? - внесенный в сессию атрибут не надо отправлять ...? На практике получается следующее: добавил/изменил атрибут вешеуказанным способом, а при следующем вызове сервлета обращаюсь к сессии (которая есть), но данный атрибут null. И непонятно, почему приведенное выражение ошибочно? - Я так понимаю, сессия уникальна и соответственно, вызов сессии может вернуть только единственный экземпляр ... Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2007, 16:34:55 |
|
||
|
Можно ли установить атрибут из AJAX-сервлета?
|
|||
|---|---|---|---|
|
#18+
- все данные связанные с сессией хранятся на сервере и клиент доступа к ним не имеет. - единственный механизм связывающий клиента и сервер - протокол HTTP - передавать данные по протоколу HTTP можно следующим образом: от клиента: - при использовании метода GET, дописав данные в URL - при использовании метода POST данные передаются в теле запроса - для всех методов доступны заголовки протокола HTTP (Coookie, и т. п.) от сервера: - данные передаются в теле ответа (HTML-код и т. п.) - в заголовках протокола HTTP (Set-Cookie и т. п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2007, 17:02:10 |
|
||
|
Можно ли установить атрибут из AJAX-сервлета?
|
|||
|---|---|---|---|
|
#18+
После "ряда испытаний" оказалось, что проблема скрывается не там ... надо было сразу говорить обо всей проблеме :) Запрос вызвал сервлет. В сервлете я установил атрибут типа объект в сессию. Данные на страничке обновились. Делаю рефреш ... атрибута в сессии нет. В чем дело? Судя по тому, что стринговые так и остались, а типа объект - делаю вывод, что при выходе из сервлета содержимое атрибута "потерялось" - мой объект стал null и из сессии был автоматически удален. Немного глуповато ... но как обойти данную проблему, не делая глобальных переменных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2007, 22:08:40 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=654&tid=2146358]: |
0ms |
get settings: |
17ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
44ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 471ms |

| 0 / 0 |
