Maison >Java >javaDidacticiel >Quel est le principe et le processus du framework ssh
Projet de framework SSH (Struts2+Spring+Hibernate), l'architecture est principalement divisée en trois niveaux :
(1) Struts2 : responsable de la couche web
(2) Spring : gestion de la couche métier
(3) Hibernate : responsable de la persistance des données
Principe de fonctionnement de Struts2 :
1. Initialisez une requête pointant vers le conteneur de servlet.
2. La requête est filtrée par le filtre configuré dans web.xml, et le FilterDispatcher (le cœur du contrôleur struts2) demande à l'ActionMapper s'il doit appeler une action pour gérer la requête. Si ActionMapper décide qu'une action doit être appelée, FilterDispatcher transmet le traitement des demandes à ActionProxy.
3. ActionProxy trouve la classe Action qui doit être appelée via le fichier de configuration Struts.xml.
4.ActionProxy crée une instance ActionInvocation et ActionInvocation appelle Action via le mode proxy. Mais avant d'appeler, ActionInvocation chargera tous les intercepteurs (intercepteurs) liés à l'action en fonction de la configuration.
5. Une fois l'action exécutée, ActionInvocation est chargé de trouver le résultat de retour correspondant en fonction de la configuration dans struts.xml.
C'est-à-dire que le développeur envoie une requête http. Cette requête est filtrée par le filtre de web.xml pour voir si une action doit être appelée. Si tel est le cas, la méthode pour implémenter la requête se trouve dans Struts. .xml, puis renvoyé Le résultat de l'opération.
Recommandations associées : "Tutoriel de développement Java"
Principe de fonctionnement d'Hibernate :
Lire et analyser le fichier de configuration.
2. Lire et analyser les informations de mappage, créer une SessionFactory
3. Session ouverte
4. Créer une transaction de transaction
5.
6. Soumettre la transaction 7. Fermer la session 8. Fermer SessionFactory C'est-à-dire que xxx.hbm.xml est chargé lors de l'initialisation Hibernate gérée par Spring. lisez les informations de mappage d’analyse et créez une SessionFactory. Ensuite, ouvrez la session, faites fonctionner l'objet tout au long de la session et soumettez-le. Enfin, fermez la session et fermez SessionFactory. Trois états des beans dans HibernateLes objets Hibernate sont divisés en trois états : l'état transitoire (nouveau ou indépendant de la session lorsqu'il est instancié), l'état persistant (associé à la session) et l'état libre (une fois associé à la séance). Parmi eux, les objets persistants sont des PO, et les objets transitoires et gérés peuvent être utilisés comme VO. (PO ne doit pas être utilisé directement comme couche v) Par conséquent, il convient de prêter attention à la conversion des trois états pendant l'utilisation. Par exemple :Comment fonctionne Spring :
Dans le framework SSH, spring joue le rôle de conteneur de gestion. Nous savons tous qu'Hibernate est utilisé comme couche de persistance, car il fournit une bonne encapsulation de JDBC et les programmeurs n'ont pas besoin d'écrire un grand nombre d'instructions SQL lorsqu'ils interagissent avec la base de données. Struts est utilisé comme couche d'application, qui est chargée d'appeler la couche de service de logique métier. Le processus du framework SSH est donc grosso modo : Page Jsp ----Struts------Service (classe de traitement de logique métier) --- Hibernate (de gauche à droite) struts Responsable du contrôle du Service (classe de traitement de logique métier), contrôlant ainsi le cycle de vie du Service. De cette façon, la dépendance entre les couches est très forte et est couplée. À l'heure actuelle, l'utilisation du framework Spring joue le rôle de contrôle de l'objet Action (dans Strus) et de la classe Service. La relation entre les deux est lâche. Le mécanisme Ioc de Spring (inversion du contrôle et injection de dépendances). est utilisé ici. Inversion de contrôle : le conteneur contrôle la relation (de dépendance) entre les programmes, au lieu de l'implémentation traditionnelle, qui est directement contrôlée par le code du programme. Injection de dépendances : les dépendances entre les composants sont déterminées par le conteneur pendant l'exécution, et le conteneur injecte dynamiquement certaines dépendances dans les composants. Le deuxième avantage de l'utilisation de Spring (application AOP) : Traitement des transactions :Dans le modèle JDBC précédent, la transaction a été soumise avec succès et la gestion des exceptions a été effectuée via Try/Catch. Le conteneur Spring intègre TransactionTemplate, qui encapsule toutes les fonctions de traitement des transactions, y compris l'annulation des transactions lorsque des exceptions se produisent, la soumission de données lorsque les opérations réussissent et d'autres fonctions commerciales complexes. Tout cela est géré par le conteneur Spring, ce qui réduit considérablement la quantité de code pour les programmeurs et offre une bonne gestion et un bon contrôle des transactions. Hibernate dispose également d'une gestion des transactions. La gestion des transactions en veille prolongée est réalisée en créant et en maintenant une session via SessionFactory. Spring a également intégré la configuration SessionFactory, et il n'est pas nécessaire de définir SessionaFactory via hibernate.cfg.xml.
De cette façon, vous pouvez faire bon usage des puissantes fonctions de gestion des transactions de Sping.
Cela évite d'avoir besoin d'obtenir une instance de session pour démarrer la transaction/soumettre/annuler la transaction et l'opération fastidieuse Try/Catch à chaque fois que les données sont exploitées.
Ce sont de bonnes applications du mécanisme AOP (programmation orientée aspect) de Spring. D’une part, cela rend le développement de la logique métier plus clair et la division professionnelle du travail plus facile.
D'autre part, l'application de l'isolation Spirng AOP réduit le couplage du programme, nous permettant de combiner divers aspects dans différentes applications, ce qui améliore grandement la réutilisation du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!