44
Java Server Pages Michael Klenke Seminar Internet - Technologie

Java Server Pages Michael Klenke Seminar Internet - Technologie

Embed Size (px)

Citation preview

Page 1: Java Server Pages Michael Klenke Seminar Internet - Technologie

Java Server PagesMichael Klenke

Seminar Internet - Technologie

Page 2: Java Server Pages Michael 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

Page 3: Java Server Pages Michael Klenke Seminar Internet - Technologie

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)?

Page 4: Java Server Pages Michael Klenke Seminar Internet - Technologie

4

HTTP Client Server Architektur

Page 5: Java Server Pages Michael Klenke Seminar Internet - Technologie

5

Common Gateway Interface (CGI)

Page 6: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 7: Java Server Pages Michael Klenke Seminar Internet - Technologie

7

Servlets

Page 8: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 9: Java Server Pages Michael Klenke Seminar Internet - Technologie

9

Java Server Pages (JSP)

Page 10: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 11: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 12: Java Server Pages Michael Klenke Seminar Internet - Technologie

12

Interpretation durch den Browser

Page 13: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 14: Java Server Pages Michael Klenke Seminar Internet - Technologie

14

Verzeichnisstruktur Tomcat

Page 15: Java Server Pages Michael Klenke Seminar Internet - Technologie

15

Projektverzeichnis Date

Web Deployment Descriptor

Page 16: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 17: Java Server Pages Michael Klenke Seminar Internet - Technologie

17

HelloWorld.jsp

Page 18: Java Server Pages Michael Klenke Seminar Internet - Technologie

18

Quelltext von HelloWorld.jsp

Page 19: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 20: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 21: Java Server Pages Michael Klenke Seminar Internet - Technologie

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.

Page 22: Java Server Pages Michael Klenke Seminar Internet - Technologie

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>

Page 23: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 24: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 25: Java Server Pages Michael Klenke Seminar Internet - Technologie

25

Das request-Objekt

Page 26: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 27: Java Server Pages Michael Klenke Seminar Internet - Technologie

27

Das request-Objekt

Page 28: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 29: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 30: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 31: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 32: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 33: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 34: Java Server Pages Michael Klenke Seminar Internet - Technologie

34

Verzeichnisstruktur

Page 35: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 36: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 37: Java Server Pages Michael Klenke Seminar Internet - Technologie

37

Einfügen der Bean

Page 38: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 39: Java Server Pages Michael Klenke Seminar Internet - Technologie

39

Ausgabe im Browser

Page 40: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 41: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 42: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 43: Java Server Pages Michael Klenke Seminar Internet - Technologie

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

Page 44: Java Server Pages Michael Klenke Seminar Internet - Technologie

Java Server Pages

Seminar Internet - Technologie