Masalah:
Dalam penapis Java Servlet, cuba mengakses berbilang Parameter permintaan HTTP yang diambil daripada badan permintaan POST menyebabkan parameter kedua tidak tersedia. Ini berlaku kerana menggunakan parameter memakannya untuk keseluruhan permintaan.
Soalan:
Adakah terdapat cara untuk membaca parameter permintaan tanpa menggunakan parameter tersebut?
Jawapan:
Alternatif Penyelesaian:
Menggunakan aspek untuk mencipta komponen pemintas tersuai boleh menjadi penyelesaian alternatif, membolehkan berbilang bacaan tanpa melibatkan rantai penapis dan menawarkan kecekapan yang lebih baik.
Penyelesaian HttpServletRequestWrapper Diperluaskan :
Untuk mengekalkan parameter badan permintaan untuk berbilang bacaan dalam penapis rantaian, lanjutkan kelas HttpServletRequestWrapper dan gunakan cache aliran input:
Penggunaan Penapis:
Balut permintaan asal dalam kelas lanjutan sebelum meneruskannya melalui rantai penapis:
Pendekatan ini membolehkan berbilang bacaan melalui getInputStream(), getReader(), dan kaedah pengambilan parameter.
Kemas kini untuk ServletInputStream yang Lebih Baharu:
Laksanakan kaedah tambahan isReady(), setReadListener(), dan isFinished() dalam cache pelaksanaan strim untuk mematuhi antara muka ServletInputStream yang dikemas kini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Parameter Permintaan HTTP POST Berbilang Kali Tanpa Menggunakannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!