IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Gestion d'exception dans un modèle MVC


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut Gestion d'exception dans un modèle MVC
    Bonjour,

    J'ai un projet sous forme de modèle MVC.
    La classe SqlConnection fait office de modèle. C'est cette classe Java qui sert à se connecter à la base, à insérer, modifier, supprimer des données de la base via des requête SQL.

    Donc les servlets (contrôleurs) font toujours appel à ce modèle.

    Mais lors d'une exception générée (par exemple insertion qui échoue), une exception est générée dans le modèle, mais comment transmettre l'intitulé précis de l'exception aux vues et contrôleurs ?
    Dois-je, à partir du modèle, écrire les messages de ces exceptions dans des fichiers ?

    Merci pour vos conseils.

  2. #2
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    Une solution nulle serait de catcher les exceptions et d'envoyer ta propre hiérarchie d'exception. Rien ne t'empêche non plus dans ton contrôleur de gérer directement les exceptions que tu reçois de ce que tu appelles le "modèle".

    Ce qu'il faut voir aussi, c'est que normalement si tu insères des données dans la base, elles devraient être correctes et tu devrais faire en sorte qu'elles soient vérifiées. Et si les données ne sont pas correctes alors tu devrais renvoyer une exception qui devra être gérée si possible par le contrôleur. Donc les seules exceptions lancés par la base devraient être des exceptions techniques.

    Pour généraliser le message, lorsque l'on gère les exceptions, une bonne chose à faire en sorte que les classes d'exceptions correspondent au traitement qui doit être pris derrière. Par exemple, si c'est une erreur de la base alors dire à l'utilisateur de contacter l'utilisateur, si c'est une erreur métier, il faudra peut être la transmettre à l'utilisateur, etc.

    Note : Je pense aussi que tu devrais revoir la notion de "modèle" dans le MVC.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup pour ta réponse.

    Donc si par exemple je catch les exceptions dans les contrôleur, et que je fais des redirections vers une page d'erreur à chaque exception rencontrée, c'est correct ?

    Pour la notion de modèle, j'avais un doute.
    Qu'est-ce qui ferait office de modèle dans ce cas, dans mon projet ?

    Voilà comment je voyais les choses :

    • Modèle :


    Une classe Java SqlConnection : dans cette classe, je fais la gestion des drivers, la connexion à la BD, les insertions, les recherches, les mises à jours, etc... avec des executeQuery et executeUpdate.
    Je considérais aussi les beans comme des modèles (sachant que j'ai 3 beans : clients, contrats, factures)


    • Vues :


    Les JSP (formulaires et fiches d'informations) affichant le texte dynamiquement.

    • Contrôleurs :


    Les servlets qui récupèrent les informations des attributs de sessions, qui font les traitements sur la BD, et qui redirigent vers les vues pour afficher les nouvelles informations.

    Mon point de vue est-il correct ?
    Merci.

  4. #4
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    Dans ton cas, les modèles devraient être : clients, contrats, factures.

    Ensuite pour la gestion des exceptions, si tu gardes une architecture 3 couches (présentation, métier, dao) alors tu peux déjà gérer au moins deux types d'exception. Les exceptions métier et les exceptions relatives à des erreurs sur la base. Il peut y en avoir d'autres mais comme je l'ai dit, il est préférable de définir les exceptions selon le traitement qui devra avoir lieu.

    Il ne te reste plus qu'a traiter ces types d'exceptions dans les contrôleurs soit en renvoyant la vue courante avec un message d'erreur soit effectivement en faisant un forward sur une page d'erreur.

  5. #5
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Ta vision du pattern MVC est plus proche d'une architecture 3-tiers.
    Rien ne t'empêche par contre de faire un mixte des 2

    En gros, le MVC consiste à:
    La partie modèle sera chargée d'effectuer tout les traitements sur les données.
    La vue est la couche de présentation des informations à l'utilisateur (interaction avec l'utilisateur).
    Le contrôleur répond aux événements déclencher dans la vue en lancant les bons traitements (sur la partie modèle). Et met à jour de la vue par rapport aux retours du modèle.


    Le plus dans ton cas, c'est que tu apportes une séparation du modèle et de la partie DAO

  6. #6
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Ah merci beaucoup, j'ai une meilleure vision du concept, d'autant que c'est mon 1er projet en MVC.
    J'apporte donc les modifications nécessaires à mon projet, ça ne devrait pas être difficile.
    Encore merci et bon week-end.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Data] Gestion des exceptions dans applications Spring Hibernate Struts
    Par coco-sup dans le forum Spring
    Réponses: 4
    Dernier message: 09/12/2012, 12h58
  2. Pb de gestion d'exception dans boucle for
    Par Kazevil dans le forum PL/SQL
    Réponses: 2
    Dernier message: 19/01/2009, 16h06
  3. Cache de pages dans le modèle MVC
    Par matN59 dans le forum MVC
    Réponses: 2
    Dernier message: 06/03/2008, 19h01
  4. [débutant] gestion des exceptions dans web.xml
    Par jgaslain dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 06/02/2007, 09h46
  5. [EXCEPTION] Gestion des Exceptions dans PL/SQL
    Par Titouf dans le forum PL/SQL
    Réponses: 4
    Dernier message: 08/02/2006, 00h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo