Несложное сервлетное веб приложение на джаве. Ничего подобного struts и jsp не используется. В качестве веб сервера используется TomCat. Столкнулись с тем, что не работает sendRedirect. Страница грузится при прямом запросе, а при перенаправлении на нее выдается сообщение об ошибке — The requested URL could not be retrieved
с чем это может быть связано?
Здравствуйте, Alexander Karavaev, Вы писали:
AK>Несложное сервлетное веб приложение на джаве. Ничего подобного struts и jsp не используется. В качестве веб сервера используется TomCat. Столкнулись с тем, что не работает sendRedirect. Страница грузится при прямом запросе, а при перенаправлении на нее выдается сообщение об ошибке — The requested URL could not be retrieved AK>с чем это может быть связано?
Здравствуйте, Karrales, Вы писали:
K>предлагаю попробовать вместо sendRedirect метод forward. sendRedirect вроде как морально устарел.
Что за догадки? Основания?
просто у двух методов разная семантика. forward — делает перенаправление запроса на серверной стороне прозрачно для клиента, sendRedirect — на клиентской (говорит клиенту послать запрос на дугой URL). В первом случае обоими ресурсами используется один запрос, во втором — создается новый.
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Karrales, Вы писали:
K>>предлагаю попробовать вместо sendRedirect метод forward. sendRedirect вроде как морально устарел.
L>Что за догадки? Основания?
L>просто у двух методов разная семантика. forward — делает перенаправление запроса на серверной стороне прозрачно для клиента, sendRedirect — на клиентской (говорит клиенту послать запрос на дугой URL). В первом случае обоими ресурсами используется один запрос, во втором — создается новый.
Однако после замены sendRedirect на forward всё заработало. Большое спасибо.
сервлет1 -> сервлет2
разница:
— sendRedirect отсылает на клиент код 302 — The requested resource resides temporarily under a different URI — и клиент отсылает новый http запрос на сервер твоему второму сервлету
— forward — эквивалентен вызову метода service() второго сервлета из метода service() первого сервлета на сервере (подробнее читай о том, чем отличается forward от include и обрати внимание на то, что Forward may not be called if data has been sent to the client)
Здравствуйте, Alexander Karavaev, Вы писали:
AK>Несложное сервлетное веб приложение на джаве. Ничего подобного struts и jsp не используется. В качестве веб сервера используется TomCat. Столкнулись с тем, что не работает sendRedirect. Страница грузится при прямом запросе, а при перенаправлении на нее выдается сообщение об ошибке — The requested URL could not be retrieved AK>с чем это может быть связано?
проблема в том что вы наверное до этого заполнили информацию до sendRedirect или использовали где то flushBuffer();
ну например вы понаписали out.println();....и вдруг вы решили sendRedirect сделать...
советую делать проверку при начале программы в самом начале
Jaxx: начал недавно учить веб-программирование, вот никак не могу понять разницу между редиректом и форвардом
Andronix: вот смотри, представь себе ты вышел к ларьку купить бутылку водки... при этом продавщица сказала тебе, что водка закончилась, и послала тебя в другой киоск — это типа редирект.
Jaxx: ну а форвард?
Andronix: а форвард, это когда продавщица сказала, что щас мол поищет, а сама незаметно вышла из ларька, сбегала через дорогу в соседний киоск, купила там водки, потом так же незаметно вернулась и перепродала тебе эту бутылку еще даже с наценкой
Здравствуйте, mihhon, Вы писали:
M>сервлет1 -> сервлет2 M>разница: M>- sendRedirect отсылает на клиент код 302 — The requested resource resides temporarily under a different URI — и