Last Updated on 6 years by Mas Herdi
Di dalam pemrograman web menggunakan JSP/Java Server Pages dikenal istilah redirect, yang berfungsi untuk mengarahkan pengguna ke halaman lain. Redirect di JSP ada dua macam, yaitu server side redirect dan client side redirect.
Server side redirect, biasanya menggunakan sintaks “forward”, adalah operasi redirect yang dijalankan pada sisi server, dan tidak ada perubahan apa-apa pada klien/browser. Misalnya, ketika kita berada di halaman1.jsp dan kemudian server me-redirect kita ke halaman2.jsp dengan menggunakan “forward”, maka url di browser kita akan tetap menampilkan halaman1.jsp.
Sedangkan, client side redirect, menggunakan sintaksis “sendRedirect”. Operasi redirect ini dilakukan di sisi klien, sehingga apabila halaman1.jsp redirect ke halaman2.jsp, maka address bar pada browser akan berubah untuk menunjukkan halaman selanjutnya(halaman2.jsp).
Penggunaan server side redirect/client side redirect bergantung pada bagaimana kamu menginginkan perilaku tertentu pada browser. Operasi server side redirect lebih cepat, karena semua pemrosesan terjadi di sisi server. Sedangkan client side redirect mengupdate browser history, sehingga pengguna masih bisa meng-klik tombol “back” pada browser. Lebih lengkapnya, ada pada tabel di bawah.
Perbedaan antara client side dan server side redirect
Forward() server side
|
SendRediret() client side
|
Digunakan untuk mentransfer request ke sumber lain yang masih berada di satu server untuk pemrosesan lebih lanjut.
|
Sedangkan sendRedirect() digunakan untuk mentrasfer request ke sumber lain yang berada di domain/server berbeda untuk pemrosesan lebih lanjut.
|
Web container/web server menangani semua request ini secara internal, sehingga browser tidak dilibatkan
|
Ketika kamu menggunakan senRedirect, container/server mentransfer request ke klien/browser sehingga url yang diberikan dalam sendRedirect method terlihat sebagai request baru oleh klien.
|
Ketika method forward dipanggil pada requestDispatcher object, kita memberikan objek request dan response, sehingga request yang lama masih ada, walaupun itu adalah sumber baru yang akan memproses request kita.
|
Dalam kasus sendRedirect, request dan response lama akan dihapus, karena method ini diperlakukan sebagai request baru oleh browser
|
Secara visual, kita tidak bisa melihat alamat url yang di-forward. Itu semua berjalan di sisi server |
Di browser address bar kita masih bisa melihat alamat url baru setelah kita di-redirect
|
Forward() method lebih cepat daripada sendRedirect()
|
SendRedirect lebih lambat karena browser diharuskan memproses dua buah request, yaitu memproses request baru dan menghapus object request lama.
|
Pada redirect menggunakan forward, data yang diberikan kepada sumber baru dilakukan di sisi server menggunakan request.setAttribut()
|
Tapi pada sendRedirect, jika kita ingin memberikan data baru, kita harus menyimpannya di session atau menambahkannya pada URL. |
Implementasi
>>> Menggunakan metode sendRedirect() / client side
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> <% String newUrl = "http://google.com"; response.sendRedirect("newUrl"); %> </body> </html>
>>> Menggunakan metode forward() / server side
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> <% String newUrl = "http://google.com"; request.getRequestDispatcher("newUrl").forward(request, response); %> </body> </html>
Kedua metode tersebut, baik forward() maupun sendRedirect() bisa juga diimplementasikan pada servlet( javax.servlet.http.HttpServlet), namun akan dibahas lain kali. :-p
Ada satu cara lagi untuk redirect, ketika kita ingin me-redirect pengguna ke halaman baru disertai delay waktu, misalnya redirect setelah tiga detik. Gunakan cara di bawah ini.
JSP Redirect with Timer Delay
<html> <% response.setHeader("Refresh","3; url=http://google.com"); %> </html>
Dimana angka 3 adalah delay waktu untuk redirect, bisa diubah sesuka kalian. 🙂
Semoga membantu.
Nah, yang pertama saya cek ke blog Anda! Kami adalah sekelompok relawan dan memulai sebuah inisiatif baru dalam sebuah komunitas regional di relung yang sama persis. Blog Anda kepada kami informasi berharga untuk bekerja pada. Anda telah melakukan tugas yang luar biasa!
Its Kesenangan untuk memahami blog Anda. Artikel di atas cukup luar biasa, dan aku benar-benar menikmati membaca blog Anda dan poin yang Anda dinyatakan. Saya sangat suka muncul kembali secara khas, posting banyak lainnya yang berjarak topik. Terima kasih untuk berbagi … terus menulis!
Hahah , laptop saya jatuh ketika saya browsing http://www.twoh.web.id terakhir kali aku berada di sini. Dan selama 2 bulan saya telah mencari weblog ini , sangat bersyukur aku menemukan sekali lagi ! : D