JSP oder Java Server Pages ist eine Java-Technologie, mit der Sie dynamische Webseiten für Java-Anwendungen erstellen können. In diesem Artikel werden wir ausführlicher darüber sprechen, was JSP ist, einige der Fähigkeiten dieser Technologie diskutieren, uns die Struktur von JSP-Seiten ansehen und auch versuchen, einen praktischen Blick darauf zu werfen, was diese Java Server Pages sind. Aber lassen Sie uns zunächst über die Vorteile und die Bedeutung von JSP sprechen. JSP ermöglicht dem Entwickler:
Schauen wir uns an, wie Sie auf versteckte Objekte in JSP zugreifen können, einschließlich URL-Parameter. Starten Sie dazu Tomcat und öffnen Sie den Browser auf der Seite http://localhost:8080/. Gehen Sie dann auf die Seite Beispiele: Folgen Sie dann dem Link JSP-Beispiele: Folgen Sie auf der Beispielseite dem Link Implicit Objects -> Execute: Darauf Auf dieser Seite können Sie ein Beispiel für die Verwendung versteckter Objekte sehen. Unten sehen Sie einen Screenshot der Seite mit detaillierten Erläuterungen: Versuchen Sie, den Wert des Parameters
- Daten von einer Webseite in Java-Code empfangen;
- Daten aus Java-Code an eine Webseite senden;
- Schreiben Sie Java-Code direkt in HTML (Sie sollten dies jedoch nicht missbrauchen).
- JSP ist eine der wichtigsten Java-Webtechnologien;
- JSP wird in den meisten Unternehmen und Projekten häufig verwendet;
- JSP lässt sich nahtlos in Java-Servlets in einem Servlet-Container integrieren.
JSP-Definition
Hier ist eine Definition aus Wikipedia: JSP (JavaServer Pages) ist eine Technologie, die es Webentwicklern ermöglicht, Inhalte zu erstellen, die sowohl statische als auch dynamische Komponenten enthalten. Eine JSP-Seite enthält zwei Arten von Text: statische Quelldaten, die in einem der Textformate HTML, SVG, WML oder XML vorliegen können, und JSP-Elemente, die dynamische Inhalte erstellen. Darüber hinaus können JSP-Tag-Bibliotheken sowie Expression Language (EL) verwendet werden, um Java-Code in den statischen Inhalt von JSP-Seiten einzubetten. Der JSP-Seitencode wird mit dem Jasper JSP-Seitencompiler in Servlet-Java-Code übersetzt und dann in Java Virtual Machine (JVM)-Bytecode kompiliert. Servlet-Container, die JSP-Seiten ausführen können, sind in der plattformunabhängigen Java-Sprache geschrieben. Die JSP-Technologie ist eine plattformunabhängige, portable und leicht erweiterbare Technologie zur Entwicklung von Webanwendungen.JSP-Seitenstruktur
Im Allgemeinen bezieht sich JSP auf dynamische Webseiten, bei denen der dynamische Teil mit Java und der statische Teil mit Auszeichnungssprachen, meist HTML, generiert wird. Eine solche Seite ist ein Textdokument mit der Erweiterung .jsp, geschrieben in einer der Auszeichnungssprachen (wie HTML, SVG, WML und XML), durchsetzt mit JSP-Elementen (oder JSP-Tags). Diese Tags enthalten Aufrufe an den Servercode (Daten) und führen auch einige Berechnungen durch. Diese Dateien werden auf dem Server verarbeitet, wodurch alle JSP-Tags in HTML-Tags umgewandelt werden und die Ausgabe eine normale HTML-Seite ist. Das folgende Diagramm zeigt ein Diagramm der Struktur einer JSP-Seite und ihrer Interaktion mit dem Server. Ein Beispiel für eine einfache JSP-Seite:<html>
<body>
<p> ${2 + 2} равно 4 </p>
</body>
</html>
In diesem Beispiel ist ein in einer speziellen Sprache, Expression Language (EL), geschriebener JSP-Ausdruck in den HTML-Code „eingebettet“ . Es stellt einen wichtigen Mechanismus für die Interaktion zwischen der Präsentationsschicht (Webseiten) und der Geschäftslogikschicht der Anwendung (Java-Code) bereit. Wie Sie dem Beispiel entnehmen können, ist der JSP-Ausdruck in geschweifte Klammern eingeschlossen, mit einem führenden Dollarzeichen – ${...}
. Alles, was in den geschweiften Klammern steht, wird auf dem Server ausgewertet und das Ergebnis dieses Ausdrucks wird in HTML an der Stelle ausgegeben, an der der JSP-Ausdruck ursprünglich definiert wurde. Nach der Verarbeitung aller Tags sieht die Seite folgendermaßen aus:
<html>
<body>
<p> 4 равно 4 </p>
</body>
</html>
Installieren und Ausführen des Servlet-Containers
Da der JSP-Code in Java-Servlet-Code übersetzt wird, müssen wir uns irgendwo eine Art Servlet-Container besorgen, damit wir darüber sprechen können, wie die JSP funktioniert. Andernfalls funktioniert JSP ohne Container nicht. Aber schauen wir uns zunächst die Definition eines Servlet-Containers an. Ein Servlet-Container ist ein Programm, das als Server fungiert und Systemunterstützung für Servlets bereitstellt und deren Lebenszyklus gemäß den in den Spezifikationen definierten Regeln sicherstellt. Es kann als vollwertiger unabhängiger Webserver arbeiten, als Seitenanbieter für einen anderen Webserver fungieren oder in einen Java EE-Anwendungsserver integriert werden. Einer der beliebtesten Servlet-Container ist Apache Tomcat. Es ist erwähnenswert, dass Tomcat kein vollwertiger Java EE-Anwendungsserver ist. Für die lebenswichtigen Anforderungen von Servlets und JSP-Seiten ist der Tomcat-Server jedoch mehr als ausreichend. Beginnen wir mit der Installation. Sie können Tomcat von der offiziellen Seite herunterladen . Für Windows-Betriebssysteme können Sie Tomcat wie folgt installieren:-
Laden Sie das 32-Bit/64-Bit-Windows-Dienstinstallationsprogramm herunter.
-
Lassen Sie uns die Datei ausführen.
-
Befolgen Sie als Nächstes die übliche Installationsprozedur:
-
Vergessen Sie nicht, das Kontrollkästchen „Beispiele“ im entsprechenden Installationsfenster zu aktivieren:
-
und geben Sie den Pfad zur vorinstallierten JRE an:
-
-
Starten Sie nach der Installation Tomcat und öffnen Sie den Browser. Gehen Sie zu http://localhost:8080/ .
Demoanwendungen. Versteckte Objekte
Schauen wir uns einige JSP-Funktionen in Aktion an. Eine davon ist der Zugriff auf sogenannte versteckte Objekte ( Implicit Objects ). Dabei handelt es sich um Objekte, auf die über die Expression Language (EL) zugegriffen werden kann. Beispiele für solche Objekte sind HTTP-Header oder URL-Parameter. Lassen Sie uns verraten (oder unser Gedächtnis auffrischen), was URL-Parameter sind. Das folgende Beispiel zeigt eine URL mit Parametern. Parameter sind fett gedruckt: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Parameter beginnen immer mit einem Fragezeichen (?). Danach folgt der Name des Parameters, gefolgt vom Gleichheitszeichen – der Wert des Parameters wird ermittelt. Es können mehrere oder ein Parameter vorhanden sein. Wenn es mehr als eins gibt, wird jedes Name-Wert-Paar durch ein kaufmännisches Und-Zeichen (&) getrennt. Im obigen Beispiel wurden mehrere Parameter und deren Werte definiert:Parametername | Parameterwert | |
---|---|---|
param1 | Wert1 | |
param2 | Wert2 | |
A | 1 | |
Name | Tom |
foo
über das entsprechende Feld auf der Seite zu ändern. Beachten Sie dann, dass sich der Wert dieses Parameters auch in der Adressleiste geändert hat. Die angezeigte Seite verfügt nicht über viele Funktionen, ist aber eine gute Referenz, auf die Sie in Zukunft zurückgreifen können, wenn Sie auf ein bestimmtes verstecktes Objekt zugreifen müssen. Diese Seite enthält eine Liste versteckter Objekte, auf die zugegriffen werden kann. Und unten in der Tabelle wird gezeigt, wie Sie auf ein bestimmtes Objekt zugreifen können.
JSP-Funktionen
Gehen wir nun zurück zur vorherigen Seite und werfen einen Blick auf den Quellcode der „Versteckte Objekte“-Seite: Hier ist er:<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<title>JSP 2.0 Expression Language - Implicit Objects</title>
</head>
<body>
<h1>JSP 2.0 Expression Language - Implicit Objects</h1>
<hr>
This example illustrates some of the implicit objects available
in the Expression Language. The following implicit objects are
available (not all illustrated here):
<ul>
<li>pageContext - the PageContext object</li>
<li>pageScope - a Map that maps page-scoped attribute names to
their values</li>
<li>requestScope - a Map that maps request-scoped attribute names
to their values</li>
<li>sessionScope - a Map that maps session-scoped attribute names
to their values</li>
<li>applicationScope - a Map that maps application-scoped attribute
names to their values</li>
<li>param - a Map that maps parameter names to a single String
parameter value</li>
<li>paramValues - a Map that maps parameter names to a String[] of
all values for that parameter</li>
<li>header - a Map that maps header names to a single String
header value</li>
<li>headerValues - a Map that maps header names to a String[] of
all values for that header</li>
<li>initParam - a Map that maps context initialization parameter
names to their String parameter value</li>
<li>cookie - a Map that maps cookie names to a single Cookie object.</li>
</ul>
<blockquote>
<u><b>Change Parameter</b></u>
<form action="implicit-objects.jsp" method="GET">
foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
<input type="submit">
</form>
<br>
<code>
<table border="1">
<thead>
<td><b>EL Expression</b></td>
<td><b>Result</b></td>
</thead>
<tr>
<td>\${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${param["foo"]}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${header["host"]}</td>
<td>${fn:escapeXml(header["host"])} </td>
</tr>
<tr>
<td>\${header["accept"]}</td>
<td>${fn:escapeXml(header["accept"])} </td>
</tr>
<tr>
<td>\${header["user-agent"]}</td>
<td>${fn:escapeXml(header["user-agent"])} </td>
</tr>
</table>
</code>
</blockquote>
</body>
</html>
Wenn Sie mit HTML vertraut sind, sollte Ihnen der Quellcode der Seite recht klar sein. Achten Sie auf diese Zeilen:
<tr>
<td>${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
Hier sehen wir HTML-Tags <tr>
und <td>
. Auf die Tags folgen <td>
JSP-Tags, die in geschweifte Klammern eingeschlossen sind ${ }
. Beachten Sie jedoch, wie der Wert des URL-Parameters ausgegeben wird foo
:
${fn:escapeXml(param["foo"])}
Der Wert wird mithilfe einer JSP-Funktion ausgegeben fn:escapeXml()
. JSP-Funktionen kapseln einige Funktionen, die wiederverwendet werden können. In diesem Fall handelt es sich um XML-Escape. Die JSP-Technologie bietet eine große Auswahl an Funktionen sowie die Möglichkeit, eigene Funktionen zu erstellen. Um eine Funktion in einer JSP zu verwenden, müssen Sie die entsprechende Bibliothek, in der die Funktion definiert ist, in die JSP-Datei importieren.
Tag-Bibliotheken
Werfen wir einen Blick auf eine weitere Zeile des Quellcodes (zweite Zeile) oben:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
So werden Tag-Bibliotheken importiert. Die Syntax ist intuitiv. Wir definieren mehrere Dinge:
taglib
(Tag-Bibliothek – Tag-Bibliothek);url
, wo sich diese Bibliothek befindet;- ein Präfix (in diesem Fall
fn
), über das es möglich ist, in dieser Bibliothek definierte Funktionen aufzurufen.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Wie bei ist fn
die Notation c
optional und allgemein akzeptiert. Diese Bezeichnung findet sich fast überall dort, wo diese Bibliotheken verwendet werden. Hier ist ein Beispiel einer Funktion aus der Kernbibliothek:
<c:out value = "${'<div>'}"/>
Diese Funktion gibt einfach das Tag aus <div>
. Diese Funktion führt bereits XML-Escape-Funktionen durch. Diese Funktion ist aus Sicherheitsgründen wichtig, da ${variable}
wir durch die direkte Ausgabe des Werts von Variablen über die Skriptinjektion Tür und Tor öffnen.
JSP-Bearbeitung
Nun wollen wir mit neuem Wissen versuchen, Änderungen an der Demoanwendung in Tomcat vorzunehmen. Dazu finden wir den Quellcode dieser Seite in dem Ordner, in dem dieser Servlet-Container installiert wurde. Diese Datei finden Sie unter der folgenden Adresse: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Öffnen Sie dann die Datei implicit-objects.jsp in einem beliebigen Texteditor. Fügen Sie den Import der Kernbibliothek hinzu , und verwenden Sie es dann. Lassen Sie uns etwas Text ausgeben: Jetzt aktualisieren wir die Seite mit versteckten Objekten und sehen uns die vorgenommenen Änderungen an:Ergebnisse
Deshalb haben wir Technologien wie JSP oberflächlich untersucht. Wir diskutierten:- Was ist JSP?
- JSP-Seitenstruktur;
- Verfahren zum Installieren und Ausführen des Tomcat-Servlet-Containers;
- Demoanwendung für den Zugriff auf versteckte Objekte, die im Tomcat-Server-Distributionspaket enthalten ist;
- JSP-Funktionen und Tag-Bibliotheken.
Was weiter?
Um das Material zu sichern, können Sie:- Wiederholen Sie alles, was in diesem Artikel beschrieben wird.
- Ziehen Sie andere Demoanwendungen in Betracht, die im Tomcat-Server enthalten sind.
- Schreiben Sie Ihre eigene Anwendung und stellen Sie sie in einem Servlet-Container bereit. Als Leitfaden können Sie den Artikel Erstellen eines einfachen Webprojekts in IntelliJ Idea Enterprise verwenden. Schritt für Schritt, mit Bildern.
GO TO FULL VERSION