kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 MemoryLeak
MemoryLeak
Question

Bagaimana cara menghindari pengiriman ulang di jsp saat refresh?

Saya sedang menulis sebuah program, tetapi saya mengalami masalah: ketika saya me-refresh halaman jsp, sistem akan secara otomatis mengirimkan ulang seluruh halaman, dan saya tidak tahu bagaimana cara menghindarinya, adakah yang bisa membantu saya?

20 2009-08-23T01:17:03+00:00 3
Pemrograman
jsp
submit
refresh
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Todd Owen
Todd Owen
23 Agustus 2009 в 2:26
2009-08-23T02:26:39+00:00
Lebih
Sumber
Sunting
#9399577

Berikut ini adalah penjelasan mengenai masalahnya...

Mengklik tombol "kirim" pada formulir akan mengirimkan permintaan ke server web, yang mencakup semua data yang dimasukkan pada formulir. Tidak hanya URL tetapi juga data formulir adalah bagian dari permintaan, dan permintaan ini diingat oleh browser. Jika pengguna mengklik "refresh", browser akan mengulangi permintaan tersebut, mengirimkan URL yang sama dan data formulir ke server web lagi.

Tetapi formulir dapat dikirimkan dengan dua cara yang berbeda, GET atau POST, tergantung pada atribut "metode" dari tag "formulir". Ada sebuah konvensi bahwa permintaan GET tidak memiliki efek samping; permintaan ini hanya mengambil data tetapi tidak membuat perubahan apa pun pada basis data. Di sisi lain, jika sebuah permintaan mengubah data, maka harus selalu menggunakan permintaan POST. Seperti yang saya katakan, ini hanya konvensi, dan tidak banyak perbedaan teknis di antara keduanya, tetapi perbedaan yang sangat penting adalah browser akan memperingatkan pengguna jika mereka mencoba mengulang POST - mengklik "refresh" akan memunculkan kotak dialog yang memperingatkan pengguna bahwa hal ini dapat menyebabkan operasi diulang, dan mengkonfirmasi bahwa mereka benar-benar ingin mengirim ulang. Browser tidak menampilkan konfirmasi ini ketika me-refresh permintaan GET.

Apakah formulir Anda menggunakan metode GET, seperti yang dicurigai oleh @mk? Jika iya, mengubahnya menjadi POST adalah solusi yang paling sederhana, karena ini setidaknya berarti pengguna akan diperingatkan jika mereka mencoba me-refresh.

Tetapi solusi yang lebih baik adalah idiom POST+REDIRECT+GET yang disarankan oleh @cletus. Ini membagi pembaruan basis data (POST) dan tampilan (GET) menjadi dua operasi. Mengklik refresh pada browser hanya mengulangi GET, yang tidak memiliki efek samping.

21
0
 cletus
cletus
23 Agustus 2009 в 1:46
2009-08-23T01:46:43+00:00
Lebih
Sumber
Sunting
#9399576

Ungkapan yang Anda inginkan di sini adalah salah satunya:

  1. POST+REDIRECT+GET; atau
  2. Pengiriman formulir AJAX.

POST+REDIRECT+GET bekerja seperti ini:

  1. Pengiriman formulir menggunakan metode POST;
  2. Ketika JSP atau (semoga) servlet menerima POST, ia melakukan apa pun yang perlu dilakukan (menyimpan atau memperbarui data atau apa pun);
  3. Servlet atau JSP kemudian menggunakan header Location: Header HTTP untuk mengarahkan pengguna ke apa yang mungkin merupakan URL yang sama.

Manfaat dari hal ini adalah bahwa mengklik muat ulang tidak akan mengirim ulang formulir. Juga jika Anda mengklik tombol kembali pada browser, Anda tidak akan diminta untuk mengisi kotak dialog "kirimkan lagi".

Berikut ini adalah contoh JSP dari hal ini.

Pengiriman AJAX berarti bahwa alih-alih mengirimkan formulir kembali ke server dalam arti tradisional, Anda membuat permintaan AJAX kembali ke server dengan data formulir. Pengiriman tersebut melakukan apa yang seharusnya dilakukan. Mengklik reload hanya akan memuat ulang halaman. Ini tidak akan mengirim ulang permintaan AJAX.

Post/Redirect/Get - Wikipedia
en.wikipedia.org
13
0
 mk.
mk.
23 Agustus 2009 в 1:32
2009-08-23T01:32:07+00:00
Lebih
Sumber
Sunting
#9399575

Jangan gunakan GET untuk mengirimkan atau mengubah data. Gunakan POST sebagai gantinya. Anda harus mengubah formulir Anda untuk membaca

<form action="test.jsp" method="get">

Lihat http://www.google.com/search?q=get+post untuk info lebih lanjut.

(Pertanyaan Anda juga kurang jelas - apakah yang Anda maksudkan adalah menyegarkan kembali di peramban, atau di kontainer (misalnya Tomcat)? Apa yang Anda maksud dengan mengirim ulang halaman? Halaman tidak bisa dikirim, hanya formulir yang bisa. Sistem yang mana? Saya sudah bisa menebak apa yang Anda maksud, jika Anda bermaksud lain, beritahu kami).

0
0
Related communities 1
JavaScript Indonesia
JavaScript Indonesia
16 345 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 6 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 2 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
KO
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi