| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Servlet |
| Автор: Kars 27.4.2006, 12:45 |
| Всем привет. У меня к вам вопросик Описание программы : На сервлет поступает URL запрос с параметрами , он их обрабатывает и выдает результат . Суть "проблемы" : 1. После обработки поступившых данных , что бы увидеть результат необходимо обновлять страничку ( нажимать Ф5 ). 2. Параметры которые передались в сервлет через адресную строку не очищаются после обработки , и после нажатия клавиши Ф5 снова выполняются . Что делать ? |
| Автор: batigoal 27.4.2006, 13:05 |
| Делай в своем сервлете после обработки редирект. Либо редирект можно делать на стороне клиента - через JavaScript. |
| Автор: Kars 27.4.2006, 13:10 | ||
Я делал через forward но что то не получалось , а через редирект это как |
| Автор: batigoal 27.4.2006, 13:13 | ||
Именно так. А что не получалось? |
| Автор: Kars 27.4.2006, 13:17 | ||
| Строка адреса не очищалась . Я делал так :
|
| Автор: batigoal 27.4.2006, 13:19 |
| Я так понимаю, что в данном случае ты делешь редирект с тем же самым запросом, т.е. на ту же страницу с теми же параметрами. А тебе нужно поменять URL. |
| Автор: Kars 27.4.2006, 13:25 |
| Конечно можно после окончания перейти на другой сервлет или страничку , но это меня не устраивает . Надо что бы после обработки он вызывал себя снова , но уже без параметров. |
| Автор: Goliath 27.4.2006, 13:50 |
| А не проще воспользоваться XMLHttpRequest (чистый AJAX)? |
| Автор: Kars 27.4.2006, 13:54 | ||
2 Goliath Если не сложно , можиш примерчик написать . Ну с использыванием XMLHttpRequest . |
| Автор: Kars 27.4.2006, 14:04 | ||||
| Я вот нашел кое что , аналог метода forward - sendRedirect. Но в отличие от первого sendRedirect заставляет браузер запросить другой URL . Как этот метод используется , я так и не нашол , если кто знает то киньте примерчик с его участием , буду очень признателен . Добавлено @ 14:08
Я так и делаю :
Index - это тот сервлет что принимает и обрабатывает . Но если параметр поступает пустой ("Index"); то сервлет просто показывает общую табличку . |
| Автор: batigoal 27.4.2006, 14:10 |
| Я так понял, что надо ему просто скормить строку адреса, и всё... |
| Автор: Kars 27.4.2006, 14:14 | ||
Вот собственно тот метод который выполняется первый при загрузке сервлета:
Чего и куда вы мне посоветуете вставить |
| Автор: katala 28.4.2006, 19:59 |
| я так понимаю например в теге <forward name="/change" path="/templates/account.vm" /> надо просто добавимть redirect="false"????? то есть : <forward name="/change" path="/templates/account.vm" redirect="false" /> |
| Автор: wadissimo 29.4.2006, 00:32 |
| вообще редирект это не аналог форварда. форвард переходит на страницу без ведома браузера(то есть когда ты нажмешь f5 у тебя выполнится сервлет с которого ты форвардился с его параметрами) редирект переход на новую страницу с запросом браузеру(здесь при нажатии f5 обновится только та страница, на которую ты редиректнулся. ) тебе нужен, как я понял, response.sendRedirect("...."); |
| Автор: Tirael 29.4.2006, 02:26 | ||||
Ну например так:
Когда ты делаешь foward браузер ничего не знает о том куда ты форвадишься , в случае с sendRedirect браузер знает об этом. Вообщем, как я понял, ты посылаешь сервлету строку с параметрами. Внутри сервлета делаешь forward и не понимаешь почему в строке браузера все тот же урл. Собственно, если так, то решение - заменить forward на sendRedirect ( и думать почему не работает следующий кусок кода Вообще, forward и include очень хорошие вещи, если ты хочешь скрыть собственно всю свою реализацию. Например, я из сервлета вызываю incude на jsp страницу. И пользователь ничего об этом не знает. Господа знатоки, 1. Вы пишите в строке адреса www.bla-bla.org/aaa/bbb.html Как сделать быстро и удобно так, чтобы никакого расширения не надо было. Например www.bla-bla.org/aaa/bbb Естественно, чтоб вызывалась эменно HTML (или какая другая) страница, а не сервлет. 2. У меня есть фильтр, который слушает все запросы на все сервлеты. Но мне хочется ( для удобства), чтоб этот фильтр слушал все запросы на все сервлеты, КРОМЕ одного (двух - трех). Конечно можно замапить фильтр на каждую страницу в отдельности, опустив те что мне не нужны. Но это как-то не гламурно ...... |
| Автор: katala 29.4.2006, 12:42 |
| ничего не выходит: есть класс public class SendMail extends AbstractVelocityAction { public ActionForward processActionLogic(VelocityContext context, ActionMapping mapping, ActionForm form, HttpServletRequest request) throws Exception { template = Velocity.getTemplate("mail.vm"); ... return mapping.findForward("/send"); } } потом в struts-config.xml <action path="/templates/mail" type="struts.action.client.SendMail" scope="request"> <forward name="/send" path="/templates/mail.vm" redirect="false" /> </action> вроде все нормально заполняю форму, отправляю данные(после нажатия кнопки) и появляется эта же страница то есть так как мне надо. но как только нажимаю F5 сразу выбрасывает на главную страницу а надо оставаться на этой. так в чем проблема???? |
| Автор: Kars 3.5.2006, 20:14 | ||
Спасибо всем за помощь , и полезные советы . Я решил этот вопрос несколько иначе , и ефективние .
Обяснять не буду там и так всё ясно |