2014-02-11 96 views
0

多用戶登錄頁面我有由具有3個字段的登錄頁即index.jsp的:創建使用Servlet和JSP

1.>用戶類型選擇標記(它包括管理員,EMP,PROJ統籌, PROJ。經理) 2>用戶名文本框 3>密碼文本框

登錄按鈕

現在的問題是,我有不同的用戶(管理員,EMP,凸出,統籌,凸出不同的表。經理)用他們的用戶名和密碼。

因此,是否有任何步驟明智的過程來驗證使用servlet和jsp的多用戶登錄。

我m能夠成功地爲單個用戶運行(僅用於用戶名和密碼),但無法爲多用戶。

+1

這是你的數據庫設計的問題。使它完美。 – Kris

+0

您的設計存在缺陷。但爲了給你提示,你可以根據用戶的用戶類型選擇'if-else',你可以查找不同的表。 –

+0

@PradeepSimha說db設計有一個缺陷,然後建議OP引入_another_缺陷並不一定是有建設性的。至少它應該是一個'enum',它擁有正確的'PreparedStatement'。 –

回答

2

假設在控制器,你在變type得到用戶類型,那麼你可以手動創建查詢,並從數據庫中這樣獲取結果:

String query = "Select * from "+type+" where <Your condition>"; 

但是這是非常糟糕的主意來做到這一點。相反,你應該看看db中的繼承。我想this將幫助你重組你的數據庫。

爲什麼這是個壞主意?

讓我們假設你有3種類型的用戶當前在你的系統中說:管理員,員工和用戶。

現在過了一段時間,如果您需要在系統中添加另一種類型的用戶說HR,那麼您必須執行哪些步驟:
1)爲具有相同重複列的HR創建另一個表。
2)改變你的HR用戶的Java文件的邏輯。
3)如果您對查詢進行了硬編碼,則掃描整個項目以獲得相同效果。在DB繼承

和好處:

只需插入數據庫中記錄與type = "HR"和你做。不是很簡單嗎?

,僅供參考:

Advantages:

  • 簡單的方法。
  • 輕鬆添加新類,您只需添加新列以添加其他數據。
  • 只需更改行的類型即可支持多態。
  • 數據訪問速度很快,因爲數據在一個表中。
  • 臨時報告非常簡單,因爲所有數據都在一張表中。

Disadvantages:

  • 的類層次結構內的耦合增加,因爲所有的類都直接耦合到相同的表。一個類的變化可能會影響表,從而影響層次結構中的其他類。
  • 數據庫中可能浪費的空間。
  • 當類型之間存在顯着重疊時,指示類型變得複雜。
  • 對於較大的層次結構,表可以快速增長。

When to use:

  • 這是簡單的和/或淺的類層次結構一個很好的策略,其中有層次結構中的類型之間幾乎沒有重疊。
+0

你可能想解釋爲什麼這是一個非常糟糕的主意並不成功,只是爲了讓OP得到消息。 –

+0

@BoristheSpider絕對是。我會嘗試 –

0

在你的情況最有可能有兩個approahes

1)您可以手動創建查詢以上

2)您可以創建一個包含用戶類型的表說,(它包括管理,EMP,項目協調員,項目經理)及其相關表格。因此,在控制,當你獲得所需的信息

但是,這將是一個開銷,併爲新的用戶類型,你必須重新創建用戶。因此,如果您有一個存儲所有用戶名和密碼的表,並且對於用戶類型可以添加新列,那麼添加它會更好。