WikiDer > Java Server-Seiten

JavaServer Pages

Java Server-Seiten (JSP) ist Teil der J2EE-Standard. JSP ist eine Möglichkeit, dynamisch HTML, XML oder generieren Sie andere Inhalte basierend auf statischen und dynamischen Elementen. Dies geschieht durch JavaCode und fügen Sie bestimmte vordefinierte Aktionen in den statischen Inhalt ein.

Bei Verwendung von JSP werden dem statischen Inhalt XML-Dateien hinzugefügt.Stichworte hinzugefügt: JSP-Aktion. Diese Tags können in einem gebündelt werden JSP-Tag-Bibliothek, eine Sammlung von Aktionen, die verwendet werden können, um einem Webserver zusätzliche Funktionen bereitzustellen.

Wenn eine JSP-Seite aufgerufen wird, wandelt ein JSP-Compiler sie in eine Servlet. Tatsächlich ist eine JSP-Seite ein Spiegelbild eines Servlets: Ein Servlet ist Java-Code mit beliebigem statischem Inhalt, eine JSP-Seite ist statischer Inhalt mit Java-Code.

JSP-Syntax

Eine JSP-Seite ist in die folgenden Bestandteile unterteilt, von denen die meisten optional sind.

  • statischer Inhalt, z.B. HTML
  • JSP-Richtlinien wie ein enthalten
  • JSP-Skriptelemente und -Variablen
  • JSP-Aktionen
  • benutzerdefinierte Tags

Statischer Inhalt

Statischer Inhalt wird direkt in die . geladen HTTPAntwort geschrieben. Eine gültige JSP-Seite kann nur aus HTML bestehen. In diesem Fall wäre die Antwort bei jedem Aufruf dieser JSP-Seite genau gleich. JSP soll jedoch statischen Inhalten dynamische Elemente hinzufügen.

JSP-Anweisungen

JSP-Direktiven bestimmen, wie eine JSP-Seite vom JSP-Compiler in ein Servlet umgewandelt wird

  • include – weist den JSP-Compiler an, eine ganze Datei in die aktuelle Datei aufzunehmen. Diese Funktionalität ähnelt der des C-Präprozessor.
  • Seite - Diese Direktive hat eine Reihe von Optionen
    • import: Gibt eine Java-Importanweisung im Ergebnis des JSP-Compilers zurück
    • contentType: Gibt den MIME-Typ des Ergebnisses des Aufrufs dieser Seite an.
    • errorPage: gibt an, welche Seite im Fehlerfall angezeigt werden soll
    • isErrorPage: Gibt an, ob diese JSP-Seite eine Fehlerseite ist
    • isThreadSafe: Gibt an, dass diese JSP-Seite fadensicher ist
<%@ page import="java.util.*" %><%@ page contentType="text/xml" %><%@ Seite isErrorPage=false %><%@ Seite isThreadSafe=true %>
  • taglib - Zeigt an, dass eine JSP-Tag-Bibliothek verwendet wird. Dies erfordert ein Präfix (ähnlich einem XMLNamensraum) und eine URI zur Beschreibung der Taglib werden bereitgestellt.
<%@ taglib prefix="myNamespace" uri="taglib/myTags.tld" %>

JSP-Skriptelemente und -Variablen

JSP verfügt über eine Reihe von Standardvariablen, die immer verfügbar sind:

  • out: Der JSPWriter, der verwendet wurde, um das Ergebnis der Ausführung der JSP-Seite zu schreiben.
  • page: Das Servlet selbst.
  • pageContext: Ein Objekt, das Daten enthält, die für die gesamte Seite gelten. Es kann von mehreren JSP-Seiten verwendet werden.
  • request: Das HTTP-Anfrageobjekt. Dies ist ein Java-Objekt, das den Inhalt der ursprünglichen HTTP-Anforderung enthält.
  • response: Das HTTP-Antwortobjekt. Dies ist ein Java-Objekt, das die Antwort des Webservers auf eine HTTP-Anfrage enthält.
  • Sitzung: Ein Objekt, das Informationen zwischen verschiedenen Anforderungen von einem bestimmten Client verfolgen kann. Dies kann das zustandslose HTTP etwas kompensieren.

Darüber hinaus gibt es Standard-Skriptelemente:

  • Es gibt ein Element, das eine Variable in die Servlet-Klasse einfügt:
<%! int serverInstanceVariable = 1; %>
  • Es gibt ein Element, das in der Methode _jspService() des Servlets enthalten ist:
<% int localStackBasedVariable = 1; %>
  • Es gibt ein Element, das bewirkt, dass der Code im Element an dieser Stelle eingefügt und direkt ausgeführt wird:
<%= "erweiterte Inline-Daten" 1 %>

JSP-Aktionen

Dabei handelt es sich um XML-Tags, die die Standardfunktionen des Webservers aufrufen.

  • jsp:include Ähnlich einer Subroutine: Die benannte JSP-Seite wird aufgerufen und das Ergebnis dieses Aufrufs in das Ergebnis der aktuellen JSP-Seite eingefügt.
  • jsp:param Kann innerhalb eines jsp:include-, jsp:forward- oder jsp:params-Blocks verwendet werden. Diese Aktion fügt dem HTTP-Anforderungsobjekt einen Parameter hinzu.
  • jsp:forward Ruft die benannte JSP-Seite auf, ohne zur aktuellen JSP-Seite zurückzukehren.
  • jsp:plugin Ältere Versionen von Internet Explorer und Netscape Navigator verwendeten andere Tags, um Applet um anzuzeigen. Diese Aktion generiert das entsprechende browserspezifische Tag.
  • jsp:fallback Gibt an, welcher Inhalt angezeigt werden soll, wenn der Browser keine Applets unterstützt.
  • jsp:getProperty Gibt den Wert einer Eigenschaft des benannten Java-Bohne
  • jsp:setProperty Setzt den Wert einer Eigenschaft der benannten Java-Bean
  • jsp:useBean Erstellt oder verwendet eine Java-Bean für die JSP-Seite

Beispiele für Aktionen:

Seite="common.jsp">name="zusätzlicher Parameter"Wert="ein Wert"/></jsp:include>

Dadurch wird die JSP-Seite common.jsp mit einem Parameter namens extraParameter und dem Wert aValue aufgerufen. Das Ergebnis des Aufrufs wird in das Ergebnis der JSP-Seite eingefügt, die diesen Code enthält.

Seite="unterseite.jsp">name="abgeleitet von"Wert="diese.jsp"/></jsp:forward>

Übergibt die Anfrage mit einem zusätzlichen Parameter an subpage.jsp. Der weitere Inhalt der HTTP-Antwort wird nun durch subpage.jsp bestimmt, this.jsp wird nach der Ausführung von subpage.jsp nicht mehr aufgerufen.

id="meineBohne"Klasse="com.foo.MyBean"Umfang="Anfrage"/>name="meineBohne"Eigentum="zuletzt geändert"/>name="meineBohne"Eigentum="zuletzt geändert"Wert="<%= neues Datum()%>"/>

Dieser erstellt mit einem BeanManager eine Instanz von com.foo.MyBean und stellt diese unter dem Namen myBean zur Verfügung. Das Attribut scope zeigt an, dass diese Bean während der Anfragebehandlung verfügbar ist, d. h. diese Bean kann auch in JSP-Seiten verwendet werden, die über ein jsp:include oder ein jsp:forward von der aktuellen JSP-Seite aufgerufen werden. Weiterhin wird eine Eigenschaft der Bean abgefragt und im Wert geändert.

Das Scope-Attribut kann eine Reihe von Werten haben:

  • request Die Bean ist verfügbar, solange die Anfrage bearbeitet wird
  • Seite Die Bean ist nur für die aktuelle Seite verfügbar
  • session Die Bean ist für die Lebensdauer der Client-Session verfügbar
  • Anwendung Die Bean ist für die Lebensdauer der Anwendung verfügbar. Dies kann mit einer globalen Variablen verglichen werden.