JavaServer Pages


JavaServer Pages, kurz: JSP, ist eine Programmiersprache, die von Sun Microsystems entwickelt wurde. Sie bietet eine vereinfachte Möglichkeit, dynamischen Content in kurzer Zeit zu erstellen. Zum Vorbild hat JSP die Programmiersprache JHTML. JSP ermöglicht ein Einfügen von Java-Codes und besonderen JSP-Aktionen in HTML- oder XML-Seiten. Durch die JSP-Syntax können spezielle Funktionalitäten eingefügt werden, was anhand von speziellen XML-Tags, welche zu den JSP-Aktionen gehören, geschieht.

Die JSP-Aktionen werden in den Tag-Libraries als Erweiterung der HTML- oder XML-Tags definiert. Die Umwandlung in den Java-Quellcode wird unter Anwendung spezieller JSP-Compiler gewährleistet. Der Quellcode kommt einem Java-Servlet gleich und wird durch den Java-Compiler in Bytecodes modifiziert. Hierdurch entstehen Java-Klassen, welche von Servern realisiert werden können, die die nötige Java-Ausführungseinheit eingerichtet haben.

JavaServer Pages ermöglicht auch eine rasche Entwicklung von webbasierten Anwendungen, welche server- und plattformunabhängig sind. Die Programmiersprache ist seit dem Ende der 90er Jahre verfügbar, wobei sie in der Zwischenzeit immer mehr durch andere Techniken ersetzt worden ist.[1] Aufgrund der veralteten Techniken wird JSP von vielen abgelehnt. [2]

JavaServer Pages hat den Vorteil, dass das User Interface von der Content Generierung getrennt ist, sodass bei einer Veränderung des Seitenlayouts der dynamische Content unberührt bleibt.

Syntax

JavaServer Pages wird als HTML- beziehungsweise XML-Seite aufgefasst werden, welche Java-Codes und andere JSP-spezifische Tags enthält.

Allgemein kann JSP in folgende Bestandteile klassifiziert werden:

Template Text

Der Template Text sind fixe Inhalte. Sie werden vom Webserver in der HTTP-Response übernommen, ohne dass sie verändert werden. Ein HTML-Dokument lediglich bestehend aus einem statischen Text stellt schon eine JSP dar. Ein Einfügen von JSP-Elementen ist zwar möglich, jedoch nicht erforderlich. Dies hat zur Folge, dass der Urheber des statischen Inhalts keine Kenntnisse über Java benötigt.

JavaServer Page ist ein dynamisches Element und kann somit ohne jegliche fixe Komponenten existieren. Hierdurch können über JSP-Dokumente Daten wie Bilder hervorgebracht werden und an den Client geschickt werden.

JSP-Direktiven

Durch die Direktiven, die durch die allgemeine Syntax <%@ ... %> definiert sind, gelangen Seiteninformationen an den JSP-Compiler. Gängige Direktiven sind im folgenden aufgelistet:

  • include

Befehl an den JSP-Compiler, den Content einer externen Datei in die Originaldatei einzufügen.

<%@ include Ordner=”Datei.ext” %>
  • page

Unter den Begriff der page können weitere Begriffe gefasst werden

    • import

Generierung eines Java-Import-Statements in der Datei

<%@ page import=”java.util.*%>
    • contentType

Angabe über die Art des Contents

<%@ page contentType=”Text/html” %>
    • errorPage

Bestimmen der Seite, die beim Auftreten eines Fehlers angezeigt wird

<%@ page errorPage=”FehlerLösung.jsp” %>
    • isErrorPage

Angabe, ob es sich bei dieser Seite um eine Error-Page handelt oder um eine richtige. False bedeutet, dass es sich nicht um eine ErrorPage handelt.

<%@ page isErrorPage=false%>
    • isThreadSafe

Angabe, ob das Servlet threadsicher ist. True steht hierbei für eine threadsichere Seite

<%@ page isThreadSafe=true%> 
  • taglib

Befehl, dass eine Tag Library benutzt werden soll. Dabei muss ein Präfix und eine URL für die Tag Library vergeben werden.

<%@ taglib prefix=”GewähltesPräfix” uri=”taglib/MeineTagBib.tld”&>

Standardvariablen

Gebräuchliche Variablen, die auch implizierte Objekte genannt werden, können in der JSP umgesetzt werden. Diese umfassen die Variablen:

  • application

Anwendungsobjekt, wessen Bestand von einem laufenden Server abhängt.

  • config

Bezeichnung einer Konfigurationsschnittstelle

  • out

Name des JSPWriters, der die Daten in den HTTP-Response-Stream übersetzt

  • page

Bezeichnung des Servlets

  • pageContext

Ebene, in der die Informationen der Seite dargestellt sind.

  • request

HTTP-Request-Objekt

  • response

HTTP-Response-Objekt

  • session

HTTP-Session-Objekt ermöglicht es, Informationen über den User von einem Request an den nächsten weiterzugeben.

JSP-Skriptelemente

Die Skriptelemente ermöglichen ein direktes Einfügen des Java-Codes in die JSP. Es gibt drei verschiedene Skriptelemente, die unterschieden werden.

  • Das erste Tag ermöglicht, den Code in die Klasse einzubauen. Durch dieses Tag kann man Daten der Klasse definieren.
<%! int serverInstanceVariable = 1; %>
  • Ein weiteres Tag erlaubt, einen Code “_jspService” in die Methode des Servlets einzufügen. Daraus gehen lokale Variablen hervor.
<% int localStackBasedVariable = 1; %>
  • Das dritte Tag ermöglicht, den Code auszubauen und in die HTTP-Response hineinzuschreiben.
<%= "expanded inline data " + 1 %>


JSP-Aktionen

Die JavaServer Pages-Aktionen sind XML-Tags und umfassen die eingebaute Funktionalität von Servern. Die folgenden Aktionen sind möglich:

  • jsp:include

Durch das Aufrufen der angegebenen JavaServer Pages wird der Request und der Response weitergegeben. Nach einer Abarbeitung, wird die Steuerung zur JSP wieder zurückgeleitet. Der Zweck der Aktion ist, dass der JSP-Code gemeinsam genutzt und nicht kopiert wird.

 <jsp:include page="mycommon.jsp">
      <jsp:param name="extraparam" value="myvalue"/>
  </jsp:include>
  • jsp:param

Bezeichnung für einen Parameter, welcher den Request-Parametern beigefügt wird.

  • jsp:forward

Bei dieser Aktion wird der Request und der Response an eine weitere JSP oder Servlet weitergeleitet, ohne dass die Steurung zur JSP zurückkehrt.

 <jsp:forward page="subpage.jsp">
      <jsp:param name="forwardedFrom" value="this.jsp"/>
  </jsp:forward>
  • jsp:plugin

Diese Aktion entwickelt eine Tag für das Einbinden von Java-Applets.

 <jsp:plugin type="applet" height="100%" width="100%"
           archive="myjarfile.jar,myotherjar.jar"
          codebase="/applets"
              code="com.example.foo.MyApplet.class">
      <jsp:params>
          <jsp:param name="enableDebug" value="true"/>
      </jsp:params>
      <jsp:fallback>
          Your browser does not support applets.
      </jsp:fallback>
  </jsp:plugin>
  • jsp:fallback

Hierdurch wird der Inhalt festgesetzt, der bei einer fehlenden Unterstützung von Applets durch den Browser angezeigt wird.

  • jsp:setProperty

Durch diese Aktion wird ein Property in der definierten Java-Bean gesetzt.

  <jsp:setProperty name="myBean" property="lastChanged" value="<%= new Date()%>" />
  • jsp:getProperty

Ein Property wird durch diese Aktion von der definierten Java-Bean erlangt.

  <jsp:getProperty name="myBean" property="lastChanged" />
  • jsp:useBean

Durch diese Aktion wird eine Java-Bean verfasst oder wiederverwendet. Hierbei können Attribute wie der request, die page, die session und die application definiert werden.

 <jsp:useBean id="myBean" class="com.example.foo.MyBean" scope="request">
  </jsp:useBean>


JSP-Tag Libraries

Über die klassischen JSP-Aktionen hinaus, können auch benutzerdefinierte JavaSkript Pages-Aktionen angewendet werden. Hierfür muss eine eigene Tag-Bibliothek erstellt werden. Diese wird über den Tag Library Descriptor definiert.

Veränderung durch Servlet-API 2.4

Durch die Umsetzung der Servlet-API 2.4 als Nachfolger von JSP 2.0 kann auf JSP-Skriptelemente verzichtet werden. Die JSPX-Dokumente kommen den XML-Dokumenten gleich.

Versionen

Es gab seit der ersten Veröffentlichung am 27. September 1999 einige Veränderungen der Programmiersprache:

  • JSP 1.0
  • JSP 1.1
  • JSP 1.2
  • JSP 2.0
  • JSP 2.1

Einzelnachweise

Weblinks