Page Redirect & Post-Redirect-Get

Selamlar , 

   Post/Redirect/Get duplicate form submit probleminden korunmak için kullanılan bir design pattern yaklasımıdır.

   Bir form HTTP POST  ile server’a submit edildiginde ,daha sonrasinda kullanici sayfayi refresh ettiginde HTTP POST request tekrar submit edilir. Bu durum istenmeyen sonuclara neden olabilir , ornegin duplicate satin alma islemi gibi.

   Bu durumdan kacinmak icin Post/Redirect/Get pattern’i kullanilabilir.

   Yandaki şekilde problem açık bir şekilde görülmektedir. Kullanıcı/client ilgili formu doldurduktan sonra submite/göndere basarak formun database üzerine Insert işleminin gerçekleşmesini sağlar. Ve sayfa konfigürasyonu yapılır. Daha sonra kullanıcı/client tarafına  successful/başarılı cevabı döner. Bu işlemden sonra kullanıcı eğer sayfayı refresh yaparsa başta forma yazılan bütün bilgiler tekrardan post işlemi ile database üzerine ikinci defa yazılır. Buda istenmeyen bir durumdur.  

Yukarıdaki istenmeyen durumdan kurtulmak için  Post/Redirect/Get  patterns kullanılır.

Yandaki görsel  post/redirect/get kalımını göstermektedir.  Burada ise Client formu ilgili kısımlarını doldurur ve submite tıkladıktan sonra bu bilgiler database üzerine ınsert edilir. Insert işlemi gerçekleştikten sonra Redirect işlemi gerçekleştirilir. Redirect işleminden  sonra http get request isteğinde bulunulur. Bu istekten sonra database üzerindeki konfigürasyonlar tamamlanır. 

Kullanıcıya işlem başarılı dönüşü olur. Bu aşamadan sonra kullanıcı eğer sayfayı refresh etmek istese dahi tekrar post işlemi gerçekleşmek http get request gerçekleşerek var olan veriler üzerinden işlem yapılır ve istenmeyen durumdan kurtulmuş oluruz. 

Daha detaylı bilgi için kaynakça :

http://www.injavawetrust.com/jsf-08-page-forward-page-redirect-postredirectget/

Bilgi paylaştıkça artar gönderiyi paylaş