Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> servlet и обновление страницы, отменить повторный запуск 
V
    Опции темы
sith
Дата 10.7.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



... тут же идея такая...
... что сервлет читает форму... записывает данные в файл... и тут же выводит эти данные на экран... со всем отсальными данными которые были в файле... я не могу просто редиректить после записи на другую страницу... мне нужно эти данные отобразить...


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
check
Дата 10.7.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Можно так:  обработку параметров пришедших из формы делай в методе
doPost().  Значит и форму нужно соответственно отправлять методом POST.

Вывод данных из файла помести в метод doGet().  
В doPost() после выполнения всех нужных действий(запись в файл  и тд) пишешь
Код

response.sendRedirect("/BobsBandProj/guest?param1");

при этом произойдёт редирект на тот же сервлет,  но запрос будет обрабатываться методом doGet(),  в котором ты должен сделать проверку существования параметра param1, и если он есть,  прочитать данные из файла и вывести их.

PM MAIL   Вверх
PashaOvechkin
Дата 10.7.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Как кто то уже упмоянул...
Помоему ету проблему можно решитй гораздо проще.
При обновлении страницы вызывается метод ГЕТ.

Значит в форме нужно установить метод ПОСТ.

В сервлете пускай дуПост() делает генерацию чего то там.
А дуГет... Хотя бы просто показывает ту же страничку заново.

Ну или конечно редиретк поможет smile

Это сообщение отредактировал(а) PashaOvechkin - 11.7.2007, 00:05
PM MAIL Skype   Вверх
batigoal
Дата 11.7.2007, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



sith, просто редирект - это достаточно стандартный подход решения данной проблемы. К тому же, он поможет тебе лучше разделить логику и отображение.

Цитата(sith @  11.7.2007,  00:48 Найти цитируемый пост)
... что сервлет читает форму... записывает данные в файл... и тут же выводит эти данные на экран... 

Вот это и есть принципиальная ошибка. Зачем смешивать в одну кучу страничку отображения и сервлет записи? Лучше разделить - пусть определённый сервлет занимается обработкой форм, а страница - только выводит. Тогда ты просто поставишь в свою форму action="/BobsBandProj/SomeServlet">, a в нем уже сделаешь редирект на guests.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
sith
Дата 11.7.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



... ЗАПИСКИ С ФРОНТА...

... и так... метод пост не помог... при обнавлении страницы все равно запускаеться сервлет с теме же параметрами... а вот редирект прошел удачно...

... приму к сведенью ваши умные вещи о разделении добавления записей в их просмотр... полностью с этим согласен но в этом варианте исполнения так уже и останеться...

... всем большое спасибо... пока что проблема решена... будут новые... обязательно сообщу...


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
IDVsbruck
Дата 18.9.2007, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: нет
Всего: 22



Обойти повторное исполнение действий при обновлении страницы достаточно просто (старый дедовский способ):

в jsp-страничке до <html> (в заголовке):
<% String randomStr = String.valueOf((new java.util.Random()).nextInt()); session.setAttribute("sessionAttr", randomStr); %>

в форме, которая отправляется, добавить скрытый элемент:
<input type="hidden" name="formAttr" value="<%= randomStr %>"/>

А в сервлете делаем проверку:
String sessionAttr = (String) _request.getSession().getAttribute("sessionAttr");
String formAttr = _request.getParameter("formAttr");
if (sessionAttr != null && formAttr != null) {
    if (!sessionAttr.equals(formAttr)) {
        refresh = false;
    } else refresh = true;
}

Естественно, перед выполнением действий, которые не должны повторяться, надо поставить проверку на рефреш ... 


Это сообщение отредактировал(а) IDVsbruck - 18.9.2007, 01:56
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.