2011-06-14 23 views
2

當前正在編寫一個非常簡單的Web應用程序,我從頭開始構建框架(MVC設計)。 我沒有代碼問題,我的問題與設計有關。設計問題:使用ajax和Servlet的服務器表單驗證

我會解釋我想要做的事情。

規劃做到以下幾點:

在JSP我有用戶輸入和按鈕,將其提交一個HTML表單。

點擊提交按鈕:

AJAX調用會到初加工的Servlet,他們的任務是要經過每一個輸入放慢參數,並驗證它們(服務器端驗證)進行。
我想使用AJAX的原因,是因爲我希望能夠以顯示「輸入驗證後的錯誤消息」沒有實際刷新頁面

在初加工的Servlet:

如果有是任何輸入驗證錯誤(例如:錯誤的電子郵件格式,無效的日期等),然後用錯誤消息發送回父JSP的響應。

如果未遇到驗證錯誤,則將請求轉發給下一個Servlet,然後再處理請求並顯示下一個JSP。

我的問題:
假設表單輸入中沒有驗證錯誤。 (這是我的困境出現的地方)。

  1. 第一個JSP的ajax調用不會被掛在等待某種響應嗎?
  2. 可以,我們不打算回覆ajax呼叫的迴應嗎? (我假設這些請求最終可能會超時,但我只是覺得不舒服)

  3. 有沒有更好的方法來做我想做的事情?

PS:
我不想做的時候點擊提交按鈕服務器兩個單獨的呼叫。下面解釋

  1. Ajax調用1:驗證表單。 (發回成功或錯誤信息)
  2. 如果ajax調用返回成功,則通常提交表單。 (我會,如果我用這個方法這是低效的做驗證的兩倍。)
+1

我希望登錄將安全完成。 :) – 2011-06-14 12:23:55

回答

1
  1. 是的,這將留待掛。從Ajax調用中返回一個1或者其他東西,讓它進入綠燈

  2. 從服務器資源的角度來看,沒問題,但是用戶會一直掛着直到超時。非常不好的做法。

  3. Struts或Spring驗證層將完全按照您的要求進行操作。大多數主要框架提供此功能

1

不要重新發明輪子,別人已經解決了這個問題,並且做得很好。

您可以使用jQuery to perform form validation;它支持基於瀏覽器的驗證(數字/字母/長度/正則表達式等),您還可以通過將表單內容發送到Web服務並偵聽響應來獲得服務器端驗證。

它也是高度推薦在服務器側,當表單提交,因爲所有的基於瀏覽器的/ AJAX驗證可以通過簡單地禁用JavaScript或通過手動構建表單的POST請求被旁路以執行相同的驗證。

+0

是的我只是爲了教育目的和編碼的樂趣。 :) 感謝您的答覆。 – 2011-06-14 12:59:41