Implementasi Redirect pada JSP (Java Server Pages)

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.





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

3 Comments

  1. russian guy February 22, 2013
  2. frances March 12, 2013
  3. random guy June 5, 2013

Leave a Reply

Do NOT follow this link or you will be banned from the site!