Java Servlet ist ein Programm, das dynamische WEB-Seiten in in Java implementierten WEB-Anwendungen generiert. Die WEB-Anwendung ist ein Server / Client-System. Wie in der folgenden Abbildung dargestellt, sendet der Client eine Anforderung an den Server und der Server gibt eine Antwort an den Client zurück, um zu arbeiten.
Java Servlet funktioniert nicht alleine, sondern mit einer Software, die als Servlet-Container bezeichnet wird. Anlegestelle entspricht diesem Servlet-Container. Jetty ist leicht und einfach zu installieren. Wenn Sie eine Anfrage von Ihrem Webbrowser an Ihren Webserver senden, erhält Jetty diese Anfrage. Das Servlet generiert eine dynamische WEB-Seite entsprechend der Art der Anforderung, und Jetty sendet diese dynamische WEB-Seite als Antwort an den WEB-Browser. Der WEB-Browser zeigt diese dynamische WEB-Seite an.
JRE (Java Runtime Environment) ist erforderlich, um Java Servlet, Eclipse und Jetty auszuführen. Laden Sie hier OpenJDK herunter, um die JRE zu erhalten. Wenn Sie JRE nicht installiert haben, wird beim Starten von Eclipse eine Fehlermeldung angezeigt. Sie müssen dies daher tun, bevor Sie Eclipse installieren.
Gehen Sie zur offiziellen OpenJDK-Website unten und klicken Sie im Download-Bereich auf den Link jdk.java.net / 14
. (Der Link für "jdk.java.net / 14" ändert sich jedes Mal, wenn das OpenJDK aktualisiert wird.)
https://openjdk.java.net/
Klicken Sie links in der Liste der Links auf Java SE 11. (Wenn Sie die neueste Version von OpenJDK herunterladen möchten, können Sie OpenJDK von dieser Site herunterladen.) https://jdk.java.net/14/
Klicken Sie auf Windows / x64 Java Development Kit. https://jdk.java.net/java-se-ri/11
"openjdk-11 + 28_windows-x64_bin.zip" wird heruntergeladen.
Wenn der Download abgeschlossen ist, entpacken Sie ihn in einen beliebigen Ordner und fügen Sie den Systemumgebungsvariablen den absoluten Pfad "jdk-11 \ bin" hinzu. (Hier habe ich es in C: \ openjdk entpackt und den Systemumgebungsvariablen "C: \ openjdk \ jdk-11 \ bin" hinzugefügt.)
Starten Sie die Eingabeaufforderung und überprüfen Sie die Java-Version. (Wenn es openjdk 11 ist, ist es OK.)
>java --version
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Installieren Sie nach Abschluss der OpneJDK-Installation Eclipse.
Gehen Sie zur Download-Site des Eclipse-Paketinstallationsprogramms und klicken Sie in der "Eclipse-IDE für Java-Entwickler" auf "Windows 64-Bit". https://www.eclipse.org/downloads/packages/
Wenn Sie sich auf der Download-Seite befinden, klicken Sie auf die Schaltfläche Herunterladen.
eclipse-java-2020-06-R-win32-x86_64.zip wird heruntergeladen.
Wenn der Download abgeschlossen ist, entpacken Sie ihn in einen beliebigen Ordner und doppelklicken Sie auf "eclipse.exe". (Sie müssen beim Start den Pfad des Arbeitsbereichsordners eingeben, aber die Standardeinstellungen beibehalten.)
Holen Sie sich Jetty von der folgenden Website.
Klicken Sie auf der folgenden Website unter "Eclipse Jetty Downloads" auf ".zip". ⇒ jetty-distribution-9.4.31.v20200723.zip wird heruntergeladen. https://www.eclipse.org/jetty/download.html
Wenn der Download abgeschlossen ist, entpacken Sie ihn in einen beliebigen Ordner.
Initialisieren Sie Eclipse, bevor Sie ein Projekt erstellen. Wenn Sie es zu Beginn einmal einstellen, müssen Sie es beim nächsten Mal nicht mehr einstellen.
Führen Sie das Hauptmenü "Fenster"> "Einstellungen" aus, um das Dialogfeld "Einstellungen" zu öffnen.
Wählen Sie in der Baumstruktur links Java> Installierte JREs aus und stellen Sie sicher, dass der OpenJDK 11-Pfad festgelegt ist.
Stellen Sie den Zeichencode ein. Hier werden wir es für Linux ändern, vorausgesetzt, es funktioniert auch unter Linux. Wählen Sie "Allgemein"> "Arbeitsbereich" aus dem Baum links, aktivieren Sie "Andere" in "Textdateicodierung" und wählen Sie "UTF-8". Aktivieren Sie außerdem "Andere" unter "Zeilenbegrenzer für neue Textdateien", wählen Sie "Unix" aus und klicken Sie auf "Übernehmen".
Ändern Sie die Schriftart, um verstümmelte Zeichen zu vermeiden. Wählen Sie links in der Baumstruktur "Allgemein"> "Darstellung"> "Farben und Schriftarten", wählen Sie "Java Editor-Textschrift" und klicken Sie auf die Schaltfläche "Bearbeiten", um das Dialogfeld "Schriftarten" zu öffnen. Ändern Sie die Schriftart im Dialogfeld "Schriftart" und klicken Sie auf die Schaltfläche "Übernehmen". (Hier habe ich zu MS Gothic gewechselt. Abhängig von der ausgewählten Schriftart können die Zeichen verstümmelt sein. Wählen Sie daher eine Schriftart aus, die nicht verstümmelt.)
Klicken Sie auf die Schaltfläche Übernehmen und schließen.
Erstellen Sie zunächst ein Projekt.
Klicken Sie im Hauptmenü auf Datei> Neu> Java-Projekt, um das Dialogfeld Neues Java-Projekt zu öffnen.
Geben Sie den Projektnamen in das Feld "Projektname" ein und klicken Sie auf "Fertig stellen". (Hier lautet der Projektname "Beispiel", und andere Einstellungen bleiben als Standardeinstellungen erhalten.)
Wenn das Dialogfeld "Neues Modul-info.java" gestartet wird, klicken Sie auf die Schaltfläche "Nicht erstellen".
Vergewissern Sie sich, dass der Beispielprojektbaum im "Paket-Explorer" generiert wurde.
Jetty kann entweder den Server in XML konfigurieren und "start.jar" verwenden, um den Server zu starten, oder die Bibliothek importieren und die Serverkonfiguration in Java implementieren. Hier werden wir es auf die letztere Weise implementieren, also fügen Sie die Bibliothek dem Projekt hinzu.
Wählen Sie im Paket-Explorer den obersten Knoten der Baumstruktur aus, klicken Sie mit der rechten Maustaste und klicken Sie auf das Popup-Menü Eigenschaften, um das Dialogfeld Eigenschaften zu öffnen.
Wählen Sie links in der Baumstruktur "Java Build Path" aus, öffnen Sie die Registerkarte "Libraries", wählen Sie den Knoten "Class path" aus, klicken Sie auf die Schaltfläche "Add External JARs", wählen Sie die unten stehende Jetty-Bibliothek aus und wählen Sie " Klicken Sie auf die Schaltfläche "Fertig stellen".
[Zusätzliche Bibliothek] ・ Jetty-http-9.4.31.v20200723.jar ・ Jetty-io-9.4.31.v20200723.jar ・ Jetty-security-9.4.31.v20200723.jar ・ Jetty-Server-9.4.31.v20200723.jar ・ Jetty-Servlet-9.4.31.v20200723.jar ・ Jetty-util-9.4.31.v20200723.jar ・ Jetty-webapp-9.4.31.v20200723.jar -Servlet-api-3.1.jar ~~~
Erstellen Sie als Nächstes die Hauptklasse (die Klasse, die die Hauptmethode enthält). Implementieren Sie die WEB-Servereinstellungen in der Hauptklasse.
Wählen Sie im "Paket-Explorer" den obersten Knoten der Baumstruktur aus, klicken Sie mit der rechten Maustaste und klicken Sie auf das Popup-Menü "Neu"> "Klasse", um das Dialogfeld "Neue Java-Klasse" zu öffnen.
Geben Sie den Klassennamen in das Feld "Name" ein, aktivieren Sie "public static void main (String [] args)" und klicken Sie auf die Schaltfläche "Finish". (Geben Sie hier "SampleMain" in das Feld "Name" ein.)
Ein Knoten "sample"> "src"> "sample"> "SampleMain.java" wird dem Baum im "Package Explorer" hinzugefügt.
Der Quellcode für SampleMain.java wird wie folgt generiert.
package sample;
public class SampleMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
Fügen Sie SampleMain.java den folgenden Importvorgang hinzu.
package sample;
// ↓ Von hier aus hinzufügen import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; // ↑ Addiere hier
public class SampleMain {
~~~
Fügen Sie main () in SampleMain.java die folgende Implementierung hinzu. Fügen Sie hier dem URI "/" hinzu, sodass der Pfad der im Projekt platzierten HTML-Datei der URI ist. Stellen Sie außerdem den WEB-Server so ein, dass er Port 8080 verwendet.
public static void main (String [] args) löst eine Ausnahme aus {// Add löst eine Ausnahme aus // TODO Automatisch generierter Methodenstub // Auskommentieren // ↓ Von hier aus hinzufügen // URI "/" hinzufügen (zum Handler hinzufügen) ServletHolder holder = new ServletHolder(new SampleServlet()); ServletContextHandler handler = new ServletContextHandler(); handler.addServlet(holder, "/");
// Setze den Handler in die Handlerliste HandlerList handlerList = new HandlerList(); handlerList.setHandlers(new Handler[] {handler});
// Server erstellen Server Server = neuer Server (8080); // Instanziierung des Servers über den 8080-Port server.setHandler (handlerList); // Handlerliste auf Serverinstanz setzen server.start (); // Starten Sie den Server // ↑ Addiere hier } ~~~
Erstellen Sie ein Servlet. Verwenden Sie nach dem Erstellen der Klasse die automatische Generierungsmethode von Eclipse, um doGet () und doPost () hinzuzufügen. doGet () funktioniert, wenn es eine GET-Methode empfängt. Die GET-Methode wird ausgeführt, wenn über den WEB-Browser des Clients auf den WEB-Server zugegriffen wird. DoPost () funktioniert auch, wenn eine POST-Methode empfangen wird. Die POST-Methode funktioniert, wenn Daten vom Webbrowser-Formular des Clients an den Webserver gesendet werden.
Wählen Sie im Paket-Explorer den obersten Knoten in der Baumstruktur aus, klicken Sie mit der rechten Maustaste und klicken Sie im Popup-Menü auf Neu> Klasse.
Geben Sie den Klassennamen in das Feld "Name" und "javax.servlet.http.HttpServlet" in das Feld "Superklasse" ein und klicken Sie auf "Fertig stellen". (Geben Sie hier "SampleServlet" in das Feld "Name" ein.)
Ein Knoten "sample"> "src"> "sample"> "SampleServlet.java" wird dem Baum im "Package Explorer" hinzugefügt.
Wählen Sie im "Package Explorer" den Baumknoten "SampleServlet.java" aus und klicken Sie im Hauptmenü auf "Source"> "Override / Inplement Methods", um das Dialogfeld "Override / Inplement Methods" zu öffnen.
Aktivieren Sie "HttpServlet", "doGet" und "doPost" und klicken Sie auf die Schaltfläche "OK", um die doGet-Methode und die doPost-Methode zu generieren.
package sample;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
Fügen Sie SampleServlet.java den folgenden Importvorgang hinzu.
package sample;
import java.io.IOException;
import java.io.BufferedReader; // Hinzufügen import java.io.OutputStream; // Hinzufügen import java.io.FileReader; // Hinzufügen
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings ("serial") // Hinzugefügt public class SampleServlet extends HttpServlet { ~~~
Ändern Sie doGet () in SampleServlet.java in die folgende Implementierung. Wenn über den WEB-Browser auf den WEB-Server zugegriffen wird, wird die HTML-Datei der WEB-Seite gelesen und im Antworttext festgelegt, sodass sie antwortet.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet (req, resp); // Auskommentieren
// ↓ Von hier aus hinzufügen // Zeichenkodierung (Maßnahmen gegen verstümmelte japanische Zeichen) req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8");
String page = "";
String line;
// HTML-Datei lesen @SuppressWarnings("resource") BufferedReader buf = new BufferedReader(new FileReader("." + req.getRequestURI().toString())); while((line = buf.readLine()) != null){ page += line; }
// Antworttext erstellen OutputStream msgbody = resp.getOutputStream(); msgbody.write(page.getBytes()); msgbody.close(); // ↑ Addiere hier } ~~~
Ändern Sie doPost () in SampleServlet.java in die folgende Implementierung. Wenn Daten aus der Form des WEB-Browsers an den WEB-Server gesendet werden, wird der Anforderungsparameter (vom Client gesendete Daten) erfasst und im Antworttext als Antwort festgelegt.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost (req, resp); // Auskommentieren
// ↓ Von hier aus hinzufügen // Zeichenkodierung (Maßnahmen gegen verstümmelte japanische Zeichen) req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8");
String result = "Die folgende Nachricht wurde geschrieben
\ n";
// Anforderungsparameter abrufen if(req.getParameter("send").equalsIgnoreCase("write")){ result += req.getParameter("name"); }
// Antworttext erstellen OutputStream msgbody = resp.getOutputStream(); msgbody.write(result.getBytes()); msgbody.close(); // ↑ Addiere hier } ~~~
Erstellen Sie eine WEB-Seite, die im WEB-Browser des Clients angezeigt wird. Sie können HTML-Anweisungen in den Quellcode des Servlets einbetten. Wenn Sie jedoch eine Datei erstellen, können Sie eine weitere WEB-Seite erstellen, indem Sie die Datei einfach ersetzen.
Wählen Sie im "Paket-Explorer" den obersten Knoten der Baumstruktur aus, klicken Sie mit der rechten Maustaste und klicken Sie auf das Einblendmenü "Neu"> "Ordner", um das Dialogfeld "Neuer Ordner" zu öffnen.
Geben Sie den Ordnernamen (hier "Inhalt") in das Feld "Ordnername" ein und klicken Sie auf die Schaltfläche "Fertig stellen", um den Baumknoten "Inhalt" hinzuzufügen.
Wählen Sie den Baumknoten "Inhalt" aus, klicken Sie mit der rechten Maustaste und klicken Sie auf das Einblendmenü "Neu"> "Datei", um das Dialogfeld "Neue Datei erstellen" zu öffnen.
Geben Sie den Dateinamen (hier "index.html") in das Feld "Ordnername" ein und klicken Sie auf "Fertig stellen", um den Baumknoten "index.html" hinzuzufügen. Die Konfiguration von "Package Explorer" ist wie folgt.
Öffnen Sie den Baumknoten "index.html" und fügen Sie den folgenden HTML-Code hinzu.
<html>
<head>
<title>sample</title>
</head>
<body>
Geben Sie hier Text ein p>