Perbezaan antara ke hadapan dan mengalihkan
- 2134
- 377
- David Collier
Terdapat pelbagai skrin dan servlet yang bersama -sama membentuk aplikasi web berasaskan Java. JSP melepasi kawalan dari satu servlet ke servlet lain atau JSP menggunakan dua kaedah - ke hadapan dan mengalihkan. Kaedah hadapan meneruskan permintaan dari satu servlet ke sumber lain dalam aplikasi web dan sumber ini boleh menjadi fail servlet, JSP, atau html yang lain.
Kaedah redirect, sebaliknya, mengalihkan permintaan ke aplikasi yang berbeza. Anda tidak boleh melakukan ini dengan kaedah ke hadapan. Sekiranya redirect mencecah sumber yang berbeza dalam aplikasi yang sama, maka ia menggunakan url yang berbeza daripada url permintaan asal. Sekiranya anda tidak mahu menjawab permintaan, anda boleh mengalihkan permintaan ke URL yang berbeza dan penyemak imbas kemudian menghantar permintaan baru kepada URL yang disediakan oleh anda. Catatan ini menyoroti beberapa perbezaan yang menerangkan kedua -dua kaedah secara terperinci.
Apa yang ke hadapan?
Dalam sistem atau aplikasi berasaskan web, seringkali keperluan untuk memindahkan kawalan antara sumber yang berbeza atau JSP. Contohnya, jika anda ingin membuat pesanan dari tapak e-dagang, anda perlu mendaftar terlebih dahulu sebelum meneruskan. Sekiranya anda belum berdaftar dengan sistem mereka, keranjang belanja mungkin perlu memindahkan kawalan ke borang JSP yang bertanggungjawab untuk proses pendaftaran. Tindakan ke hadapan digunakan khusus untuk tujuan ini. Ia digunakan untuk mengemukakan permintaan dari satu JSP ke sumber lain atau sumber lain dalam konteks yang sama.
Apa itu Redirect?
Kaedah ini juga digunakan untuk mengemukakan permintaan HTTP tetapi tidak seperti ke hadapan, ia adalah proses dua langkah di mana redirect berlaku di sisi klien ke aplikasi yang berbeza sama sekali. Kaedah redirect mengalihkan pengguna ke URL baru. Penyemak imbas pelanggan secara automatik membuat permintaan baru pada URL yang ditentukan dalam tajuk Redirect yang datang dari pelayan. Ia memerlukan komunikasi perjalanan dengan pelanggan, oleh itu ia agak perlahan daripada ke hadapan.
Perbezaan antara ke hadapan dan mengalihkan
Penerangan ke hadapan vs. Redirect
Kaedah ke hadapan () digunakan untuk mengemukakan permintaan dari satu JSP ke yang lain atau dari satu JSP ke servlet, atau dari satu JSP ke sumber lain dalam aplikasi web. Kawalan diluluskan secara dalaman oleh bekas dan penyemak imbas/pelanggan tidak terlibat dalam proses. Kaedah ke hadapan diisytiharkan dalam RequestDispatcher. Kaedah SendRedirect () diisytiharkan dalam httpservletResponse dan digunakan untuk mengalihkan permintaan klien ke URL yang berbeza yang tersedia pada pelayan atau konteks yang berbeza. Dengan pengalihan, anda boleh mengalihkan penyemak imbas ke aplikasi yang berbeza sama sekali.
Penglibatan pelanggan di hadapan vs. Redirect
Salah satu perbezaan utama antara kedua -dua kaedah adalah bahawa kontena web mengendalikan semua proses secara dalaman dalam hal ke hadapan () dan URL tidak berubah dalam penyemak imbas klien, jadi klien/pelayar tidak terlibat meninggalkan mereka sepenuhnya tidak menyedari bahawa Tindakan sudah berlaku. Sekiranya SendRedirect (), kaedah menetapkan tajuk dan kandungan badan yang sesuai untuk mengalihkan permintaan ke URL yang berbeza dan penyemak imbas menjaga menghantar permintaan baru ke URL yang dapat dilihat oleh klien sebagai perubahan url dalam penyemak imbas.
Kawalan pelaksanaan
Apabila kaedah ke hadapan () dilaksanakan pada masa permintaan, permintaan semasa akan dihantar ke halaman JSP yang lain dan pemprosesan JSP semasa ditamatkan. Permintaan boleh dikemukakan kepada servlet yang ditulis dalam bahasa pengaturcaraan Java, atau ke halaman HTML statik. Permintaan SendRedirect () hanya memberitahu penyemak imbas untuk pergi ke url yang berbeza, menghantar kawalan pelaksanaan di luar aplikasi web. Ia menggunakan proses dua langkah untuk mengarahkan URL pelayar untuk membuat permintaan lain yang memindahkan kawalan kepada klien.
Kelajuan
Ke hadapan () beroperasi di dalam pelayan dan melaksanakan lebih cepat daripada sendredirect (). Redirect harus melalui penyemak imbas dan kemudian tunggu penyemak imbas membuat permintaan HTTP baru. Redirect menjadikan pelayan menghantar kod status respons HTTP 302 dengan tajuk lokasi yang mengandungi URL baru ke penyemak imbas, dan selepas penyemak imbas menerima kod status 302, ia membuat permintaan baru ke URL yang terdapat di tajuk lokasi. Ini memerlukan komunikasi perjalanan dengan pelanggan yang menjadikannya lebih perlahan daripada ke hadapan ().
Forward vs. Redirect: Carta Perbandingan
Ringkasan Forward vs. Redirect
Mempelajari perbezaan antara kaedah hadapan dan redirect adalah salah satu bahagian yang paling penting bagi pemaju Java. Walaupun pengawal boleh melakukan sama ada kaedah ke hadapan atau redirect pada akhir memproses permintaan, mereka mempunyai penggunaan sendiri. Kebanyakan masa, anda akan menggunakan kaedah ke hadapan () kerana ia sedikit lebih cepat daripada SendRedirect (), yang sebenarnya memerlukan komunikasi perjalanan dengan pelanggan yang menjadikannya lebih perlahan daripada ke hadapan. Nah, dengan pengalihan, anda boleh mengarahkan penyemak imbas ke aplikasi yang berbeza. Ini tidak dapat dilakukan dengan ke hadapan. Ringkas.