Java Server Pages Michael Klenke Seminar Internet - Technologie.

Post on 05-Apr-2015

111 views 0 download

Transcript of Java Server Pages Michael Klenke Seminar Internet - Technologie.

Java Server PagesMichael Klenke

Seminar Internet - Technologie

2

Was sind Java Server Pages.

Voraussetzungen für den Einsatz von JSP.

Syntax von JSP: Ausdrücke, Scriptlets und Deklarationen Direktiven Implizierte Objekte Aktionen

JavaBeans

Inhalt

3

Anfang 1999 von Sun Microsystems entwickelte Technologie, um Java-Code in HTML-Seiten einbetten und beim Abruf der Seite auf dem Server ausführen zu können.

Alternative zum Common Gateway Interface (CGI), PHP oder den Active Server Pages (ASP) von Microsoft.

Erweiterung von Java Servlets

Aktuelle Version: 2.1

Was sind Java Server Pages (JSP)?

4

HTTP Client Server Architektur

5

Common Gateway Interface (CGI)

6

Vorteile: Beliebige Programmiersprache Mehrere Clients beeinflussen sich nicht gegenseitig Alle gängigen Webserver unterstützen CGI

Nachteile: Hohe Antwortzeiten I.d.R. keine Trennung von Anwendungslogik und

HTML-Präsentation

Vor- und Nachteile von CGI

7

Servlets

8

Vorteile: Performance (pro Request ein Thread) Plattformunabhängig durch Java Webcontainer können zusätzliche Dienste anbieten

• Sicherheit (Security)• Error-Handling• ...

Nachteile: Keine Trennung von Logik und HTML-Präsentation Ungeeignet für Designer

Vor- und Nachteile von Servlets

9

Java Server Pages (JSP)

10

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title>JSP - HelloWorld</title>

</head>

<body style="text-align:center">

Dies ist eine statische HTML-Seite.

</body>

</html>

Ausgangspunkt: HTML-Dokument

11

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<title>JSP - HelloWorld</title>

</head>

<body style="text-align:center">

Dies ist eine dynamische JSP.<br />

Es ist jetzt genau: <%= new java.util.Date() %>

</body>

</html>

Einfügen von Java-Anweisungen

12

Interpretation durch den Browser

13

JSP-/Servlet-Engine Apache Tomcat Jetty

Oder Applikationsserver Glassfish Jboss Gerimino

Java, Standard Edition

Java, Enterprise Edition

Eine Datenbank (MySQL)

Voraussetzungen für den Einsatz von JSP

14

Verzeichnisstruktur Tomcat

15

Projektverzeichnis Date

Web Deployment Descriptor

16

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application

2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app> <display-name>Eine Webanwendung</display-

name> <description> Dies ist eine auf JSP basierende Beispielanwendung </description></web-app>

Web Deployment Descriptor

17

HelloWorld.jsp

18

Quelltext von HelloWorld.jsp

19

Bisher ist eine JSP zunächst nichts anderes, als eine um besondere Tags erweiterte HTML-Seite.

Diese Tags unterteilen sich in vier Klassen:

Scriptlets der Form <% Java-Code %>

Deklarationen der Form <%! Java-Code %>

Ausdrücke der Form <%= Java-Ausdruck %>

Kommentare der Form <%-- Kommentartext --%>

JSP - Syntax

20

<%!

private static boolean isDay() { int hour = new java.util.GregorianCalendar().get( … );

if (hour > 6 && hour< 18){

return true;

}

return false;

}

%>

<html> <body>

<% if ( isDay() ) { %>

Guten Tag …

<% } else { %>

Gute Nacht …

<% } %>

</body> </html>

Beispiel für eine if-else-Anweisung

java.util.Calendar.HOUR_OF_DAY

21

Vergleich: Ausdrücke, Scriptlets, Deklarationen

Ausdruck Scriptlet Deklaration

Tag <%= … %> <% … %> <%! … %>

Ausgabe in die JSP

Resultat wirddirekt in die

Seite integriert.

Ausgaben in dieErfolgen über die

Variable out.

Ausgaben sind nicht möglich.

Mögliche Anweisungen

Auf eine Aus-gabeanweisung

beschränkt.

Anweisungsfolgenmöglich.

Vollständige De-klaration von

Methoden möglich.

Abschluss einer

Anweisung

Anweisung wirdnicht abge-schlossen.

Alle Anweisungenwerden von einem

Semikolon (;) abgeschlossen.

Alle Anweisungenwerden von einem

Semikolon (;) abgeschlossen.

Definition vonVariablen

Ist nicht möglich.Lokale Variablen

möglich.Globale Variablen

möglich.

22

XML-basierte Schreibweise

Tag XML-Notation

Ausdruck <%= zahl %><jsp:expression> zahl</jsp:expression>

Scriptlet

<% out.println("Hello"); out.println("World");%>

<jsp:scriplet> out.println("Hello"); out.println("World");</jsp:scriplet>

Deklaration<%! int zahl = 100;%>

<jsp:declaration> int zahl = 100;</jsp:declaration>

23

Innerhalb einer JSP-Datei existieren implizierte Objekte, die in jeder JSP von Anfang an zur Verfügung stehen, ohne das sie vorher über eine Deklaration erstellt wurden.

Vordefinierte Objekte

• out • response

• application • pageContext

• request • exception

• session • page

• config • jspContext

24

request (javax.servlet.http.HttpServletRequest)

Ist für Anfragen zuständig, z.B. beim Senden von Formularen aus Formularfeldern an eine JSP-Datei.

<html><head> <title>Ihre Daten</title></head><body> <form name="Eingabe" action="get_Data.jsp" method="post"> Vorname: <input type="text" name="vorname“ ><br> Nachname: <input type="text" name="nachname"><br> <input type="submit" value="Abschicken"> </form></body> </html>

Das request-Objekt

Form.jsp

25

Das request-Objekt

26

<html><head><title>Ausgabe</title></head> <body> <% String vn = request.getParameter("vorname"); String nn = request.getParameter("nachname"); out.println("Vorname: " + vn); out.println("<br>Nachname: " + nn); %> </body></html>

Das request-Objekt

get_Data.jsp

27

Das request-Objekt

28

Direktiven betreffen die aktuelle JSP-Datei und beeinflussen den Aufbau der JSP-Seite.

Sie sind in drei Kategorien aufgeteilt: page include taglib

Alle drei Direktiven haben stets die gleiche Form:

<%@ NameDerDirektive attribut="Wert" %>

Direktiven – Eigenschaften einer JSP

29

Die page-Direktive gibt Auskunft über die verwen-dete Sprache, kann Java-Klassen importieren und eine Fehlerseite angeben.

<%-- Importieren der Java-Klasse 'java.util.Date' --%><%@ page import="java.util.GregorianCalendar()"

%>...<%-- Verwenden der Klasse 'Date' ohne vollständigen

Pfad --%><% GregorianCalendar cal = new GregorianCalendar();

%>

Page Direktive

30

Attribut Kurzbeschreibung

language Definiert die Skripting-Language

import Importiert benötigte Klassen und Pakete

errorPage Eine relative URL zu einer Seite, die im Fehlerfalle aufgerufen werden soll.

isErrorPage Gibt an, ob die seite eine Seite zur darstellung von Fehlern sein soll.

contentType Legt den Mime-Typ der Antwort an z.B. „text/html" oder "text/xml“.

pageEncoding Bei internationalisierten Seiten geradezu ein Pflicht-Attribut!

Attribute der page-Direktive

31

Neben den Direktiven kennt JSP so genannte Aktionen. Diese sind nichts anderes als bestimmte definierte JSP-Elemente, die eine besondere Funktion ausführen.

Derartige Funktionen können sein:

Weiterleitung auf eine externe Datei oder Webseite. Einfügen einer externen HTML- oder JSP-Datei. Einbinden einer JavaBean.

Aktionen

32

Die Idee der Beans ist die Aufteilung von Funktion-alitäten in kleine Komponenten, die so genannten Beans. Beans sind normale Java-Klassen, die nach gewissen Regeln geschrieben sind.

JavaBeans müssen einen parameterlosen Konstruktor besitzen, über den sie erzeugt werden.

Die Attribute bzw. Eigenschaften bestehen aus einer nichtöffentlichen (private) Instanzvariable und öffentlichen Zugriffsmethoden (public), welche umgangssprachlich auch Getter und Setter genannt werden.

Die Zugriffsmethoden haben immer die Form setXxx() und getXxx() bzw. isXxx() bei booleschen Attributen.

JSPs und JavaBeans

33

Eine Zufallszahl soll von einer Bean ermittelt werden und von der JSP-Datei im Browser angezeigt werden.

Eine einfache Bean, die innerhalb einer JSP eingesetzt werden kann. ->Zufallsgenerator

Die JSP-Datei ruft die Bean auf. Die Bean ermittelt die Zufallszahl. Das Ergebnis wird an die JSP-Datei zurückgegeben

und angezeigt.

Die erste Bean

34

Verzeichnisstruktur

35

package bean;

import java.util.Random;

public class Randomize {

private int obergrenze;

private Random r = new Random();

public Randomize() {

}

Der Bean-Code - Teil 1

36

public int getObergrenze() {

return obergrenze;

}

public void setObergrenze(int obergrenze) {

this.obergrenze = obergrenze;

}

public int getZufall() {

int zufall = r.nextInt(obergrenze);

return zufall;

}

} // class Randomize

Der Bean-Code - Teil 2

37

Einfügen der Bean

38

<jsp:useBean id="ran" class="bean.Randomize" /><html> <head> <title>Zufallszahl</title></head> <body> <% ran.setObergrenze(50); int zufall=ran.getZufall(); out.println("Die Zufallszahl lautet: "); out.println(zufall); %> </body></html>

Der JSP-Code

39

Ausgabe im Browser

40

Durch Scoping lässt sich die Sichtbarkeit von Objekten innerhalb der Web-Applikation regeln.

<jsp:useBean id="ran" class="bean.Randomize" scope="session" />

Die Sichtbarkeit ist in verschiedene Levels aufgeteilt.Jedes Level hat eine höhere Sichtbarkeit:

page (Standardwert) request session application

Gültigkeitsbereiche einer JavaBean

41

<jsp:useBean id="ran" class="bean.Randomize" /><jsp:setProperty name="ran" property="obergrenze“,

value="50" />

<html> <head> <title>Zufallszahl</title></head> <body> Die Zufallszahl lautet: <jsp:getProperty name="ran"

property="zufall" /> </body></html>

Alternativer Aufruf der setter-/getter-Methoden

42

Vorteile: JSP sind effizient Java eröffnet als OO-Programmiersprache mehr

Möglichkeiten als Skriptsprachen. Plattformunabhängig

Nachteil: Servlet-/JSP-Container ist notwendig: z.B.

Tomcat

Fazit – Java Server Pages

43

Michael Seeboerg Weichselbaum: Java Server Pages. Markt und Technik (2004)

Thomas Stark: Java EE 5 Einstieg für Anspruchsvolle.Addison-Wesley, München (Oktober 2006)

http://www.jsptutorial.org/

http://de.wikipedia.org/

Quellen

Java Server Pages

Seminar Internet - Technologie