1.RequestDispatcher.forward()
bekerja di sisi server. Saat menggunakan forward(), mesin Servlet meneruskan permintaan HTTP dari Servlet atau JSP saat ini ke Servlet, JSP, atau file HTML biasa lainnya, yaitu formulir Anda dikirimkan ke a.jsp, forward() digunakan di a.jsp untuk mengalihkan ke b.jsp. Saat ini, semua informasi yang dikirimkan oleh formulir dapat diperoleh di b.jsp, dan parameter diteruskan secara otomatis.
Namun, forward() tidak dapat mengalihkan ke file jsp dengan bingkai. Ia dapat mengalihkan ke file html dengan bingkai. Pada saat yang sama, forward() tidak dapat diteruskan dengan parameter di akhir, seperti servlet?name=frank .Jika ini tidak berhasil, Anda dapat meneruskan respons dalam program.setAttribute("name",name) untuk diteruskan ke halaman berikutnya.
URL bilah alamat browser tetap tidak berubah setelah
pengalihan
Konten kode biasanya digunakan di servlet, bukan jsp.
public void doPost (permintaan HttpServletRequest, respons HttpServletResponse)
melempar ServletException,IOException ...{
respon.setContentType("teks/html; charset=gb2312");
ServletContext sc = getServletContext();
PermintaanDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //Halaman yang diarahkan
rd.forward(permintaan, tanggapan);
}
2.respons.sendRedirect()
Ia bekerja pada browser pengguna. sendRedirect() dapat meneruskan parameter, seperti servlet?name=frank, ke halaman berikutnya.
Setelah pengalihan, URL halaman yang dialihkan akan muncul di bilah alamat browser.
Contoh: Redirect di servlet
Konten kode
public void doPost(permintaan HttpServletRequest, respons HttpServletResponse)
memunculkan ServletException,IOException ...{
respon.setContentType("text/html; charset=gb2312");
respon.sendRedirect("/index.jsp"
}
Karena respon adalah objek implisit di halaman jsp, respon.sendRedirect() dapat digunakan untuk langsung mengimplementasikan relokasi di halaman jsp.
Catatan:
(1). Saat menggunakan respon.sendRedirect, tidak boleh ada keluaran HTML di depan.
Ini tidak mutlak. Tidak ada keluaran HTML sebenarnya berarti tidak ada HTML yang dapat dikirim ke browser. Faktanya, server saat ini memiliki mekanisme cache, biasanya 8K (maksud saya JSP SERVER Artinya, kecuali Anda mematikan cache, atau Anda menggunakan out.flush() untuk memaksa penyegaran, maka sebelum menggunakan sendRedirect, sejumlah kecil). keluaran HTML juga diperbolehkan.
(2) Setelah .response.sendRedirect, harus diikuti dengan pengembalian;
kita sudah tahu bahwa respon.sendRedirect dialihkan melalui browser, jadi tidak akan ada tindakan sebenarnya hingga pemrosesan halaman selesai. Sekarang setelah Anda melakukan kemudi, apa pentingnya hasil akhir? Dan ada kemungkinan bahwa kemudi gagal karena kegagalan berikutnya.
Membandingkan:
(1).Request Dispatcher.forward() adalah pengalihan kontrol dalam wadah, dan alamat yang dialihkan tidak akan ditampilkan di bilah alamat browser klien;
(2).response.sendRedirect() adalah lompatan lengkap. Browser akan mendapatkan alamat lompatan dan mengirim ulang tautan permintaan. Dengan cara ini, alamat tautan setelah lompatan dapat dilihat di bilah alamat browser.
Yang pertama lebih efisien. Ketika yang pertama dapat memenuhi kebutuhan, coba gunakan metode RequestDispatcher.forward().
Catatan: Dalam beberapa kasus, misalnya, jika Anda perlu melompat ke sumber daya di server lain, Anda harus menggunakan Metode HttpServletResponse.sendRequest().
3.
Bagian dasarnya diimplementasikan oleh RequestDispatcher, sehingga memiliki jejak metode RequestDispatcher.forward(). Jika ada banyak output sebelum
Catatan juga: tidak dapat mengubah alamat browser. Penyegaran akan mengakibatkan pengiriman berulang.
4. Ubah atribut Lokasi pada header HTTP menjadi pengalihan.
Arahkan ulang halaman dengan langsung memodifikasi bilah alamat.
Kode file jspnya seperti berikut:
Isi kode: 5. JSP menerapkan pengalihan otomatis ke halaman lain setelah berada di halaman tertentu selama beberapa detik.
Dalam file html, kode berikut:
Artinya: Setelah 5 menit, halaman yang Anda jelajahi akan otomatis berubah menjadi halaman target.html. 300 dalam kode adalah waktu tunda penyegaran dalam hitungan detik. target.html adalah halaman target yang ingin Anda arahkan. Jika halaman ini, maka secara otomatis akan menyegarkan halaman ini.
Seperti yang terlihat di atas, Anda dapat menggunakan setHeader untuk secara otomatis mengalihkan ke halaman lain setelah berada di halaman selama beberapa detik.
Kode kunci:
Konten kode
<%
respon.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
respon.setHeader("Lokasi",newLocn);
%>
String konten=stayTime+";URL="+URL;
respon.setHeader("REFRESH",isi);