1. WEB-Anwendung
B/S-Architektur (Browser/Server, Browser/Server)
Basierend auf dem HTTP-Übertragungsprotokoll ( (Hypertext Transfer Protocol, erinnern Sie sich an den Namen von HTML: Hypertext Markup Language)
WEB-Programme müssen auf Webcontainern wie Tomcat/Jboss/WebLogic usw. ausgeführt werden.
2. HTTP-Protokoll
HTTP verwendet TCP als unterstützendes Transportschichtprotokoll und der Standardport ist 80 (Standardport).
Hypertext Transfer Protocol (HTTP) ist ein Protokoll der Anwendungsschicht. HTTP ist ein Anforderungs-/Antwortprotokoll. Das heißt, nachdem ein Client eine Verbindung mit dem Server hergestellt hat, sendet er eine Anforderung an den Server. Nachdem der Server die Anforderung erhalten hat, gibt er entsprechende Antwortinformationen aus. ,
HTTP-Anforderungsnachricht besteht aus vier Teilen: Anforderungszeile, Anforderungsheader, Leerzeile und Anforderungstext. Das Folgende ist eine einfache Analyse des Anforderungsnachrichtenformats:
Anforderungszeile: Die Anforderung Die Zeile besteht aus drei Teilen: Methodenfeld, URL-Feld und HTTP-Protokollversionsfeld, getrennt durch Leerzeichen. Zu den häufig verwendeten HTTP-Anforderungsmethoden gehören GET, POST, HEAD, PUT, DELETE, OPTIONS, TRACE, CONNECT;
GET: Wenn der Client eine Ressource vom Server lesen möchte, verwenden Sie die GET-Methode. Die GET-Methode erfordert, dass der Server die über die URL gefundene Ressource in den Datenteil der Antwortnachricht einfügt und sie an den Client zurücksendet, also eine Ressource vom Server anfordert. Bei Verwendung der GET-Methode werden die Anforderungsparameter und die entsprechenden Werte an die URL angehängt. Ein Fragezeichen („?“) wird verwendet, um das Ende der URL und den Anfang der übergebenen Anforderungsparameter darzustellen Parameter ist begrenzt. Beispiel: /index.jsp?id=100&op=bind.
POST: Die POST-Methode kann verwendet werden, wenn der Client dem Server viele Informationen zur Verfügung stellt. Die POST-Methode sendet Daten an den Server, z. B. das Vervollständigen der Übermittlung von Formulardaten und das Senden der Daten zur Verarbeitung an den Server übermittelt. GET wird im Allgemeinen zum Abrufen/Abfragen von Ressourceninformationen verwendet, und POST enthält Benutzerdaten und wird im Allgemeinen zum Aktualisieren von Ressourceninformationen verwendet. Die POST-Methode kapselt die Anforderungsparameter in die HTTP-Anforderungsdaten und erscheint in Form von Name/Wert, wodurch eine große Datenmenge übertragen werden kann. Anforderungsheader: Der Anforderungsheader besteht aus Schlüsselwort-/Wertpaaren, einem Schlüsselwortpaar pro Zeile und Werte werden durch den englischen Doppelpunkt „:“ getrennt.
Der Anfrageheader informiert den Server über die Anfrage des Clients:
User-Agent: der Browsertyp, der die Anfrage generiert hat;
Akzeptieren: Liste der vom Client erkannten Antwortinhaltstypen; Sternchen „*“ wird verwendet, um Typen nach Bereich zu gruppieren. Verwenden Sie „*/*“, um anzugeben, dass alle Typen akzeptabel sind. Verwenden Sie „type/*“. alle Untertypen des akzeptablen Typs;
Accept-Language: die für den Client akzeptable natürliche Sprache
Accept-Encoding: die für den Client akzeptable Codierung ;
Accept-Charset: akzeptabler Antwortzeichensatz;
Host: Angeforderter Hostname, der es ermöglicht, dass sich mehrere Domänennamen in derselben IP-Adresse befinden, also virtuell Host;
Verbindung: Verbindungsmethode (Schließen oder Keepalive);
Cookie: wird im Client-Erweiterungsfeld gespeichert und sendet Informationen, die zum gleichen Domänennamen gehören Domain-Cookie;
Leerzeile: Nach dem letzten Anforderungsheader wird eine Leerzeile angezeigt, in der Wagenrücklauf- und Zeilenvorschubzeichen gesendet werden, um den Server darüber zu informieren, dass darunter keine weiteren Anforderungsheader vorhanden sind 🎜>
Anforderungspaketkörper: Der Anforderungspaketkörper wird nicht in der GET-Methode, sondern in der POST-Methode verwendet. Die POST-Methode eignet sich für Situationen, in denen Kunden ein Formular ausfüllen müssen. Die am häufigsten verwendeten im Zusammenhang mit dem Anforderungspaketkörper sind der Paketkörpertyp „Content-Type“ und die Paketkörperlänge „Content-Length“.
Statuszeile: Die Statuszeile besteht aus dem HTTP-Protokollversionsfeld, dem Statuscode und Statuscode Der Beschreibungstext besteht aus drei Teilen, die durch Leerzeichen getrennt sind. Der Statuscode besteht aus drei Ziffern. Die erste Ziffer gibt die Art der Antwort an. Es gibt fünf Kategorien häufig verwendeter Statuscodes:
1xx: Zeigt an, dass der Server die Client-Anfrage empfangen hat und der Client weiterhin Anfragen senden kann.
2xx: Zeigt an, dass der Server die Anfrage erfolgreich empfangen und verarbeitet hat.
3xx: Zeigt an dass der Server einen erneuten Versuch durch den Client erfordert.
4xx: Zeigt an, dass die Anfrage des Clients illegale Inhalte enthält.
5xx: Zeigt an, dass der Server die Anfrage des Clients nicht normal verarbeiten konnte und ein unerwarteter Fehler vorliegt aufgetreten;
Status Der Codebeschreibungstext hat die folgenden Werte:200 OK: Zeigt an, dass die Client-Anfrage erfolgreich ist;
400 Bad Request : Zeigt an, dass die Client-Anfrage einen Syntaxfehler aufweist und vom Server nicht verstanden werden kann. 401 Nicht autorisiert: Zeigt an, dass die Anfrage nicht autorisiert ist. Dieser Statuscode muss mit dem WWW-Authenticate-Header-Feld verwendet werden >
403 Verboten: Zeigt an, dass der Server die Anfrage erhalten hat, sich jedoch geweigert hat, den Dienst bereitzustellen. Geben Sie im Antworttext normalerweise den Grund für die Nichtbereitstellung des Dienstes an. 404 Nicht gefunden: Die angeforderte Ressource wird nicht gefunden nicht vorhanden, zum Beispiel wurde eine falsche URL eingegeben; 500 Interner Serverfehler: Zeigt an, dass der Server einen unerwarteten Fehler aufweist, der dazu führt, dass die Anfrage des Clients nicht abgeschlossen werden kann; Zeigt an, dass der Server derzeit nicht in der Lage ist, die Anfrage des Clients zu verarbeiten. Nach einer gewissen Zeit kehrt der Server möglicherweise zum Normalzustand zurück3. Servlet
Servlet ist der Kern von JavaWEB. Einfach ausgedrückt ist es ein in Java geschriebenes serverseitiges Programm. Wenn der Benutzer eine dynamische Anfrage stellt (eine statische Anfrage besteht darin, HTML direkt anzufordern), fordert er tatsächlich ein Servlet an
Der WEB-Container lädt das Servlet in den Speicher und initialisiert es über die Init-Methode
Service()-Methode Die entsprechende Verarbeitungsmethode doPost() oder doGet() wird entsprechend der Anforderungsmethode aufgerufen, und es gibt einige andere Anforderungsmethoden doPut() doOptions()... Diese Methoden werden jedoch nicht häufig verwendet und werden empfohlen aus Sicherheitsgründen blockiert werden.
Wenn der Server das Servlet nicht mehr benötigt (normalerweise, wenn der Server heruntergefahren wird), ruft der Server die destroy()-Methode des Servlets auf.
4. JSP
Java Server Pages ist eine Technologie, die statische Codierungsmaschinen und dynamische Codierung Java kombiniert Der Code ist in HTML eingebettet, Servlet war der Hauptteil mit relativ leistungsstarken Funktionen und erweitertem Design. Die HTML-Seite war jedoch vollständig Javas out.print(), das zeilenweise ausgibt, was für die Seite sehr wichtig ist Das Schreiben und Ändern war sehr umständlich, was SUN dazu veranlasste, JSP zu starten. JSP sind ebenso wie ASP und PHP eingebettete Sprachen. Darüber hinaus wird JSP beim Verschieben des WEB-Containers in Servlet kompiliert. Es wird auch gesagt, dass JSP eine aktualisierte Version von Servlet ist.
5. Tomcat
Es gibt viele Java-WEB-Container, hier nehmen wir Tomcat als Beispiel. Wie bereits erwähnt, müssen WEB-Programme auf WEB-Containern ausgeführt werden. Tomcat wird als WEB-Container zum Ausführen von Java-WEB-Programmen verwendet. Tomcat ist in der JAVA-Sprache geschrieben und erfordert JVM als laufende Umgebung.
Verzeichnisstruktur von Tomcat
bin……………………………… ausführbares Programm (Skript), Starten und Stoppen des Debuggens einiger bat.sh von Tomcat
conf………………………………………….Konfigurationsdateien webx.ml server.xml usw.
lib……………………………………. Jars erforderlich, damit Tomcat Paket
Protokolle……………….Protokolldatei
temp……………….Temporäre Datei
Webapps………… ausführen kann. ……WEB-Programm (kompilierte Projektdatei)
Arbeit……………………………….Generieren Sie eine JSP-Datei in eine Java-Datei in diesem Verzeichnis
Als Ergänzung tut Tomcat dies Kompilieren Sie JSP nicht in Echtzeit in Java-Dateien, sodass die Seite manchmal geändert wird und nicht rechtzeitig wirksam wird. Zu diesem Zeitpunkt müssen wir nur die entsprechenden Dateien im Arbeitsverzeichnis löschen.
6. Java-WEB-Projektstruktur
Im Allgemeinen handelt es sich bei den Java-Projekten, über die wir oft sprechen, grundsätzlich um WEB-Projekte (B/S-Architektur). Es ist nicht so, dass Java keine C/S-Programme ausführen kann. Tatsächlich ist Javas Swing die beliebteste Sprache zum Zeichnen von Schnittstellen geworden Dazu wurde ein Java-C/S-Programm entwickelt. Wir sprechen hauptsächlich über Java-WEB-Projekte. Das Folgende ist die grundlegendste Projektstruktur.
src………………………………………….JAVA-Quellcode, Java-Dateiverzeichnis
webContent/webRoot…………Projektfreigabeverzeichnis
WEB- INF
lib………………………………….jar-Paket, das für das Projekt benötigt wird
web.xml……………… Eingang zum WEB-Programm
Das Obige ist die Kernstruktur des Java-WEB-Projekts. In der tatsächlichen Entwicklung wird die Erstellung des Projekts komplizierter sein, insbesondere nach der Referenzierung des Frameworks, was zu einer Zunahme der Konfigurationsdateien führt einige neue Verzeichnisse.
7. Entwicklungs-Framework
Wenn der Client eine dynamische Anfrage initiiert, wird die Anfrage zur Verarbeitung an das Servlet weitergeleitet Dann kehrt zurück und die gesamte Anfrage wird verarbeitet. Die gesamte Arbeit wird in Servlet abgewickelt, was relativ einfach erscheint. Jedes Mal, wenn eine andere Anfrage benötigt wird, wird in der tatsächlichen Entwicklung jedoch ein Servlet geschrieben, wenn es viele Funktionsmodule gibt um viele Servlets zu schreiben, und wenn wir sie ändern möchten Die Rückgabe einer Anforderung muss auch durch Ändern des Java-Codes (Servlet) erreicht werden.
Dies ist problematischer für die Funktionserweiterung und -wartung und hat daher die Popularität vieler integrierter Frameworks für die gleichzeitige Entwicklung wie Webwork, Struts, SpringMVC, Jfinal usw. gefördert, die allesamt gängige Java-WEB-Entwicklungsframeworks sind .
Es gibt einen sehr allgemeinen Überblick über die Vorteile der Verwendung eines Frameworks. Durch die Wiederverwendung von Code in ähnlichen Projekten können Entwickler viel Zeit und Aufwand sparen mühsame Codierungsaufgaben ausführen. Lassen Sie die Benutzer sich nur um die Entwicklung des Kerngeschäfts kümmern, und das Framework hilft Ihnen dabei, verschiedene technische Probleme abzuschirmen, die nichts mit der ursprünglichen Technologie und Geschäftsentwicklung zu tun haben. Wenn Sie ein Framework jedoch gründlicher verstehen und geschickter nutzen möchten, müssen Sie dennoch die zugrunde liegenden Prinzipien verstehen und seine Quelle finden, nämlich Servlet.
Nehmen Sie SpringMVC als Beispiel, um das Funktionsprinzip kurz zu beschreiben
SprfngMVC implementiert die Servlet-Schnittstelle hauptsächlich über DispatcherServlet (Servlet-Dispatcher, konfiguriert in web_xml), auch Front- genannt Beim End-Controller kommen Anfragen vom Front-End zuerst hier an und er ist dafür verantwortlich, den entsprechenden Handler mit dem Hintergrund abzugleichen. Der Hauptworkflow von DispatcherServlet ist wie folgt:
1. Der Client sendet eine http-Anfrage an den Webserver und der Webserver analysiert die http-Anfrage. Wenn sie mit dem Anforderungszuordnungspfad von DispatcherServlet (angegeben in web.xml) übereinstimmt, überträgt der Webcontainer die Anfrage an DispatcherServlet .
2. Nach Erhalt dieser Anfrage findet DipatcherServlet den Prozessor-Controller (Handler), der die Anfrage basierend auf den Anfrageinformationen (einschließlich URL, HTTP-Methode, Anfrageheader und Anfrageparameter-Cookie usw.) verarbeitet die Konfiguration von HandlerMapping.
3. DispatclierServlet findet den entsprechenden Handler gemäß HandlerMapping, übergibt die Verarbeitungsleistung an den Handler (der Handler kapselt die spezifische Verarbeitung) und dann ruft der spezifische HandlerAdapter den Handler auf.
5. Nachdem Handler die Datenverarbeitung abgeschlossen hat, gibt er ein ModeAndView-Objekt an DispatcherServlet zurück.
6. Das von Handler zurückgegebene ModelAndView ist nur eine logische Ansicht und keine formale Ansicht ViewResolver zu Die Bearbeitungsansicht wird in eine echte Ansicht konvertiert (dieser Satz gibt einfach einen relativen Pfad zur zurückzugebenden Seite zurück und wird über den Try-Parser in die spezifische Seite konvertiert).
7. Der Dispatcher analysiert die Parameter in ModeAndView durch das Modell, analysiert sie und zeigt schließlich die vollständige Ansicht an und gibt sie an den Client zurück.
8. Verwenden Sie SpringMVC, um Funktionsmodule zu schreiben
Aufgrund der hohen Arbeitsbelastung der Framework-Konfiguration ist es auch erforderlich, verschiedene Technologien zu verstehen, daher werde ich es vorerst nicht beschreiben Sein. Lassen Sie uns kurz darüber sprechen, wie Sie ein Funktionsmodul basierend auf dem vorhandenen Framework in der tatsächlichen Entwicklung vervollständigen und den grundlegenden Prozess der Funktion verstehen:
1 Portal (JSP-Seite), im SpringMVC-Framework empfehlen wir keinen direkten Zugriff auf die JSP-Seite, daher wird der Zugriff auf unsere Anmeldeseite auch über den Hintergrund verarbeitet 2. Schreiben Sie die Seite 丨ogin.jsp und Der Login-Rückgabeseitenindex .jsp ;3. Der Write LoginController, der zwei Anforderungssteuerungsmethoden enthält, eine preLogin() und eine doLogin(), ist für die Verarbeitung der Anfrage für die Login-Seite verantwortlich (. Rückkehr zu login.jsp), doLogin() verarbeitet die Anmeldeanforderung und kehrt zu index.jsp zurück. 4. Die Anmeldeanfrage muss über das Formular oder Ajax in login.jsp erfolgen. Die Geschäftslogikverarbeitung „Request/preLogin“ kehrt zu login.jsp zurück à Geben Sie den Benutzernamen und das Passwort ein...Die Geschäftslogikverarbeitung „Request/doLogin“ gibt das Anmeldeergebnis index.jsp zurück.9. Weitere Grundkenntnisse
Datenbankoperationen, Jdbc/Hibernate/MybatisJSP-Tags, EL-Ausdrücke, Struts Tags, C-Tags usw.Grundlegende Front-End-Technologie CSS/JS/jQuery/AjaxDas obige ist der detaillierte Inhalt vonWesentliche Wissenspunkte für Javaweb. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!