Heim >Java >javaLernprogramm >Warum wurde JSP eliminiert?
Bei den meisten früheren Projekten handelte es sich um Java-Programmierer, die sowohl Vater als auch Mutter waren und am Front-End (Ajax/jquery/js/html/css usw.) und Backend (Java/MySQL/Oracle usw.) arbeiteten. ).
Mit der Entwicklung der Zeit haben viele große, mittlere und kleine Unternehmen nach und nach begonnen, die Grenzen zwischen Front-End und Back-End immer klarer zu unterscheiden. Front-End-Ingenieure sind nur für Front-End verantwortlich. End-Dinge, und Back-End-Ingenieure sind nur für Back-End-Dinge verantwortlich. Wie das Sprichwort sagt, gibt es Spezialisierungen. Wenn eine Person alles weiß, ist sie schließlich in nichts gut.
Empfohlener Kurs: Java-Tutorial.
Große und mittlere Unternehmen brauchen Fachkräfte, und kleine Unternehmen brauchen Generalisten, aber für die persönliche Karriereentwicklung empfehle ich, sie zu trennen. Wenn Sie für den Rest Ihres Lebens nur Java essen, lernen Sie kein CSS, JS usw.
Konzentrieren Sie Ihre Energie auf Java, JVM-Prinzipien, Spring-Prinzipien, MySQL-Sperren, Transaktionen, Multithreading, große Parallelität, verteilte Architektur, Microservices und zugehöriges Projektmanagement usw., damit Ihre Kernkompetenz verbessert wird immer höher, wie das Sprichwort sagt: Was Sie in das Leben investieren, wird Ihnen das Leben zurückgeben.
(Voller positiver Energie:
Wenn Sie erst einmal zur Elite einer Branche gehören, glauben Sie mir, wenn die Zeit gekommen ist, werden Ihnen alle Autos, Häuser, Frauen, Geld und Chancen geboten . Keine Sorge, wirklich. Je mehr Kenntnisse man hat, desto mehr Geld muss man natürlich auch haben Intelligenz.
Je stärker Ihre Fähigkeiten sind, desto mehr Wert schaffen Sie für das Unternehmen, und das Unternehmen bietet Ihnen verschiedene Vorteile, eine Win-Win-Situation.
Einmal Früher verwendeten unsere Java-Webprojekte mehrere Backend-Frameworks, SpringMVC/Struts + Spring + Spring JDBC/Hibernate/Mybatis usw.
Die meisten Projekte sind im Java-Backend, der Kontrollschicht, in drei Schichten unterteilt ( Controller/Aktion), Business-Schicht (Dienst/Verwaltung), Persistenzschicht (Dao).
Die Kontrollschicht ist für den Empfang von Parametern, den Aufruf relevanter Geschäftsschichten, die Kapselung von Daten und die Weiterleitung an JSP-Seiten verantwortlich. Verwenden Sie dann verschiedene Tags (jstl/el) oder handgeschriebenes Java (<%=%>) auf der JSP-Seite, um die Hintergrunddaten anzuzeigen.
Richtig?
Schauen wir uns zunächst diese Situation an. Die Anforderungen wurden festgelegt, der Code wurde geschrieben und die Tests wurden abgeschlossen. Steht es kurz vor der Veröffentlichung?
Sie müssen Maven oder Eclipse und andere Tools verwenden, um Ihren Code in ein Kriegspaket zu packen und dieses Kriegspaket dann im Webcontainer in Ihrer Produktionsumgebung (Tomcat/jboss/weblogic/websphere/jetty/) zu veröffentlichen. Harz), richtig?
Nach der Veröffentlichung müssen Sie Ihren Webcontainer starten und mit der Bereitstellung von Diensten beginnen. Zu diesem Zeitpunkt können Sie auf Ihre Website zugreifen, indem Sie den Domänennamen, DNS usw. konfigurieren (vorausgesetzt, Sie sind eine Website).
Mal sehen, sind alle Ihre Front-End- und Back-End-Codes in diesem Kriegspaket? Einschließlich Ihrer JS-, CSS-, Bilder- und verschiedenen Bibliotheken von Drittanbietern, oder?
Okay, geben Sie den Domainnamen Ihrer Website (www.xxx.com) in den Browser ein. Was passiert danach? (Diese Frage ist in vielen Unternehmen auch eine Interviewfrage)
Ich habe es gerade gesagt: Wenn Sie keine gute Grundlage haben, suchen Sie bitte selbst nach Kinderschuhen.
Der Browser leitet über IP zu Ihrem Dienst weiter. Nach dem TCP-Drei-Wege-Handshake beginnt er, über das TCP-Protokoll auf Ihren Webserver zuzugreifen Anfrage und leitet dann die Antwort zurück, um Ihre Antwort an den Browser zurückzugeben.
Nehmen wir also zunächst an, dass Ihre Homepage 100 Bilder und eine einzige Tabellenabfrage enthält. Zu diesem Zeitpunkt ist die scheinbare einzige http-Anfrage des Benutzers nicht die erste. Für Ihre 100 Bilder wird der Browser 100 HTTP-Anfragen nacheinander anfordern (jemand wird mir von dem Problem der langen und kurzen HTTP-Links erzählen, das hier nicht besprochen wird). Wenn der Server diese Anfragen empfängt, muss er Speicher verbrauchen, um einen Socket für die TCP-Übertragung zu erstellen.
Hier ist der wichtige Punkt: In diesem Fall ist der Druck auf Ihren Webserver sehr hoch, da alle Anfragen auf der Seite nur an Ihren Server gesendet werden. Wenn es nur eine Person gibt, ist das in Ordnung , aber wenn es 10.000 Personen gleichzeitig gibt. Was den Zugriff betrifft (sprechen wir nicht über Webserver-Cluster, sondern über Einzelinstanz-Webserver): Wie viele TCP-Links kann Ihr Server verarbeiten? Wie viel Speicher hat Ihr Server? Wie viele IOs können Sie aushalten? Wie viel Speicher haben Sie dem Webserver zugewiesen? Wird es ausfallen?
Deshalb gilt: Je größer und mittelgroße Webanwendungen sind, desto stärker müssen sie entkoppelt werden.
Theoretisch können Sie Ihre Datenbank + Anwendungsdienst + Nachrichtenwarteschlange + Cache + vom Benutzer hochgeladene Dateien + Protokolle usw. auf einem Host ablegen, aber das ist, als würden Sie alle Eier in einen Korb legen, die versteckten Gefahren liegen darin riesig.
Die normale verteilte Architektur muss zerlegt werden, Ihr Anwendungsserver-Cluster (vorne, hinten) + Dateiserver-Cluster + Datenbankserver-Cluster + Nachrichtenwarteschlangen-Cluster + Cache-Cluster usw.
Kommen wir zur Sache. Zunächst sollten wir versuchen, die Verwendung von JSP in zukünftigen Java-Webprojekten zu vermeiden. Wir sollten die Front- und Backends entkoppeln und mit verteilter Architektur spielen, damit unsere Anwendungsarchitektur stärker wird .
Problempunkte bei der Verwendung von JSP:
1. Dynamische Ressourcen und statische Ressourcen sind alle miteinander gekoppelt, und eine echte dynamische und statische Trennung kann nicht erreicht werden. Der Server steht unter großem Druck, da er verschiedene HTTP-Anfragen empfängt, z. B. CSS-HTTP-Anfragen, JS-Anfragen, Bilder, dynamische Codes usw. Sobald es ein Problem mit dem Server gibt, werden Front- und Backend zusammengespielt und die Benutzererfahrung wird extrem schlecht sein.
2. Nachdem der Front-End-Ingenieur den HTML-Code fertiggestellt hat, muss der Java-Ingenieur den HTML-Code in eine JSP-Seite ändern. Die Fehlerrate ist hoch (da die Seite häufig eine große Anzahl von JS-Codes enthält). ) und beide Parteien müssen bei der Änderung des Problems zusammenarbeiten. Entwicklung, Ineffizienz.
3.jsp muss auf einem Webserver ausgeführt werden, der Java unterstützt (z. B. Tomcat usw.), und Nginx kann nicht verwendet werden (Nginx soll bis zu 50.000 Einzelinstanz-HTTP-Parallelität haben, dieser Vorteil). verwendet werden), und die Leistung kann nicht verbessert werden.
4. Wenn Sie JSP zum ersten Mal anfordern, muss es in ein Servlet auf dem Webserver kompiliert werden.
5. Jedes Mal, wenn Sie JSP anfordern, greifen Sie auf das Servlet zu und verwenden dann den Ausgabestream, um die HTML-Seite auszugeben, was nicht so effizient ist wie die direkte Verwendung von HTML.
Es gibt viele Tags und Ausdrücke in 6.jsp. Front-End-Ingenieure werden beim Ändern der Seite überfordert und stoßen auf viele Schwachstellen.
7. Wenn viel Inhalt in JSP vorhanden ist, ist die Seitenreaktion sehr langsam, da sie synchron geladen wird.
Basierend auf einigen der oben genannten Schwachstellen sollten wir die Entwicklungslast des gesamten Projekts nach vorne verlagern, um eine echte Entkopplung von Front- und Back-End zu erreichen!
Der alte Weg war:
1. Das serverseitige Servlet oder der Controller empfängt die Anfrage (Routing-Regeln werden vom Backend formuliert und der größte Teil davon). die gesamte Projektentwicklung im Backend)
3. Rufen Sie den Dienst und den Dao-Code auf, um die Geschäftslogik zu vervollständigen
4. JSP zurückgeben
5.jsp zeigt etwas dynamischen Code an
2. Erreicht direkt die HTML-Seite (Routing-Regeln werden vom Frontend formuliert und das Gewicht der gesamten Projektentwicklung wird vorangetrieben)
3. Die HTML-Seite ist für den Aufruf der Serverschnittstelle zum Generieren von Daten verantwortlich (über Ajax usw. usw.)
4. Füllen Sie HTML aus, um dynamische Effekte anzuzeigen.
6. In der Vergangenheit verwendeten einige Leute Template-Frameworks wie Velocity/Freemarker, um statische Seiten zu generieren, aber jetzt wurde diese Praxis abgeschafft.
Der Hauptzweck dieses Artikels besteht darin, zu sagen, dass JSP in großen externen Java-Webprojekten eliminiert wurde, aber es heißt nicht, dass JSP für einige Studentenfreunde völlig ignoriert werden kann /servlet usw. Die relevanten Java-Webgrundlagen müssen noch gut beherrscht werden. Worauf basiert Ihrer Meinung nach das SpringMVC-Framework?
Das obige ist der detaillierte Inhalt vonWarum wurde JSP eliminiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!