![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Есть Web Pages\dynamic_content\registration.jsp
Из нее по submit'у формы вызывается сервлет userRegistration с передачей всех необходимых параметров. Из сервлета снова вызываем registration.jsp с помощью кода:
Полученная страница загружается с неправильным контекстом (естественно Как же перед вызвом страницы из сервлета задать правильный контекст для этой страницы? Это сообщение отредактировал(а) Maksym - 28.8.2005, 15:28 |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Дело не в контексте, дело том, как браузер разрешает относительные ссылки. В твоем случае можно предложить два простых решения: прописывать ссылки на все внутренние ресурсы (стили, картинки и т. д.) как абсолютные, от корня. Это, кстати, очень неплохое решение, которое впоследствии может избавить тебя от разных непредвиденных граблей.
Второе - использовать Response.sendRedirect() вместе RequstDispatcher.forward(). Разница между ними в том, что в случае форварда перенаправление происходит внутри контейнера. При этом браузер так и думает, что данные поступают с адреса твоего сервлета, скажем, /servlet/RegistrationFormHandlingServlet. Это не всегда желательное поведение. Часто хочется, чтобы если содержимое страницы идет из JSP, то чтоб и браузер знал об этом. Такой эффкт достигается использованием метода Response.sendRedirect(). Физически при этом происходит следующее: браузеру возвращается HTTP код ответа 302 (ресурс перемещен), а в поле Location указывается адрес для перенаправления (в твоем случае /dynamic_content/registration.jsp). Получив такой ответ, браузер повторным запросом идет уже по вновь указанному адресу. Параметры запроса при этом не сохраняются, поэтому их в этом случае надо хранить на стороне сервера, например, в сессии. Вот так вот в общих чертах. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Stampede
Прописывать абсолютные ссылки мне рано, части проекта могут еще премещаться друг относительно друга и относительно корня в процессе работы. Response.sendRedirect() заработало сразу. Кажется, это удачное решение. Большое спасибо |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Поднимаю тему. Описаный Stampede метод /sendRedirect()/ прекрасно работал, до тех пор пока к системе не обратились из IE 5.0 - парадоксальным образом на сервере умирает сессия после перехода по sendRedirect(), т.е. ни один из вложеных в неё до перехода параметров не обнаруживается (при использовании forward() этой проблемы нет, но forward() не подходит по описанным выше причинам).
Сталкивался ли кто с этой проблемой? Добавлено @ 13:16 ЗЫ. Перечитал тему. Как мудр был Stampede:
Респект! Но мне уже поздно - все везде сделано в относительных ссылках... |
|||
|
||||
| AngerOgAnAngel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.3.2006 Репутация: нет Всего: нет |
<base href="<%=basePath%>">
вообще контекстом можно управлять с помощью этого тега. basePath - полный путь, можно получить его например так: String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; он у тебя на страничках случайно ни где не проставлен? Если да, то у тебя будут проблемы с Context. О проблеме с сессиями в sendRedirect я не слышал. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |