Struts2實現避免表單重複提交

來源:互聯網
上載者:User

在平時的開發過程中,經常可以遇到表單重複提交的問題,如做一個註冊頁面,如果表單重複提交,那麼一個使用者就會註冊多次。首先來看看引起表單重複提交的原因。

在頁面跳轉的時候,有兩種類型,請求轉寄和重新導向

所謂請求轉寄是在伺服器端進行跳轉,對使用者是透明的,此時瀏覽器中的地址不會發生改變

重新導向是在用戶端發生跳轉,跳轉時候瀏覽器中的地址欄會發生改變

如果我們在註冊時,使用了請求轉寄,那麼當我們重新整理頁面時,就會引起表單的重複提交。

 

現在我們需要實現這樣的一個需求:想資料庫中添加一條記錄,添加成功後在另外一個頁面中顯示資料庫中所有的記錄。

 

在Struts2中的struts.xml中,result標籤的type預設值是dispatcher,(請求轉寄),要實現以上的功能,肯定不能使用預設值,我們需要將其值設為redirectAction(重新導向到某一Action),也就是說重一個Action跳轉到另外一個Action,此時瀏覽器中的地址是第二個Action,結合到上面的需求,我們可以再第一個Action中將記錄添加到資料庫中,然後在第二個Action中將資料讀取出來。以後每次重新整理,那麼只會執行第二個Action

 

到struts-default.xml中找到與redirectionAction對應的一個類,ServletActionRedirectResult

 

從Api文檔中發現找出裡面有一個欄位叫做actionName,指定我們需要跳轉的Action

配置方法如下:

<action name="add" class="com.action.AddAction">
   <result name="success" type="redirectAction">
   <param name="actionName">show_show</param>
    </result>
</action>

 

至於第二個Action的配置方法,相信學過struts2的同學都會。在此不在詳述。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.