Heim > Java > javaLernprogramm > Hauptteil

Wozu dient das Java-Framework?

藏色散人
Freigeben: 2020-09-17 15:43:55
Original
5951 Leute haben es durchsucht

Heutzutage werden bei der Durchführung von Projekten Frameworks verwendet Eine bessere Entkopplung und Schichtung kann überhaupt ohne Ihr Framework gelöst werden.

Wozu dient das Java-Framework?Und jetzt ist die Kontrollschicht vieler Webprojekte in der Unternehmen Das technische Framework wurde von struts2 auf springMVC migriert. Warum wählen wir jetzt Frameworks wie struts2 oder springMVC, wenn wir Java-Webentwicklung betreiben, anstatt Technologien wie Servlet plus JSP zu verwenden?

Welche Vorteile wird diese Wahl für unsere Java-Webentwicklung bringen, insbesondere jetzt, da die Front-End-Seiten unseres Webs mithilfe von Vorlagensprachen wie Velocity entwickelt werden? Mit dieser Idee habe ich eine neue Frage gefunden: Warum entscheiden sich jetzt viele Java-Entwickler auf Unternehmensebene für das Spring Framework? Was bringt das Spring Framework für die von uns entwickelten Anwendungen?

Nachdem ich so gründlich darüber nachgedacht hatte, wollte ich es wirklich nicht verstehen. Es schien mir schwierig, eine völlig überzeugende Antwort zu finden. Am Ende stellte ich fest, dass diese Technologien mir bekannt vorkamen Es gibt immer noch viele Dinge, die für mich seltsam und verwirrend sind und die häufig verwendet werden. Diese seltsamen und verwirrenden Dinge sind auch der Schlüssel dafür, ob ich sie nach so vielen Jahren der Anhäufung nutzen kann Da Federbeine2 und Feder ziemlich groß und komplex geworden sind, sind sie sehr breit gefächert, aber es gibt immer noch viele Technologien, mit denen ich nicht vertraut bin und die mir unklar sind >Die Verwendung von Frameworks hat einen ganz allgemeinen Vorteil: Erstens kann sie den Entwicklungsprozess beschleunigen. Durch die Wiederverwendung von Code in ähnlichen Projekten können Entwickler viel Zeit und Energie sparen. Das Framework bietet vorgefertigte Module für die Durchführung langwieriger Codierungsaufgaben.

Dieser Vorteil gilt für jedes Framework. Aber was ist, wenn Sie genauer darüber nachdenken?

Tatsächlich gibt es viele hervorragende Frameworks Eine Art Framework, dessen Charakteristikum darin besteht, dass es auf einer vorhandenen Technologie basiert, ein technisches Framework, das die gleichen Geschäftsfunktionen wie die vorhandene Technologie bietet. Dieses neue technische Framework ist einfacher zu verwenden, robuster und leistungsfähiger als die ursprüngliche Technologie.

Zum Beispiel: jQuery sowie struts2 und springMVC, die in diesem Artikel besprochen werden. Diese Frameworks sind recht kompliziert, haben aber eigentlich nur einen Vorteil: Sie ermöglichen es Benutzern, sich nur um die Entwicklung des Kerngeschäfts zu kümmern , und das Framework hilft Ihnen, alle Arten von technischen Problemen abzuschirmen, die nichts mit der ursprünglichen Technologie und Geschäftsentwicklung zu tun haben. Der Grund, warum Frameworks wie jQuery, struts2 oder springMVC hervorragend sind, liegt darin, dass sie dies so gut machen, dass viele Programmierer, die sie verwenden, die wahre Natur der ursprünglichen Technologie nicht mehr kennen. Daher müssen wir struts2 besser, kompetenter und tiefer verstehen Hier müssen wir aus der Struts2-Technologie herausspringen, zu Servlet gehen, der Quelle der Struts2-Technologie, und die Eigenschaften von Servlet sorgfältig studieren. Nur so können wir das Struts2-Framework besser lernen.

Die Funktion von Servlet besteht darin, die Anfrage vom Browser an den Server zu empfangen und die verarbeitete Antwort vom Server an den Browser des Benutzers zurückzugeben. Der Browser und der Server kommunizieren über das HTTP-Protokoll. Der Prozess ist Der Browser stellt die angeforderte HTTP-Nachricht basierend auf der Auswahl des Benutzers und den relevanten Informationen gemäß den Spezifikationen der HTTP-Protokollnachricht zusammen. Die Nachricht wird über das Netzwerk an den angegebenen Server übertragen, und der Server empfängt die Nachrichteninformationen über ein bestimmtes Web Behälter.

Zum Beispiel: Webcontainer wie Tomcat, Jetty und JBoss. Wenn es sich um eine Benutzeranforderung handelt, werden die endgültigen analysierten Nachrichteninformationen in einem Anforderungsobjekt gespeichert Server Nachdem diese Anforderung zum Abschließen der entsprechenden Verarbeitung verwendet wurde, kapselt das Serverprogramm die Ergebnisinformationen in ein Antwortobjekt und übergibt das Antwortobjekt dann an den Webcontainer. Der Webcontainer wandelt das Antwortobjekt in eine Nachricht des HTTP-Protokolls um und sendet sie die Nachricht Es wird an den Browser zurückgegeben, und der Browser analysiert schließlich die Antwortnachricht und zeigt dem Benutzer das Endergebnis an.

Der Web-Container hat die Servlet-Schnittstelle erstellt. Über die Servlet-Schnittstelle implementieren Entwickler die Geschäftslogik, indem sie Lückentexte und den Kontext bzw. die Kontextaufforderung zum Ausfüllen ausführen Die leere Frage besteht aus einem Anforderungs- und einem Antwortobjekt, aber die Servlet-Schnittstelle in der JavaEE-Spezifikation ist mit nur drei Methoden init, service und destroy jedoch zu allgemein, daher bietet die Spezifikation auch eine HttpServlet-Klasse, die doGet, doPost usw. gemäß der HTTP-Anforderungsart bereitstellt. Das größte Merkmal der Servlet-Schnittstelle besteht darin, dass sie gemäß den Merkmalen des HTTP-Protokolls definiert ist Aufgrund der Eigenschaften des http-Protokolls bei der Entwicklung von Servlets werden sie auf mehr oder weniger verwirrende Probleme stoßen, insbesondere wenn sie auf einige stoßen Für komplexe und spezielle Anforderungen:

Zum Beispiel gibt das Hochladen von Dateien ein spezielles Dateiformat an den Browser zurück. Derzeit ist die Verwendung der Servlet-Entwicklung nicht sehr praktisch. Es gibt ein weiteres Problem bei der Servlet-Entwicklung, das häufig übersehen wird, nämlich die Typkonvertierung Die angeforderten Daten und die HTTP-Protokollübertragung liegen alle in Textform vor und sind nach der Analyse durch den Webcontainer auch Texttypen. Wenn wir auf Typen wie Währungen, Zahlen und Datumsangaben stoßen, müssen wir diese entsprechend konvertieren Ist-Situation: Wenn die Seite viele Informationen übermittelt, müssen wir viele Typkonvertierungen durchführen. Diese Art von Arbeit hat keinen technischen Inhalt, ist manuelle Arbeit und kann leicht zu Programmfehlern führen.

Gleichzeitig wird die Unternehmensentwicklung von Java vollständig um JavaBeans herum durchgeführt, und die typkonvertierten Daten müssen in die entsprechenden JavaBeans gekapselt werden. Diese Art der Umgehung ist definitiv keine gute Sache für das Projekt In der Entwicklung hat Struts1 eine Lösung für dieses Problem gefunden, die darin besteht, ein DTO-Objekt (Datenübertragungsobjekt) zu definieren, das speziell für solche Aufgaben verantwortlich ist. In Struts2 wird jedoch die gesamte Aktion durch das Servlet selbst ersetzt ein Javabean.

Ein technisches Merkmal der Java-Unternehmensentwicklung ist die Verwendung von Javabeans. Eines der Merkmale von struts2 ist, dass die Operationsklasse, die es ersetzt, ein typisches Javabean ist. Erstens konvertiert und kapselt das Struts2-Framework die von ihm übertragenen Daten Schließlich werden die Anforderungsinformationen in die Eigenschaften dieser Javabean gekapselt, sodass wir uns die lästigen Typkonvertierungs- und Kapselungsprobleme bei der Entwicklung von Webprogrammen ersparen können. Ich habe bereits erwähnt, dass herkömmliche Servlets gemäß dem http-Protokoll definiert werden basiert auf Ihrer Anfragemethode (Post- oder Get-Methode), um Benutzeranfragen zu bearbeiten.

Aber für einen Programmentwickler ist eine Anfrage, insbesondere eine URL, tatsächlich eine Funktion, die der Server der Außenwelt bereitstellt, oder eine externe Aktion der Serverseite, wenn wir Servlet zum Entwickeln von Programmen verwenden. Wir müssen http-Aktionen in spezifische Geschäftsaktionen umwandeln, was die Programmentwicklung umständlich macht und die Entwicklung schwieriger macht. Daher ersetzt struts2 die Javabean des Servlets und blockiert die HTTP-Anforderungsmethode. In Bezug auf die Konvertierung spezifischer Geschäftsaktionen ist dies bei jeder Methode in Javabean möglich entsprechen jeder URL-Anfrage eins zu eins, was zwangsläufig die Schwierigkeit der Entwicklung verringert.

Eine weitere Funktion von Servlet besteht darin, das Antwortobjekt so zu konstruieren, dass die Seite die richtige Antwort erhalten kann. Tatsächlich ist ein moderner Browser ein Multimedia-Tool, in dem Text, Bilder, Videos usw. angezeigt werden können Ressourcenunterschiede führen zu Unterschieden in den HTTP-Antwortnachrichten. Wenn wir Servlet-Entwicklungen verwenden, müssen wir je nach den unterschiedlichen Ressourcen eine hartcodierte Verarbeitung verwenden Bestimmte Ressourcenanforderungen, unzureichende Verarbeitung und Verständnis führen zu Problemen. Struts2 trennt diese Logik vom Java-Programm in Form von Konfigurationsdateien und verwendet Konfigurationsmethoden für eine einheitliche Verwaltung. Dieser Ansatz ähnelt der AOP-Methode von Spring, sodass die Ergebnisse verarbeitet werden Die Methode ist einheitlicher und einfacher zu verwalten. Sie verbessert auch die Robustheit des Programms und verringert die Schwierigkeit der Entwicklung.

Servlet im MVC-Entwicklungsmodell ist die C-Schicht, die die Kontrollschicht darstellt. Die Kontrollschicht ähnelt dem russischen Doppeladler (ein Kopf blickt nach Osten, der andere nach Westen) und der andere Kopf Blickt auf die M-Schicht und die Modellschicht. Schauen Sie sich die Ansichtsschicht der V-Schicht an. Die Modellschicht ist ebenfalls in Java geschrieben, und die Kontrollschicht ist ebenfalls in einer serverseitigen Sprache entwickelt zur Kommunikation zwischen der M-Schicht und der C-Schicht, unterscheidet sich jedoch von der V-Schicht-Ansichtsschicht. Für den Browser versteht er nur HTML, Javascript und CSS in der Sprache Java, aber damit die serverseitigen Dinge vom Browser verstanden und akzeptiert werden, müssen wir die Antwortinformationen vom Server auf der Seite platzieren.

Daher ist eine Technologie erforderlich, um Java-Informationen in HTML-Seiten umzuwandeln. Dies ist die in der JavaEE-Spezifikation bereitgestellte JSP-Technologie, die eigentlich eine serverseitige Technologie und keine clientseitige Technologie ist, aber es sieht so aus Ähnlich wie bei der HTML-Technologie bestand die früheste JSP-Entwicklung darin, Java-Code direkt in die Seite zu schreiben. Später stellte die JavaEE-Spezifikation eine benutzerdefinierte Tag-Technologie bereit und verwendete eine Methode, die HTML-Tags ähnelte, die Struts2 Das Framework bietet einen vollständigen Satz benutzerdefinierter Tag-Technologien, was vielleicht nicht viel klingt, aber seine Wirkung ist außergewöhnlich, denn der Grund, warum benutzerdefinierte Tags als benutzerdefiniert bezeichnet werden, liegt darin, dass jeder sie selbst definieren kann. Wenn keine Spezifikation vorhanden ist, wird dies zwangsläufig der Fall sein Verwirrung, und ein vollständiger Satz benutzerdefinierter Tags ist gleichbedeutend mit der Definition einer neuen Entwicklungssprache. Wenn Programmierer dies hören, werden sie definitiv verstehen, wie man einen Satz benutzerdefinierter Tags entwickelt Der Arbeitsaufwand und die Entwicklungsschwierigkeiten vollständiger benutzerdefinierter Tags sind unvorstellbar, und benutzerdefinierte Tags sind eng mit der Steuerungsebene verbunden, was der Schwierigkeit eine weitere Dimension verleiht. Daher bringen die von struts2 bereitgestellten benutzerdefinierten Tags große Vorteile für die Geschäftsentwicklung Sprung.

Es gibt zwei wichtige Technologien in Servlet. Es gibt relativ wenige Szenarien, in denen Listener in der Webentwicklung verwendet werden. Sie können in den meisten Fällen ignoriert werden Der am häufigsten verwendete Listener ist möglicherweise der Listener für die Erstellung und Zerstörung von ServletContext. Er ist an den Lebenszyklus der Webanwendung gebunden Anwendung Initialisieren und zerstören Sie die globalen Informationen der Anwendung, z. B. den Initialisierungsvorgang des Federcontainers. Interessanter ist der Filter in struts2. Sie haben die gleiche Funktion und werden zum Abfangen von Anforderungen verwendet. Da Interceptoren in struts2 natürlich praktischer sind Die vom Abfangjäger verwendete Technologie ist fortschrittlicher als die des Filters, da der Abfangjäger Reflexionstechnologie verwendet, sodass der Abfangjäger einen größeren Bereich abfängt, Anforderungen besser steuern kann und die Aufgaben, die er ausführen kann, farbenfroher sind.

Das erste Mal, dass ich mit Struts2 in Kontakt kam, war im GXPT-System. Jemand sagte mir, dass einer der Zwecke des Struts-Designs darin besteht, den Betrieb von Anforderungs- und Antwortobjekten in der Kontrollschicht zu blockieren, weil diese beiden Söhne des http-Protokolls führen dazu, dass die Ideen in der Webentwicklung verwirrend sind, aber in der tatsächlichen Entwicklung verwende ich diese beiden Objekte oft unbewusst. In Struts2 werden zu viele Reflexionsmechanismen verwendet, insbesondere die Verwendung von Anmerkungen für die Konfiguration. Die direkte Verwendung von Servlets verbessert definitiv die Ausführungseffizienz von Webanwendungen. Tatsächlich war dies schwierig, da ich die Federtechnologie zu diesem Zeitpunkt im Servlet nicht flexibel nutzen konnte.

Spring-Technologie kann als die wichtigste Technologie in der Java-Unternehmensentwicklung bezeichnet werden, aber es ist wirklich schwierig, die Rolle und Bedeutung von Spring wirklich zu verstehen (Beispiel: Deklarative Transaktionen sind einfach zu verwenden usw.) Nur wenn wir diese beiden Technologien genau verstehen, können wir verstehen, warum der Spring-Rahmen so viele Dinge aufnehmen kann.

Die erste Erklärung für die IOC-Technologie ist „Inversion of Control“. Diese beiden Namen sind wörtlich zu verstehen, aber wenn Sie ihre Prinzipien verstehen, werden Sie feststellen, wie genau sie sind werden beschrieben. Die Essenz der IOC-Technologie ist die Technologie zum Erstellen von Objekten. In Java erfolgt die Instanziierung einer Klasse jedes Mal, wenn eine neue Klasse erstellt wird Es erscheint sehr verschwenderisch, ein neues Instanzobjekt zu erstellen, und manchmal ist diese Art der Verschwendung ziemlich gefährlich, da wir bei der Entwicklung von Programmen häufig nur eine bestimmte Klasse benötigen, die derzeit nur ein Instanzobjekt erzeugen kann Um den Singleton-Modus zu verwenden, können wir auch übergeben Die Factory-Methode generiert Objekte, wenn sie den obigen Text sehen Eins-zu-eins. Das Scope-Attribut „single“ generiert Singleton-Objekte, und „prototype“ generiert neue Objekte. Die Factory-Methode generiert Objekte. Man kann sagen, dass Spring-Beans Werkzeuge zur Herstellung von Objekten sind. In der objektorientierten Programmierung entspricht ein Objekt der Darstellung einer Entität im Leben.

Zum Beispiel haben wir ein Objekt, das zur Durchführung von Jagdoperationen verwendet wird. Dann enthält das Jagdobjekt zwei Hilfsobjekte: Personen und Waffen . Nur Menschen und Waffen Die Waffe wird zum Jagdgegenstand gegeben, so dass der Jagdgegenstand den Jagdvorgang abschließen kann. Allerdings ist der Bau eines Gegenstands aus einer Person und einer Waffe nicht so einfach, wie es scheint Zum Beispiel brauchen wir Metall, Werkzeugmaschinen und Kugeln, und Maschinenwerkzeuge und Kugeln sind zwei neue Objekte, die einzeln verschachtelt und miteinander verbunden sind. Stellen Sie sich vor, wie kompliziert es ist, eine Waffe zu bauen Wenn das, was wir konstruieren möchten, kein einfacher Flugzeugträger ist, sind die Kosten für die Konstruktion dieses Objekts unvorstellbar. Wie kann die Verschachtelung und gegenseitige Abhängigkeit solcher Objekte beseitigt werden?

Spring stellt einen Container bereit. Wir definieren die Abhängigkeiten jedes Objekts in der XML-Datei und der Container vervollständigt die Konstruktion des Objekts in unserem Java-Code Es kann aus dem Container abgerufen werden, wenn es instanziiert wird, und dann wird der Konstruktionsvorgang des Objekts vom Federcontainer übernommen, daher wird dies als Umkehrung der Kontrolle bezeichnet. Die Bedeutung der Umkehrung der Kontrolle ist, dass die Funktion Die Anzahl der erstellten Objekte im Java-Programm wird vom Container übernommen. Wenn ein Programm ein Objekt verwenden möchte, wird dies vom Container in das Programm eingefügt.

In der Java-Entwicklung möchten wir die von einer bestimmten Klasse bereitgestellten Funktionen verwenden. Die eine besteht darin, eine neue Klasse zu erstellen, und die andere Möglichkeit besteht darin, eine bestimmte Klasse in zu definieren In der neuen Klasse wird eine Assoziationsbeziehung zwischen den beiden Klassen hergestellt (denken Sie daran, dass es sich nicht um eine Vererbungsbeziehung handelt). Im Allgemeinen gibt es nur zwei Typen: einen über den Konstruktor und einen über die setXXX-Methode. Dies sind die beiden vom Federcontainer verwendeten Standardinjektionsmethoden.

Ob es sich um die oben erwähnte Vererbungsmethode oder die Assoziationsmethode handelt, es handelt sich tatsächlich um Entwicklungsmethoden zur Verbesserung der Fähigkeiten des Zielobjekts. Im Entwurfsmuster gibt es einen Proxy-Modus, der den Vererbungsmodus kombiniert Der Agentenmodus ist eine Synthese aus dem Vererbungsmodus und dem Assoziationsmodus. Die Funktion dieser Synthese besteht jedoch nicht darin, das Problem der Objektinjektion zu lösen, sondern darin, ein Kindermädchen oder eine Sekretärin für das spezifische Operationsobjekt zu finden. Dies ist dasselbe wie der Chef Nr. 2 im Roman. Dieser Anführer Nr. 2 stellt ein bestimmtes Instanzobjekt für die Außenwelt dar. Der Eingang und Ausgang des Instanzobjekts erfolgt über diesen Anführer Nr. 2, da das spezifische Instanzobjekt ist der Anführer Nr. 1, und der Anführer Nr. 1 muss große Dinge tun, daher müssen einige transaktionale, sich wiederholende Aufgaben wie das Zubereiten von Tee und das Ordnen von Autos nicht vom Kopf Nr. 1 belästigt werden, sondern werden von ihm erledigt Nr. 2: Die Idee von AOP löst die Transaktionsaspekte der Programmentwicklung und hat nichts mit den Kerngeschäftsproblemen zu tun. Aop ist auch eine Möglichkeit, Code zu speichern.

Das Wesentliche der Kerntechnologie von Spring ist ein Kommunikationsmechanismus. Spring versucht immer sein Bestes, um den Informationsfluss zwischen den beiden Parteien aufrechtzuerhalten und gleichzeitig die Kommunikationskosten beider Parteien zu senken Eine Person, die gut in der Kommunikation ist, muss der Leiter des Unternehmens sein. Eine Führungskraft, die gut in der Kommunikation ist, kann die Begeisterung verschiedener Ressourcen mobilisieren. Eine Führungskraft, die gut in der Kommunikation ist, wird für alle Arten von Menschen offen sein Der heutige Frühling ist also eine große Kiste, in der alles eingebaut werden kann.

Der Frühling ist einer Bank sehr ähnlich. Er kann nicht direkt materiellen Wohlstand schaffen, aber alle Ressourcen müssen über ihn zirkulieren. Er kann die Richtung der wirtschaftlichen Entwicklung steuern Die Rolle von Spring besteht in der Entkopplung zwischen Programmen. Spring kann die Kopplung zwischen verschiedenen Modulen verringern. Der Grund dafür ist, dass bei der Programmentwicklung die Informationskommunikation zwischen verschiedenen Modulen durch Objektübertragung erfolgt und eine reibungslose Übertragung von Objekten erfolgen muss Wenn Sie Objekte gut erstellen und die Konstruktionsmethode von Objekten verwalten, können Sie die Objektübertragung gut verwalten. Dies ist der Vorteil, den Spring für das Design der Systemarchitektur mit sich bringt.

Verwandte Lernempfehlungen: Java Basic Tutorial

Das obige ist der detaillierte Inhalt vonWozu dient das Java-Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage