Struts2-Funktionsprinzip:
1. Initialisieren Sie eine Anfrage an den Servlet-Container.
2. Die Anfrage wird durch den in web.xml konfigurierten Filter gefiltert und der FilterDispatcher (der Kern des Struts2-Controllers) fragt den ActionMapper, ob er eine Aktion aufrufen muss, um die Anfrage zu bearbeiten. Wenn ActionMapper entscheidet, dass eine Aktion aufgerufen werden muss, übergibt FilterDispatcher die Anforderungsverarbeitung an ActionProxy.
3. ActionProxy findet die Action-Klasse, die über die Konfigurationsdatei Struts.xml aufgerufen werden muss.
4.ActionProxy erstellt eine ActionInvocation-Instanz und ActionInvocation ruft Action über den Proxy-Modus auf. Vor dem Aufruf lädt ActionInvocation jedoch alle aktionsbezogenen Interceptoren (Interceptoren) entsprechend der Konfiguration.
5. Nachdem die Aktion ausgeführt wurde, ist ActionInvocation dafür verantwortlich, das entsprechende Rückgabeergebnis basierend auf der Konfiguration in struts.xml zu finden.
Verwandte Empfehlungen: „FAQ“
Das heißt, der Entwickler sendet eine http-Anfrage und diese Anfrage wird durch den web.xml-Filter gefiltert, um zu sehen, ob eine bestimmte Wenn eine Aktion vorhanden ist, suchen Sie die von der Anforderung implementierte Methode in Struts.xml und geben Sie dann das laufende Ergebnis zurück. Wie im Bild gezeigt:
Arbeitsprinzip des Ruhezustands:
1. Lesen und analysieren Sie die Konfigurationsdatei
2. Mapping-Informationen lesen und analysieren, SessionFactory erstellen
4. Transaktionstransaktion erstellen
6. Transaktion senden
7. Sitzung schließen
8. Das heißt, wenn der von Spring verwaltete Ruhezustand initialisiert wird, wird xxx.hbm.xml geladen und dann die Analyse durchgeführt Mapping-Informationen werden gelesen und erstellt.
Dann öffnen Sie die Sitzung, führen Sie die Dinge durch die Sitzung aus und senden Sie sie ab. Schließen Sie abschließend die Sitzung und schließen Sie die SessionFactory. Wie im Bild gezeigt:
Die drei Zustände von Beans im Ruhezustand
Hibernate-Objekte sind in drei Zustände unterteilt: Übergangszustand (neuer Ausgang) oder unabhängig von der Sitzung bei Instanziierung), persistenter Zustand (der Sitzung zugeordnet) und freier Zustand (früher der Sitzung zugeordnet). Darunter sind die persistenten Objekte PO, und die transienten und verwalteten Objekte können als VO verwendet werden. (PO sollte nicht direkt als V-Schicht verwendet werden.) Daher sollte bei der Verwendung auf die Umwandlung der drei Zustände geachtet werden.
Zum Beispiel: In einer Reihe von Datenoperationen kann die Operation save oder saveorupdate vorübergehende oder freie Objekte in persistente Objekte umwandeln, während
delete oder Operationen wie close und das Leeren der Sitzung wandelt das mit der Sitzung verknüpfte persistente Statusobjekt in einen freien Status um.
Der Zustand und Lebenszyklus von Hibernate-ObjektenDas mit dem neuen Operator initialisierte Objekt ist ein Transient (Transient) (hat kein mit der Datenbanktabelle verknüpftes Verhalten). ) Solange die Anwendung nicht mehr auf diese Objekte verweist, geht ihr Status verloren und wird vom Garbage Collection-Mechanismus recycelt.
Transiente Objekte passieren save(), saveOrUpdate wird in einen dauerhaften Zustand konvertiert und wird einheitlich durch die Sitzung verwaltet werden. Der Betrieb persistenter Objekte wird mit der Datenbank synchronisiert. Das persistente Objekt wird nach evict(), close() usw. in einen freien Zustand umgewandelt Diesmal ist es zwar dauerhaft, befindet sich aber nicht im Sitzungscache lock(),
update(), saveOrUpdate wird in den dauerhaften Zustand konvertiert. Durch get(), load(), find() und iterate() erhaltene Objekte sind direkt persistent.
So funktioniert Spring:Im SSH-Framework spielt Spring die Rolle eines Verwaltungscontainers. Wir alle wissen, dass Hibernate als Persistenzschicht verwendet wird, da es eine gute Kapselung von JDBC bietet.
Programmierer müssen bei der Interaktion mit der Datenbank keine große Anzahl von SQL-Anweisungen schreiben. Als Anwendungsschicht wird Struts verwendet, das für den Aufruf der Geschäftslogik-Dienstschicht verantwortlich ist. Der Prozess des SSH-Frameworks ist also ungefähr: Jsp-Seite ----Struts------Service (Geschäftslogik-Verarbeitungsklasse) ---Hibernate (von links nach rechts)
struts Verantwortlich für die Steuerung des Dienstes (Geschäftslogik-Verarbeitungsklasse) und steuert dadurch den Lebenszyklus des Dienstes. Auf diese Weise ist die Abhängigkeit zwischen den Schichten sehr stark und gekoppelt.
Zu diesem Zeitpunkt spielt die Verwendung des Spring-Frameworks die Rolle der Steuerung des Action-Objekts (in Strus) und der Service-Klasse. Die Beziehung zwischen den beiden ist locker (Kontrollumkehr und Abhängigkeitsinjektion). wird hier verwendet. Spring's Ioc (Inversion of Control and Dependency Injection):
Inversion of Control: Der Container steuert die (Abhängigkeits-)Beziehung zwischen Programmen, anstatt in herkömmlichen Implementierungen direkt durch den Programmcode gesteuert zu werden.
Abhängigkeitsinjektion: Die Abhängigkeiten zwischen Komponenten werden vom Container während der Laufzeit bestimmt, und der Container injiziert dynamisch bestimmte Abhängigkeiten in die Komponenten.
Der zweite Vorteil der Verwendung von Spring (AOP-Anwendung):
Transaktionsverarbeitung:Im vorherigen JDBCTemplate wurde die Transaktion erfolgreich übermittelt und es kam zu einer Ausnahme Die Verarbeitung erfolgt über Try/Catch im Frühjahr.
Der Spring-Container integriert TransactionTemplate, das alle Transaktionsverarbeitungsfunktionen kapselt, einschließlich des Transaktions-Rollbacks bei Auftreten von Ausnahmen, der Datenübermittlung bei erfolgreichen Vorgängen und anderer komplexer Geschäftsfunktionen. Dies alles wird vom Spring-Container verwaltet, der die Codemenge für Programmierer erheblich reduziert und eine gute Verwaltung und Kontrolle über Transaktionen ermöglicht.
Hibernate verfügt auch über eine Transaktionsverwaltung. Die Transaktionsverwaltung im Ruhezustand wird durch das Erstellen und Verwalten einer Sitzung über SessionFactory abgeschlossen. Spring hat auch die SessionFactory-Konfiguration integriert, und es ist nicht erforderlich, SessionaFactory über hibernate.cfg.xml festzulegen.
Auf diese Weise können Sie die leistungsstarken Transaktionsverwaltungsfunktionen von Sping optimal nutzen.
Vermeidet die Notwendigkeit, eine Sitzungsinstanz zum Starten einer Transaktion/Commit/Rollback einer Transaktion und umständliche Try/Catch-Vorgänge bei jeder Datenoperation zu erhalten.
Dies sind gute Anwendungen des AOP-Mechanismus (aspektorientierte Programmierung) im Frühjahr. Einerseits wird dadurch die Entwicklung der Geschäftslogik übersichtlicher und die professionelle Arbeitsteilung erleichtert.
Andererseits reduziert die Anwendung der Spirng AOP-Isolation die Kopplung des Programms, sodass wir verschiedene Aspekte in verschiedenen Anwendungen kombinieren können, was die Wiederverwendung von Code erheblich verbessert.
Das obige ist der detaillierte Inhalt vonWas ist das Prinzip und der Prozess des SSH-Frameworks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!