Download PowerPoint Template

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Seminar
Internet - Technologie
Java Server Pages
Michael Klenke
Inhalt
 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
2
Was sind Java Server Pages (JSP)?
 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
3
HTTP Client Server Architektur
4
Common Gateway Interface (CGI)
5
Vor- und Nachteile von CGI
 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
6
Servlets
7
Vor- und Nachteile von Servlets
 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
8
Java Server Pages (JSP)
9
Ausgangspunkt: HTML-Dokument
<!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>
10
Einfügen von Java-Anweisungen
<!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>
11
Interpretation durch den Browser
12
Voraussetzungen für den Einsatz von JSP
 JSP-/Servlet-Engine
 Apache Tomcat
 Jetty
 Oder Applikationsserver
 Glassfish
 Jboss
 Gerimino
 Java, Standard Edition
 Java, Enterprise Edition
 Eine Datenbank (MySQL)
13
Verzeichnisstruktur Tomcat
14
Projektverzeichnis Date
Web Deployment Descriptor
15
Web Deployment Descriptor
<?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>
16
HelloWorld.jsp
17
Quelltext von HelloWorld.jsp
18
JSP - Syntax
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 --%>
19
Beispiel für eine if-else-Anweisung
<%!
private static boolean isDay() {
java.util.Calendar.HOUR_OF_DAY
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>
20
Vergleich: Ausdrücke, Scriptlets, Deklarationen
Ausdruck
Scriptlet
Deklaration
Tag
<%= … %>
<% … %>
<%! … %>
Ausgabe in
die JSP
Resultat wird
direkt in die
Seite integriert.
Ausgaben in die
Erfolgen über die
Variable out.
Ausgaben sind
nicht möglich.
Mögliche
Anweisungen
Auf eine Ausgabeanweisung
beschränkt.
Anweisungsfolgen
möglich.
Vollständige Deklaration von
Methoden möglich.
Abschluss
einer
Anweisung
Anweisung wird
nicht abgeschlossen.
Alle Anweisungen
werden von einem
Semikolon (;)
abgeschlossen.
Alle Anweisungen
werden von einem
Semikolon (;)
abgeschlossen.
Definition von
Variablen
Ist nicht möglich.
Lokale Variablen
möglich.
Globale Variablen
möglich.
21
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>
<%!
int zahl = 100;
%>
<jsp:declaration>
int zahl = 100;
</jsp:declaration>
Deklaration
22
Vordefinierte Objekte
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.
• out
• application
• response
• pageContext
• request
• session
• config
• exception
• page
• jspContext
23
Das request-Objekt
request (javax.servlet.http.HttpServletRequest)
Ist für Anfragen zuständig, z.B. beim Senden von
Formularen aus Formularfeldern an eine JSP-Datei.
Form.jsp
<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>
24
Das request-Objekt
25
Das request-Objekt
get_Data.jsp
<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>
26
Das request-Objekt
27
Direktiven – Eigenschaften einer JSP
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" %>
28
Page Direktive
Die page-Direktive gibt Auskunft über die verwendete 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();%>
29
Attribute der page-Direktive
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 PflichtAttribut!
30
Aktionen
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.
31
JSPs und JavaBeans
Die Idee der Beans ist die Aufteilung von Funktionalitä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.
32
Die erste Bean
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.
33
Verzeichnisstruktur
34
Der Bean-Code - Teil 1
package bean;
import java.util.Random;
public class Randomize {
private int obergrenze;
private Random r = new Random();
public Randomize() {
}
…
35
Der Bean-Code - Teil 2
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
36
Einfügen der Bean
37
Der JSP-Code
<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>
38
Ausgabe im Browser
39
Gültigkeitsbereiche einer JavaBean
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
40
Alternativer Aufruf der setter-/getter-Methoden
<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>
41
Fazit – Java Server Pages
 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
42
Quellen
 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/
43
Seminar
Internet - Technologie
Java Server Pages