Unterschied zwischen Struts 1 und Struts 2?

8

Ich habe Struts 2 verwendet, aber aus wenigen Gründen verlagere ich (zurück) zu Struts 1. Ich würde gerne die Hauptunterschiede zwischen ihnen kennen, etwa über die Verfügbarkeit von Programmen und die allgemeinen Abläufe.

    
Nils 04.11.2011, 09:26
quelle

4 Antworten

2

Hier ist eine schnelle und vollständige Antwort. Mit anderen Worten, wenn Sie können, vergessen Sie Struts und verwenden Sie nur Struts2 ...

    
Costis Aivalis 04.11.2011, 09:43
quelle
11

Sehen wir uns die Komponenten- und Funktionsunterschiede zwischen Struts 1.x und Struts 2.x

an %Vor%

Funktionale Unterschiede

%Vor%     
Ashwini 21.11.2012 09:50
quelle
2

Vergleich der Struts 1 und 2 von den Machern von Struts (Apache Software Foundation)

Vergleichen von Struts 1 und Struts 2

Hier ist der Inhalt, der unter dem oben genannten Link verfügbar ist, falls er sich entscheidet, den Link zu ändern oder die Seite in Zukunft zu entfernen.

  1. Aktionsklassen

    • Struts 1
      Benötigt Aktionsklassen, um eine abstrakte Basisklasse zu erweitern. Ein häufiges Problem in Struts 1 ist die Programmierung von abstrakten Klassen anstelle von Schnittstellen.
    • Struts 2
      Aktion kann eine Aktionsschnittstelle zusammen mit anderen Schnittstellen implementieren, um optionale und benutzerdefinierte Dienste zu aktivieren. Struts 2 stellt eine Basis-ActionSupport-Klasse zum Implementieren häufig verwendeter Schnittstellen bereit. Die Action-Oberfläche ist jedoch nicht erforderlich. Jedes POJO-Objekt mit einer Ausführungssignatur kann als Struts 2-Aktionsobjekt verwendet werden.
  2. Threading-Modell

    • Struts 1
      Aktionen sind Singletons und müssen Thread-sicher sein, da es nur eine Instanz einer Klasse gibt, die alle Anfragen für diese Aktion behandelt. Die Singleton-Strategie legt Einschränkungen fest, was mit Struts 1-Aktionen getan werden kann und erfordert besondere Sorgfalt bei der Entwicklung. Aktionsressourcen müssen Thread-sicher oder synchronisiert sein.
    • Struts 2
      Aktionsobjekte werden für jede Anforderung instanziiert, sodass keine Thread-Sicherheitsprobleme auftreten. (In der Praxis generieren Servlet-Container viele Wegwerfobjekte pro Anforderung, und ein weiteres Objekt verursacht keine Leistungseinbußen oder beeinträchtigt die Garbage Collection.)
  3. Servletabhängigkeit

    • Struts 1
      Aktionen hängen von der Servlet-API ab, da die HttpServletRequest- und HttpServletResponse-Befehle an die execute-Methode übergeben werden, wenn eine Aktion aufgerufen wird.
    • Struts 2
      Aktionen sind nicht an einen Container gekoppelt. Meistens werden die Servlet-Kontexte als einfache Maps dargestellt, so dass Actions isoliert getestet werden können. Struts 2-Aktionen können bei Bedarf weiterhin auf die ursprüngliche Anfrage und Antwort zugreifen. Andere Architekturelemente reduzieren oder eliminieren jedoch die Notwendigkeit, direkt auf HttpServetRequest oder HttpServletResponse zuzugreifen.
  4. Testbarkeit

    • Struts 1
      Eine wichtige Hürde beim Testen von Struts 1-Aktionen ist, dass die Methode execute die Servlet-API verfügbar macht. Eine Erweiterung von Drittanbietern, Struts TestCase, bietet eine Reihe von Mock-Objekten für Struts 1 an.
    • Struts 2
      Unterstützt die Erstellung verschiedener Lebenszyklen pro Aktion über Interceptor Stacks. Benutzerdefinierte Stapel können je nach Bedarf erstellt und mit verschiedenen Aktionen verwendet werden.
      Struts 2 Aktionen können getestet werden, indem die Aktion, die Eigenschaften und die Aufrufmethoden instanziiert werden. Dependency Injection unterstützt auch das Testen.
  5. Input erfassen

    • Struts 1
      Verwendet ein ActionForm-Objekt zum Erfassen von Eingaben. Wie bei Aktionen müssen alle ActionForms eine Basisklasse erweitern. Da andere JavaBeans nicht als ActionForms verwendet werden können, erstellen Entwickler häufig redundante Klassen, um Eingaben zu erfassen. DynaBeans können als Alternative zum Erstellen herkömmlicher ActionForm-Klassen verwendet werden, aber auch hier können Entwickler bestehende JavaBeans neu beschreiben.
    • Struts 2
      Verwendet Aktionseigenschaften als Eingabeeigenschaften, sodass kein zweites Eingabeobjekt erforderlich ist. Eingabeeigenschaften können Rich-Objekttypen sein, die möglicherweise eigene Eigenschaften haben. Auf die Aktionseigenschaften kann über die Taglibs von der Webseite aus zugegriffen werden. Struts 2 unterstützt auch das ActionForm-Muster sowie POJO-Formularobjekte und POJO-Aktionen. Rich-Objekttypen, einschließlich Geschäfts- oder Domänenobjekte, können als Eingabe- / Ausgabeobjekte verwendet werden. Die ModelDriven-Funktion vereinfacht Taglb-Verweise auf POJO-Eingabeobjekte.
  6. Ausdruckssprachen
    • Struts 1
      Integriert mit JSTL, also verwendet es JSTL EL. Die EL verfügt über grundlegende Traversierung von Objektkurven, aber relativ schwache Unterstützung für Sammlung und Indexeigenschaft.
    • Struts 2
      Kann JSTL verwenden, aber das Framework unterstützt auch eine leistungsfähigere und flexiblere Ausdruckssprache namens "Object Graph Notation Language" (OGNL).
  7. Werte in Ansichten binden
    • Struts 1
      Verwendet den JSP-Standardmechanismus zum Binden von Objekten in den Seitenkontext für den Zugriff.
    • Struts 2
      Verwendet eine "ValueStack" -Technologie, damit die Taglibs auf Werte zugreifen können, ohne Ihre Ansicht mit dem Objekttyp zu verknüpfen, den sie rendert.Die ValueStack-Strategie ermöglicht die Wiederverwendung von Sichten für eine Reihe von Typen, die den gleichen Eigenschaftsnamen aber unterschiedliche Eigenschaftstypen aufweisen können.
  8. Typkonvertierung
    • Struts 1
      ActionForm-Eigenschaften sind normalerweise alle Strings. Struts 1 verwendet Commons-Beanutils zur Typumwandlung. Konverter sind pro Klasse und nicht pro Instanz konfigurierbar.
    • Struts 2
      Verwendet OGNL für die Typkonvertierung. Das Framework enthält Konverter für grundlegende und allgemeine Objekttypen und Primitive.
  9. Validierung
    • Struts 1
      Unterstützt die manuelle Validierung über eine Validierungsmethode im ActionForm oder durch eine Erweiterung des Commons Validators. Klassen können unterschiedliche Validierungskontexte für die gleiche Klasse haben, aber sie können nicht mit Validierungen für Unterobjekte verknüpft werden.
    • Struts 2
      Unterstützt die manuelle Validierung über die Validierungsmethode und das XWork Validierungs-Framework. Das Xwork Validation Framework unterstützt die Verkettungsprüfung in Untereigenschaften mit den Validierungen, die für den Klassentyp der Eigenschaften und den Validierungskontext definiert wurden.
  10. Steuerung der Ausführung von Aktionen
    • Struts 1
      Unterstützt separate Request-Prozessoren (Lebenszyklen) für jedes Modul, aber alle Aktionen im Modul müssen denselben Lebenszyklus haben.
    • Struts 2
      Unterstützt die Erstellung verschiedener Lebenszyklen pro Aktion über Interceptor Stacks. Benutzerdefinierte Stapel können nach Bedarf erstellt und mit verschiedenen Aktionen verwendet werden.
Jeewantha Samaraweera 29.10.2016 13:57
quelle
1

Was sind die Gründe, die Sie gezwungen haben, zu struts1 zurückzukehren, was nicht mehr in der aktiven Entwicklung ist?

kann jemand sein, der Ihnen hier helfen kann, Ihre Gründe bezüglich der Unterschiede zu lösen, geht durch den folgenden Faden   Struts2 gegen Struts1

Ich empfehle Ihnen auch, SO für weitere Details zu suchen. Was ich weiß Struts2 Design und Workflow ist komplett anders als struts1 und wurde entwickelt, um auch die Einschränkungen, die struts1 haben, zu berücksichtigen.

    
Umesh Awasthi 04.11.2011 09:42
quelle