Này, bạn đang gửi một hình thức, mà ảnh hưởng đến cơ sở dữ liệu của bạn (thêm ghi/xóa chúng/cập nhật) và đây là cách yêu cầu của bạn trông giống như:Bạn có luôn ĐỔI MỚI sau POST? Nếu có, Làm thế nào để bạn quản lý nó?
POST/application/action = cập nhật
Bây giờ, nói rằng, bạn đã hoàn tất cập nhật của mình, vì vậy bạn muốn đưa người dùng đến trang chủ.
Response.sendRedirect/application/action = home
Điều này làm việc tuyệt vời. Người dùng được gửi chuyển hướng sau POST, vì vậy ngay cả khi người dùng cố gắng làm mới trang bằng cách nhấn F5, bạn vẫn tốt. Tuy nhiên, điều này sẽ không hoạt động nếu bạn đã làm điều này:
requestDispatcher.forward (/ application/action = nhà)
Cho rằng có một kịch bản mà bạn có để hiển thị các loại khác nhau của các thông báo lỗi/thành công sau khi bạn được thực hiện với bản cập nhật của bạn, bạn có nhiều khả năng thực hiện chuyển tiếp sau POST. Trong trường hợp như vậy, làm thế nào để bạn tránh các hành động cập nhật xảy ra hai lần?
Tôi thấy khá thú vị rằng nhiều trang web an toàn (ngân hàng)/cổng thanh toán có xu hướng thông báo cho người dùng bằng cách đặt văn bản trên màn hình, chẳng hạn như "Vui lòng không nhấn nút quay lại/làm mới".
Không có cách nào tốt hơn để xử lý việc này? Khác với yêu cầu người dùng không nhấn các nút này? Khi tôi kiểm tra lần cuối, có một cái gì đó được gọi là 'Bộ đệm đáp ứng dọc'. Bộ lọc sẽ xác định tính duy nhất của yêu cầu của bạn trong một phiên và cố gắng gửi phản hồi được lưu trong bộ nhớ cache nếu yêu cầu trùng lặp. Có cách nào đơn giản hơn để giải quyết vấn đề kinh điển này không?
Đây là liên kết đến giải pháp bộ nhớ cache phản hồi theo chiều dọc mà tôi đã nói về: http://www.fingo.info/en/articles/_1.html. Tôi, Tuy nhiên, không chắc chắn như thế nào này thực sự hoạt động.
Khi tôi nghĩ về nó, tôi nhận thấy rằng stackoverflow, làm một cái gì đó tương tự. Khi bạn chỉnh sửa bài đăng của mình và lưu thay đổi, bạn sẽ được chuyển hướng trở lại bài đăng của mình. Bây giờ, điều gì sẽ xảy ra nếu bạn hiển thị thông báo "Các chỉnh sửa của bạn đã thành công"? (Tôi biết nó có vẻ hơi què, nhưng điều này thường được gọi là 'trải nghiệm duyệt web cho những người sử dụng câm không bị thách thức trực quan'). Để hiển thị thông báo này, bạn phải biết rằng lưu của bạn đã trôi qua tốt, ngoài việc gửi một chuỗi dài thực sự trong chuỗi truy vấn của bạn và chuyển hướng, cách duy nhất bạn sẽ làm là FORWARD? – Jay