2010-06-24 37 views
7

我有一個不斷增長的Web應用程序,現在需要能夠存儲用戶和系統首選項/設置。在過去,我一直在爲Web應用程序推出我自己的偏好系統,但我想知道其他人做了什麼來解決這個問題?人們可以推薦的Web應用程序是否有任何偏好庫?Java EE應用程序中的用戶首選項

理想的用戶偏好應該有一個默認值,然後用戶可以覆蓋。不是所有的偏好都應該暴露給用戶,儘管有些偏好會用於諸如對話框的最後位置之類的東西。

如果我使用roll-my-own路由,我認爲它將是一個單獨的首選項表,其中所有首選項存儲爲字符串,並根據需要轉換爲真正的原始數據類型。例如一個表,如key,user_key,setting_name,setting_value。我贊成這種方法適用於每種數據類型的列,因爲它阻止了意外終止兩個值的設置,而設置的使用者應該知道他們想要的數據類型。我們使用

+0

你需要能夠動態改變首選項?否則,JEE標準是可以查找或注入的''的用法。 – ewernli 2010-06-24 12:07:46

+0

是的,喜好需要是動態的。一些將被用戶設置,例如他們喜歡的主題,另一些將是用戶的系統設置,例如對話框的最後位置。 – wobblycogs 2010-06-24 12:59:54

回答

3

一種方法是:

  • 所有非強制性的屬性在代碼默認
  • 提供一個性能與我們定義的技術導向性
  • 查詢SQL Web應用程序文件表在應用程序啓動時加載主要面向功能的屬性

來自數據庫的屬性的優先級高於包含的p roperty文件。如果您的要求是阻止職能經理更改技術屬性,則可以將上下文列添加到管理UI中檢查的屬性表中。

所有應用程序代碼都可以看到的是一個全局使用的屬性集合。

-3

有應該是一個JDK的API:java.util.prefs

http://java.sun.com/j2se/1.4.2/docs/guide/lang/preferences.html

+2

謝謝,我意識到了偏好系統,並將它用於少數桌面應用程序。它可能會做我想做的事情,但我認爲這對於Web應用程序來說是一個相當差的選擇。我認爲這是兩個最大的缺陷,因爲沒有開箱即用的數據庫存儲設置,也沒有用戶會話的概念(它支持每個用戶設置,但不支持Web應用程序所需的方式)。 – wobblycogs 2010-06-24 17:38:05

+0

另外,UNIX上的標準首選項實現使用後臺線程來刷新對後備存儲的更改,並且在重新加載導致內存泄漏的webapp時無法停止此線程。 – 2015-01-11 11:48:06