2010-06-24 4 views
7

J'ai une application Web en pleine croissance qui doit maintenant être capable de stocker les préférences/paramètres utilisateur et système. Dans le passé j'ai toujours roulé mon propre système de préférences pour les applications web mais je me demandais ce que les autres font pour résoudre ce problème? Y a-t-il des bibliothèques de préférences pour les applications Web que les gens pourraient recommander?Préférences utilisateur dans l'application Java EE

Idéalement, les préférences utilisateur doivent avoir une valeur par défaut que l'utilisateur peut ensuite remplacer. Toutes les préférences ne doivent pas être exposées à l'utilisateur, car certaines seront pour des choses telles que la dernière position d'une boîte de dialogue. Si j'utilise la route roll-my-own, je pense qu'il s'agira d'une table de préférences distincte avec toutes les préférences stockées en tant que chaînes converties en leur vrai type de données primitif, selon les besoins. par exemple. une table quelque chose comme key, user_key, setting_name, setting_value. Je privilégie cette approche à une colonne par type de données, car elle empêche un paramètre de se retrouver accidentellement avec deux valeurs et le consommateur d'un paramètre doit savoir quel type de données il veut.

+0

Est-ce que vous devez être en mesure de changer les prefs dynamiquement? Sinon, la norme JEE est l'utilisation de '' qui peut être recherché ou injecté. – ewernli

+0

Oui, les préférences doivent être dynamiques. Certains seront définis par l'utilisateur, par exemple leur thème préféré, et d'autres seront définis par le système pour l'utilisateur, par exemple le dernier emplacement d'une boîte de dialogue. – wobblycogs

Répondre

3

Une approche que nous utilisons est:

  • toutes les propriétés non obligatoires ont par défaut dans le code
  • fournissent un fichier de propriétés avec l'application Web dans laquelle nous définissons les propriétés orientées techniques
  • de requête un SQL table au démarrage de l'application pour charger principalement les propriétés orientées fonctionnelles

Les propriétés de la base de données ont une priorité plus élevée que celles de la p fichier roperty. Si votre exigence est d'empêcher les gestionnaires fonctionnels de modifier les propriétés techniques, vous pouvez ajouter une colonne de contexte à la table des propriétés qui est vérifiée dans l'interface de gestion.

Tout le code d'application est à voir est une collection de propriétés utilisées dans le monde entier.

-3

Il y a une API pour que JDK: java.util.prefs

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

+2

Merci, j'étais au courant du système de préférences et je l'ai utilisé dans quelques applications de bureau. Il pourrait probablement être fait pour faire ce que je veux mais je pense que c'est un assez mauvais choix pour une application web. Je vois qu'il ya deux plus grands défauts car il n'y a pas de stockage de base de données de paramètres et pas de concept de sessions utilisateur (il prend en charge les paramètres par utilisateur, mais pas de la manière dont une application Web a besoin). – wobblycogs

+0

De même, l'implémentation des préférences standard sous UNIX utilise un thread d'arrière-plan pour vider les modifications apportées au magasin de sauvegarde et il est impossible d'arrêter ce thread lors du rechargement de la webapp qui entraîne des fuites de mémoire. –