Zu unseren häufig verwendeten MVC-Layer- und Control-Layer-Frameworks gehören hauptsächlich Struts2 und SpringMVC, die jeweils Action und Controller entsprechen. Was sind also die Hauptunterschiede zwischen SpringMVC und Struts?
1. Framework-Mechanismus
Wir wissen, dass Struts2 Filter zur Implementierung verwendet, während SpringMVC Servlet zur Implementierung verwendet.
Struts2 verwendet StrutsPrepareAndExecuteFilter, während SpringMVC DispatcherServlet verwendet. Filter ist ein spezielles Servlet. Der Filter wird initialisiert, nachdem der Container gestartet wurde; er stürzt ab, nachdem der Dienst gestoppt wurde, später als Servlet. Das Servlet wird beim Aufruf initialisiert, bevor Filter aufgerufen wird; es stürzt ab, nachdem der Dienst beendet wurde.
2. Abfangmechanismus
1. Struts2
Das Struts2-Framework ist ein Abfangen auf Klassenebene. Bei der Integration mit Spring wird die Struts2-Aktion erstellt Der Bean-Injection-Bereich ist der Prototypmodus-Prototyp (andernfalls treten Thread-Parallelitätsprobleme auf), und dann werden die Anforderungsdaten über Setter und Getter in die Eigenschaft injiziert.
In Struts2 entspricht eine Aktion einem Anforderungs- und Antwortkontext. Beim Empfang von Parametern können diese über Attribute empfangen werden. Dies zeigt, dass Attributparameter von mehreren Methoden gemeinsam genutzt werden.
2. SpringMVC
SpringMVC ist ein Abfangen auf Methodenebene Daher ist die Methode grundsätzlich unabhängig und hat exklusiven Zugriff auf Anfrage- und Antwortdaten. Jede Methode entspricht gleichzeitig einer URL. Die Parameterübergabe wird direkt in die Methode eingefügt, was für die Methode einzigartig ist. Die Verarbeitungsergebnisse werden über ModeMap an das Framework zurückgegeben.
Während der Spring-Integration verwendet das Controller-Bean von SpringMVC standardmäßig den Singleton-Modus, sodass standardmäßig nur ein Controller für alle Anforderungen erstellt wird und es keine gemeinsamen Attribute geben sollte. Daher ist es threadsicher. Wenn Sie den Standardbereich ändern möchten, müssen Sie die Annotation @Scope hinzufügen, um ihn zu ändern.
3. Leistung
SpringMVC implementiert eine Nullkonfiguration. Aufgrund des methodenbasierten Abfangens von SpringMVC wird die Bean-Injection im Singleton-Modus einmal geladen. Struts2 ist ein Abfangen auf Klassenebene. Jede Anforderung für eine neue Aktion, die der Instanz entspricht, erfordert das Laden aller Attributwertinjektionen, sodass SpringMVC schneller als Struts2 ist.
4. Abfangmechanismus
Struts2 verfügt über einen eigenen Abfangmechanismus , SpringMVC verwendet eine unabhängige Aop-Methode.
Das Obige ist der Unterschied zwischen der Steuerschicht SpringMVC und Struts2. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www. php.cn)!