Java Webanwendung wird verwendet, um dynamische Websites zu erstellen. Java bietet Unterstützung für Webanwendungen durch Servlets und JSPs. Wir können eine Website mit statischen HTML-Seiten erstellen, aber wenn wir möchten, dass Informationen dynamisch sind, benötigen wir eine Webanwendung.
Java Webanwendung
Ziel dieses Artikels ist es, grundlegende Details zu den verschiedenen Komponenten einer Webanwendung bereitzustellen und zu zeigen, wie wir Servlet und JSP verwenden können, um unsere erste Java-Webanwendung zu erstellen.
- Webserver und Client
- HTML und HTTP
- Verständnis der URL
- Warum benötigen wir Servlets und JSPs?
- Erste Webanwendung mit Servlet und JSP
- Webcontainer
- Verzeichnisstruktur der Webanwendung
- Bereitstellungsbeschreibung
Webserver und Client
Ein Webserver ist eine Software, die die Anfragen des Clients verarbeitet und die Antwort an den Client zurücksendet. Zum Beispiel ist Apache einer der am häufigsten verwendeten Webserver. Der Webserver läuft auf einer physischen Maschine und hört auf Anfragen des Clients an einem bestimmten Port. Ein Webclient ist eine Software, die bei der Kommunikation mit dem Server hilft. Einige der am häufigsten verwendeten Webclients sind Firefox, Google Chrome, Safari, usw. Wenn wir etwas vom Server anfordern (über die URL), kümmert sich der Webclient darum, eine Anfrage zu erstellen, sie an den Server zu senden und dann die Antwort des Servers zu analysieren und dem Benutzer zu präsentieren.
HTML und HTTP
Webserver und Webclient sind zwei separate Softwareprogramme, daher muss es eine gemeinsame Sprache für die Kommunikation geben. HTML ist die gemeinsame Sprache zwischen Server und Client und steht für Hypertext Markup Language. Webserver und Client benötigen ein gemeinsames Kommunikationsprotokoll, HTTP (Hypertext Transfer Protocol) ist das Kommunikationsprotokoll zwischen Server und Client. HTTP läuft auf dem TCP/IP-Kommunikationsprotokoll. Einige wichtige Teile der HTTP-Anfrage sind:
- HTTP-Methode – auszuführende Aktion, normalerweise GET, POST, PUT usw.
- URL – Seite, auf die zugegriffen werden soll
- Formulardaten – ähnlich wie Argumente in einer Java-Methode, zum Beispiel Benutzername, Passwortdetails von der Login-Seite.
Beispiel HTTP-Anfrage:
GET /FirstServletProject/jsps/hello.jsp HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
Einige der wichtigen Teile der HTTP-Antwort sind:
- Statuscode – eine Ganzzahl, um anzuzeigen, ob die Anfrage erfolgreich war oder nicht. Einige der bekannten Statuscodes sind 200 für Erfolg, 404 für Nicht gefunden und 403 für Zugriff verweigert.
- Inhaltstyp – Text, HTML, Bild, PDF usw. Auch bekannt als MIME-Typ
- Inhalt – tatsächliche Daten, die vom Client gerendert und dem Benutzer angezeigt werden.
Beispiel HTTP-Antwort:
200 OK
Date: Wed, 07 Aug 2013 19:55:50 GMT
Server: Apache-Coyote/1.1
Content-Length: 309
Content-Type: text/html;charset=US-ASCII
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Hello</title>
</head>
<body>
<h2>Hi There!</h2>
<br>
<h3>Date=Wed Aug 07 12:57:55 PDT 2013
</h3>
</body>
</html>
MIME-Typ oder Inhaltstyp: Wenn Sie den obigen Beispiel-HTTP-Antwortheader sehen, enthält er das Tag „Content-Type“. Es wird auch MIME-Typ genannt und vom Server an den Client gesendet, um ihn darüber zu informieren, welche Art von Daten er sendet. Es hilft dem Client bei der Darstellung der Daten für den Benutzer. Einige der am häufigsten verwendeten MIME-Typen sind text/html, text/xml, application/xml usw.
URL verstehen
URL ist das Akronym für Universal Resource Locator und wird verwendet, um den Server und die Ressource zu lokalisieren. Jede Ressource im Web hat ihre eigene eindeutige Adresse. Schauen wir uns Teile der URL an einem Beispiel an. https://localhost:8080/FirstServletProject/jsps/hello.jsp https:// – Dies ist der erste Teil der URL und gibt das Kommunikationsprotokoll an, das für die Server-Client-Kommunikation verwendet werden soll. localhost – Die eindeutige Adresse des Servers, meistens ist es der Hostname des Servers, der auf eine eindeutige IP-Adresse abbildet. Manchmal zeigen mehrere Hostnamen auf die gleichen IP-Adressen, und der Webserver-Virtual-Host kümmert sich darum, eine Anfrage an die bestimmte Serverinstanz zu senden. 8080 – Dies ist der Port, auf dem der Server hört, er ist optional und wenn wir ihn nicht in der URL angeben, geht die Anfrage an den Standardport des Protokolls. Portnummern von 0 bis 1023 sind reservierte Ports für bekannte Dienste, zum Beispiel 80 für HTTP, 443 für HTTPS, 21 für FTP, usw. FirstServletProject/jsps/hello.jsp – Angeforderte Ressource vom Server. Es kann sich um statisches HTML, PDF, JSP, Servlets, PHP usw. handeln.
Warum brauchen wir Servlet und JSPs?
Webserver sind gut für statische Inhalte wie HTML-Seiten, aber sie wissen nicht, wie man dynamische Inhalte generiert oder Daten in Datenbanken speichert. Daher benötigen wir ein weiteres Werkzeug, das wir verwenden können, um dynamische Inhalte zu generieren. Es gibt mehrere Programmiersprachen für dynamische Inhalte wie PHP, Python, Ruby on Rails, Java Servlets und JSPs. Java Servlets und JSPs sind serverseitige Technologien, die die Fähigkeiten von Webservern erweitern, indem sie Unterstützung für dynamische Antworten und Datenpersistenz bieten.
Java Webentwicklung
Erste Webanwendung mit Servlet und JSP
Wir werden „Eclipse IDE for Java EE Developers“ für die Erstellung unserer ersten Servlet-Anwendung verwenden. Da Servlet eine serverseitige Technologie ist, benötigen wir einen Webcontainer, der die Servlet-Technologie unterstützt. Daher werden wir den Apache Tomcat Server verwenden. Die Einrichtung ist sehr einfach, und diesen Teil überlasse ich Ihnen. Für eine einfache Entwicklung können wir Tomcat mit Eclipse konfigurieren, was die Bereitstellung und Ausführung von Anwendungen erleichtert. Gehen Sie zu Eclipse Preferences, wählen Sie Server Runtime Environments und wählen Sie die Version Ihres Tomcat-Servers aus. Bei mir ist es Tomcat 7. Geben Sie das Verzeichnis für Apache Tomcat und die JRE-Informationen an, um die Laufzeitumgebung hinzuzufügen. Gehen Sie nun zum Servers-View und erstellen Sie einen neuen Server wie im folgenden Bild, der auf der zuvor hinzugefügten Laufzeitumgebung verweist.
Hinweis: Wenn das Servers-Tab nicht sichtbar ist, können Sie Window > Show View > Servers auswählen, damit es im Eclipse-Fenster sichtbar wird. Versuchen Sie, den Server anzuhalten und neu zu starten, um sicherzustellen, dass alles einwandfrei funktioniert. Wenn Sie den Server bereits aus dem Terminal gestartet haben, müssen Sie ihn von dort aus stoppen und dann von Eclipse aus starten, sonst funktioniert es nicht perfekt. Jetzt sind wir bereit mit unserer Einrichtung, das erste Servlet zu erstellen und es auf dem Tomcat-Server auszuführen. Wählen Sie File > New > Dynamic Web Project und verwenden Sie das folgende Bild, um als Server die zuvor hinzugefügte Laufzeitumgebung und als Modulversion 3.0 anzugeben, um unser Servlet gemäß den Servlet 3.0-Spezifikationen zu erstellen.
Sie können direkt auf die Schaltfläche „Finish“ klicken, um das Projekt zu erstellen, oder Sie können auf die Schaltflächen „Next“ klicken, um andere Optionen zu überprüfen. Wählen Sie nun File > New > Servlet und verwenden Sie das folgende Bild, um unser erstes Servlet zu erstellen. Auch hier können Sie auf „Finish“ klicken oder über die Schaltfläche „Next“ andere Optionen überprüfen.
Wenn wir auf die Schaltfläche „Finish“ klicken, wird unser Servlet-Skelettcode generiert. Wir müssen nicht alle verschiedenen Methoden und Imports im Servlet eingeben und sparen so Zeit. Jetzt fügen wir etwas HTML-Code mit dynamischen Daten im doGet()-Methode hinzu, die für HTTP GET-Anfragen aufgerufen wird. Unser erstes Servlet sieht so aus.
package com.journaldev.first;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstServlet
*/
@WebServlet(description = "My First Servlet", urlPatterns = { "/FirstServlet" , "/FirstServlet.do"}, initParams = {@WebInitParam(name="id",value="1"),@WebInitParam(name="name",value="pankaj")})
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public static final String HTML_START="";
public static final String HTML_END="";
/**
* @see HttpServlet#HttpServlet()
*/
public FirstServlet() {
super();
// TODO Auto-generierter Konstruktor-Stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
Date date = new Date();
out.println(HTML_START + "Hi There!
Date="+date +"
"+HTML_END);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generierter Methoden-Stub
}
}
Vor Servlet 3 mussten wir die URL-Musterinformationen im Bereitstellungsdeskriptor der Webanwendung angeben, aber Servlet 3.0 verwendet Java-Annotationen, die leicht verständlich sind und die Fehleranfälligkeit verringern. Wählen Sie jetzt die Option Run > Run on Server aus dem Servlet-Editor-Fenster und verwenden Sie die untenstehenden Bilder für die Optionen.
Nach dem Klicken auf Fertig öffnet sich der Browser in Eclipse, und wir erhalten die folgende HTML-Seite.
Sie können sie aktualisieren, um zu überprüfen, dass das Datum dynamisch ist und sich ständig ändert. Sie können es auch außerhalb von Eclipse in jedem anderen Browser öffnen. Servlet wird also verwendet, um HTML zu generieren und es als Antwort zu senden. Wenn Sie die Implementierung von doGet() betrachten, erstellen wir tatsächlich ein HTML-Dokument und schreiben es im Response-PrintWriter-Objekt. Wir fügen dynamische Informationen dort hinzu, wo wir sie brauchen. Das ist gut für den Anfang, aber wenn die Antwort umfangreich ist und viele dynamische Daten enthält, ist sie fehleranfällig und schwer zu lesen und zu pflegen. Dies ist der Hauptgrund für die Einführung von JSPs. JSP ist auch eine serverseitige Technologie und ähnelt HTML mit zusätzlichen Funktionen, um dynamischen Inhalt hinzuzufügen, wo wir ihn brauchen. JSPs eignen sich gut für die Präsentation, da sie einfach zu schreiben sind, da sie wie HTML sind. Hier ist unser erstes JSP-Programm, das dasselbe macht wie das oben stehende Servlet.
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Hello</title>
</head>
<body>
<h2>Hi There!</h2>
<br>
<h3>Date=<%= new Date() %>
</h3>
</body>
</html>
Wenn wir obigen JSP ausführen, erhalten wir die Ausgabe wie im folgenden Bild. Die endgültige Projektstruktur sieht in Eclipse wie im folgenden Bild aus.
FirstServlet-Projekt herunterladen
Servlet Hallo Welt Beispielprojekt herunterladen
Wir werden Servlets und JSPs in zukünftigen Beiträgen genauer betrachten, aber bevor wir diesen Beitrag abschließen, sollten wir ein gutes Verständnis einiger Aspekte von Java-Webanwendungen haben.
Web-Container
Tomcat ist ein Web-Container. Wenn eine Anfrage vom Client an den Webserver gestellt wird, leitet dieser die Anfrage an den Webcontainer weiter, und es ist die Aufgabe des Webcontainers, die richtige Ressource zur Bearbeitung der Anfrage (Servlet oder JSP) zu finden und dann die Antwort der Ressource zu verwenden, um die Antwort zu generieren und dem Webserver bereitzustellen. Dann sendet der Webserver die Antwort an den Client zurück. Wenn der Webcontainer die Anfrage erhält und es sich um ein Servlet handelt, erstellt der Container zwei Objekte HTTPServletRequest und HTTPServletResponse. Dann sucht er das richtige Servlet anhand der URL und erstellt einen Thread für die Anfrage. Dann ruft er die Servlet-Service ()-Methode auf, und je nachdem, welche HTTP-Methode verwendet wird, werden die doGet ()- oder doPost ()-Methoden aufgerufen. Servlet-Methoden generieren die dynamische Seite und schreiben sie in die Antwort. Sobald der Servlet-Thread abgeschlossen ist, wandelt der Container die Antwort in eine HTTP-Antwort um und sendet sie an den Client zurück. Einige wichtige Arbeiten, die vom Webcontainer durchgeführt werden, sind:
- Kommunikationsunterstützung – Der Container bietet eine einfache Möglichkeit zur Kommunikation zwischen Webservern und Servlets sowie JSPs. Aufgrund des Containers müssen wir keinen Server-Socket erstellen, um Anfragen vom Webserver zu empfangen, die Anfrage zu analysieren und eine Antwort zu generieren. Alle diese wichtigen und komplexen Aufgaben werden vom Container erledigt, und alles, worauf wir uns konzentrieren müssen, ist unsere Geschäftslogik für unsere Anwendungen.
- Lebenszyklus- und Ressourcenmanagement – Der Container kümmert sich um das Verwalten des Lebenszyklus des Servlets. Der Container lädt die Servlets in den Speicher, initialisiert die Servlets, ruft Servletmethoden auf und zerstört sie. Der Container bietet auch Dienstprogramme wie JNDI für Ressourcenpooling und -management.
- Multithreading-Unterstützung – Der Container erstellt einen neuen Thread für jede Anfrage an das Servlet, und wenn er verarbeitet ist, endet der Thread. Servlets werden also nicht für jede Anfrage initialisiert und sparen Zeit und Speicher.
- JSP-Unterstützung – JSPs sehen nicht wie normale Java-Klassen aus, und der Webcontainer bietet Unterstützung für JSP. Jede JSP in der Anwendung wird vom Container kompiliert, in ein Servlet umgewandelt und dann vom Container wie andere Servlets verwaltet.
- Verschiedene Aufgaben – Der Webcontainer verwaltet den Ressourcenpool, optimiert den Speicher, führt den Garbage Collector aus, bietet Sicherheitskonfigurationen, Unterstützung für mehrere Anwendungen, Hot Deployment und viele andere Aufgaben im Hintergrund, die unser Leben erleichtern.
Verzeichnisstruktur der Webanwendung
Java-Webanwendungen sind als Web Archive (WAR) verpackt und haben eine definierte Struktur. Sie können das oben genannte dynamische Webprojekt als WAR-Datei exportieren und entpacken, um die Hierarchie zu überprüfen. Es wird etwas Ähnliches wie das unten stehende Bild sein.
Bereitstellungsbeschreibung
web.xml Datei ist die Bereitstellungsbeschreibung der Webanwendung und enthält eine Zuordnung für Servlets (vor 3.0), Willkommensseiten, Sicherheitskonfigurationen, Sitzungs-Timeout-Einstellungen usw. Das ist alles für das Tutorial zur Java-Webanwendungsstart, wir werden Servlets und JSPs in zukünftigen Beiträgen genauer erkunden. Update: Das nächste Tutorial in dieser Serie ist Java Servlets Tutorial
Source:
https://www.digitalocean.com/community/tutorials/java-web-application-tutorial-for-beginners