Різниця між прямим та перенаправленням

Є кілька екранів і сервлетів, які разом утворюють веб-додаток на базі Java. JSP передає управління з одного сервлета в інший сервлет або JSP, використовуючи два способи - вперед та перенаправлення. Метод Forward пересилає запит з одного сервлета на інший ресурс у веб-додатку, і цей ресурс може бути іншим сервлетом, сторінкою JSP або файлом HTML.

З іншого боку, метод перенаправлення перенаправляє запит на іншу програму. Це неможливо зробити методом переадресації. Якщо переспрямування потрапляє на інший ресурс у тій же програмі, він використовує іншу URL-адресу, ніж оригінальна URL-адреса запиту. Якщо ви не хочете відповідати на запит, ви можете перенаправити запит на іншу URL-адресу, а браузер потім надішле новий запит на вказану вами URL-адресу. У цьому дописі висвітлено декілька відмінностей, що детально пояснюють два методи.

Що вперед?

У веб-системах або додатках часто виникає потреба в передачі контролю між різними ресурсами або JSP. Наприклад, якщо ви хочете оформити замовлення з сайту електронної комерції, вам потрібно спочатку зареєструватися, перш ніж продовжувати. Якщо ви ще не зареєстровані в їхній системі, кошик може перенести контроль у форму JSP, яка відповідає за процес реєстрації. Для прямої дії використовується спеціально для цієї мети. Він використовується для пересилання запиту з одного JSP на інший або інший ресурс в одному контексті.

Що таке перенаправлення?

Цей метод також використовується для переадресації HTTP-запитів, але на відміну від переадресації, це двоетапний процес, коли переадресація відбувається на стороні клієнта взагалі на інший додаток. Метод переадресації перенаправляє користувача до нової URL-адреси. Браузер клієнта автоматично робить новий запит за URL-адресою, вказаною в заголовку переадресації, який надходить від сервера. Це вимагає зворотного зв'язку з клієнтом, таким чином, це відносно повільніше, ніж перехід.

Різниця між вперед та перенаправленням

Опис Forward Vs. Перенаправлення

Метод forward () використовується для пересилання запиту від одного JSP до іншого або з одного JSP на сервлет або з одного JSP на інший ресурс у веб-додатку. Контроль передається контейнером внутрішньо, і браузер / клієнт не залучаються до процесу. Метод переадресації оголошено у RequestDispatcher. Метод SendRedirect () оголошено в HttPServletResponse і використовується для перенаправлення клієнтського запиту на іншу URL-адресу, доступну на іншому сервері або контексті. За допомогою переадресації ви можете повністю перенаправити браузер на іншу програму.

Залучення клієнта до Forward Vs. Перенаправлення

Однією з ключових відмінностей між двома методами є те, що веб-контейнер обробляє всі процеси у разі переадресації (), а URL-адреса не змінюється в браузері клієнта, тому клієнт / браузер не задіяний, залишаючи їх повністю невідомими про те, що дія вже відбулася. У разі SendRedirect () метод встановлює відповідні заголовки та вміст тіла, щоб перенаправити запит на іншу URL-адресу, і браузер подбає про надсилання нового запиту на URL-адресу, яку бачить клієнт, коли URL-адреса змінюється в браузері..

Контроль виконання

Коли метод forward () виконується в момент запиту, поточний запит пересилається на іншу сторінку JSP і обробка поточного JSP припиняється. Запит може бути пересланий на сервлет, написаний мовою програмування Java, або на статичну сторінку HTML. Запит SendRedirect () просто повідомляє браузеру перейти до іншої URL-адреси, надсилаючи контроль виконання за межами веб-програми. Він використовує двоетапний процес для вказівки URL-адреси браузера, щоб зробити ще один запит, який передає керування клієнту.

Швидкість

Форвард () працює на сервері і виконує швидше, ніж SendRedirect (). Перенаправлення має пройти через браузер, а потім чекати, поки браузер зробить новий запит HTTP. Перенаправлення змушує сервер надсилати код статусу відповіді 30TP HTTP із заголовком місцеположення, що містить нову URL-адресу в браузері, і після того, як браузер отримав код статусу 302, він робить новий запит на URL-адресу, знайдену в заголовку місцезнаходження. Для цього потрібне зворотне спілкування з клієнтом, що робить його порівняно повільнішим, ніж прямий ().

Вперед проти перенаправлення: порівняльна діаграма

Підсумок Forward Vs. Перенаправлення

Вивчення різниці між методами переадресації та переадресації є однією з найважливіших частин для розробників Java. Хоча контролер може виконувати або переадресацію, або метод перенаправлення в кінці обробки запиту, у них є власний набір застосувань. Більшу частину часу ви б використовували метод forward (), оскільки це незначно швидше, ніж SendRedirect (), який насправді вимагає зворотного зв'язку з клієнтом, роблячи його повільніше, ніж прямий. Ну, за допомогою переспрямування ви можете направити браузер на іншу програму. Це неможливо зробити вперед. Коротше кажучи, форвард найкраще працює, коли один компонент повинен виконувати ділову логіку та ділитися результатами з іншим компонентом, тоді як переадресація працює найкраще, коли клієнт повинен бути перенаправлений з однієї сторінки на іншу.