Java Server Pages im Vergleich mit ASP und PHP

Werbung
WebServer-Technologien
SS 2004
Prof. Dr. Stefan Böttcher
Universität Paderborn
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 1
Überblick über Internet-Technologien
Server-Technologien
XSP
Datenbankkopplung
Java Server Pages (JSP)
Servlet generiert HTML
PHP
CGI generiert HTML
nur HTML
Client-PGM ruft DB-Server
Web-Server ruft Datenbankserver
nur HTML
HTML+Javascript
nur HTML
HTML+Applets
XML+XSL
Dokumentsprachen
Client-Technologien
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 2
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
1
Sprachen für Serverpages
• JSP
• JSP mit Datenbankanbindung
• Vergleich von ASP mit JSP
• Vergleich von PHP mit JSP
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 3
Java Server Pages (JSP)
Bisher:
HTML - statische Seiteninhalte
php, ... - dynamische Seiteninhalte, nicht typsicher und portabel
Servlets - dynamische Seiteninhalte, typsicher und portabel ,
aber keine Trennung von Layout, Logik und Daten
Neu:
JSP
- dynamische Seiteninhalte, typsicher und portabel ,
etwas bessere Trennung von Layout, Logik und Daten
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 4
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
2
Java Server Pages (Beispielausgabe)
JSP-Verzeichnis
Layout (+konstanter Inhalt)
JSP-Seite
dynamischer Inhalt
Layout
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 5
JSP (Trennung von Design und Logik)
Eingabe
JSP-Web-Server
JSP-Seite
.class-Files
Servlet (.java)
Web-Seite (html)
Java-Klasse(n)
WebBrowser
Ausgabe
Client
WebDesigner
Programmierer
Server
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 6
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
3
Java Server Pages (JSP)
http://localhost:8080
/beispiel1/clock.jsp
JSP-Web-Server
clock.jsp
Web-Browser
.class-Files
Servlet (.java)
Willkommen in ...
Preisliste von
Mo. 22.Jan 21:55 ...
Web-Seite (html)
Clock.Java
Client
Server
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 7
Servlet-Code zum Form Beispiel
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class KenntKunde extends HttpServlet
{ public void doGet (
HttpServletRequest request ,
HttpServletResponse response )
throws ServletException, IOException
{
res.setContentType("text/html");
PrintWriter aus = response.getWriter ();
String kunde = request.getParameter("anrede");
aus.println("Ihre Name ist: ");
aus.println( kunde );
}
}
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 8
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
4
Java Server Pages (Beispiel 1)
<!-- clock0.jsp -->
<!-- Diese Java Server Page funktioniert
ohne eigenes Java-Programm -->
<html>
<body>
Die aktuelle Zeit ist
<%= new java.util.Date() %>
</body>
</html>
JSP Ausdruck
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 9
Java Server Pages (Beispiel 2)
JSP-Direktive
<-- clock.jsp -->
<%@ page language="java" %>
<jsp:useBean id="clock" class="Clock" />
JSP-Aktion
<HTML>
<H1>Willkommen in unserem Internetshop</H1>
<p> Preisliste von <%= clock.getDay() %> ist ...
</HTML>
JSP Ausdruck
import java.util.*;
public class Clock
{ public String getDay()
{
return " " + new Date() ; }
}
// Clock.Java
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 10
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
5
Java Server Pages (Beispiel 3)
<%@ page import="java.sql.*" language="java" %>
<!-- JSP Aktion: Instanziiere Klasse Shop / Konstruktoraufruf -->
<jsp:useBean id="shop" class="Shop"/>
Shop-Kontruktor erzeugt
DB-Verbindung
<%
ResultSet rsLiefert = null ;
<!-- Servlet-Request -->
String teil = request . getParameter("Teil");
<!-- JSP Skriptlet -->
if ( teil == null || teil.equals("") )
rsLiefert = shop . getLiefert();
else rsLiefert = shop . getLiefert(teil);
%>
<html> <body>
<form method="get" action="liefert2.jsp">
Teil: <input type="text" name="Teil" size="15">
<input type="submit" value="absenden">
</form> ...
<!-- Ausgabe des Resultsets als Tabelle -->
</body> </html>
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 11
JSP mit taglib
<HTML>
<-- beispiel1.jsp -->
<%@ taglib uri="/bsplib" prefix="jsplib" %>
<H1>Willkommen in unserem Internetshop</H1>
<P>Preisliste von <jsplib:getDay/> ist ... </P>
<jsplib:ifIs timeOfDay="PM"> Sonderangebot vor Ladenschluß ...
</jsplib:ifIs>
</HTML>
<taglib>
<tag>
// Ausschnitt aus bsplib.tld
<name>getDay</name>
<tagclass>beispiel1.GetDayTag</tagclass>
</tag>
<tag>
<name>ifIs</name>
<tagclass>beispiel.IfIsTag</tagclass>
<attribute>
<name>timeOfDay</name>
<required>true</required>
</attribute>
</tag>
</taglib>
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 12
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
6
Taglib - Datei
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib> <tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>bsplib</shortname>
<tag>
<name>getDay</name>
<tagclass>beispiel1.GetDayTag</tagclass>
</tag>
<tag>
<name>ifIs</name>
<tagclass>beispiel.IfIsTag</tagclass>
<attribute>
<name>timeOfDay</name>
<required>true</required>
</attribute>
</tag>
</taglib>
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 13
4. Apache-Webserver und CGI
• Der Apache-Webserver
• CGI-Skripte
• Vergleich von CGI und Servlets
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 14
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
7
Apache - Webserver
C:\programme
\Apache Group
\Apache
Client
\htdocs
GET
willkommen.html
/willkommen.html
\Abteilung1
HTTP/1.0
WebseitenVonAbteilung1
\Abteilung2
WebseitenVonAbteilung2
\cgi-bin
action = “cgi-bin/pgm1“
cgi-Programme
\conf
httpd.conf
Server
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 15
CGI: Interaktion mit HTML-Forms
Protokoll
,
IP-Nummer , Port , Web-Seite
Textfeld
Passwortfeld
Submit-Knopf
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 16
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
8
Quellcode mit HTML-Form
<HTML>
<BODY>
<FORM method="post"
action="http://172.16.0.2/cgi-bin/j3.bat">
<br> User:
<INPUT type="text"
name="username" size="30" >
<br> Passwort:
<INPUT type="password" name="passwort" size="30" >
<br> <INPUT type="submit" value="Anfrage abschicken" >
</FORM>
</BODY>
</HTML>
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 17
Ausgabe eines CGI-Programms
Web-Server
CGI-Verzeichnis
CGI-Programm
Attribut
Wert
(+ für blank)
Liste der Eingabeparameter an das CGI-Programm
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 18
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
9
Common Gateway Interface (CGI)
Eingabe
HTMLSeite
ruft
Browser
Client
CGIgenerierte Programm
Seite
Server
Auf dem Server: CGI-Verzeichnis für Programme (Sprache beliebig)
• Aufruf von CGI-Programmen ist in HTML-Seite eingebaut
• Browser-Click ruft CGI-Programm statt gewöhnliche HTML-Seite
• Dateneingabe im Browser möglich, Übergabe an das
CGI-Programm über Umgebungsvariablen (get) oder Datei (post)
• CGI-Programm muß Eingabedaten decodieren
• CGI-Programm generiert als Ergebnis HTML-Seite
• Client-Browser zeigt generierte HTML-Seite
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 19
CGI-Beispiel
Batch-Datei j3.bat
wird lediglich benötigt, um Java aufzurufen:
java j4
Das Programm CGI-Programm (hier z.B. j4.class)
liest die mit POST geschickten Daten von der
Standardeingabe und schreibt in die Standardausgabe
Der Web-Server
schickt diese Ausgabe an den Browser auf dem Client.
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 20
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
10
Prozesse und Threads
Prozesse : laufen in eigenem Adreßraum, eigener Prozeßkontrollblock
=> relativ aufwendig
Threads = nebenläufige „leichte Prozesse“
=> effizienter/schneller umschaltbar
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 21
Threads und Synchronisation
Threads = nebenläufige „leichte Prozesse“
op1( )
op2( )
class Kreuzung
{ ...
synchronized void überquere( )
{
...
}
}
synchronized : schützt kritische Abschnitte,
läßt nur einen Thread zur Zeit eintreten
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 22
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
11
ASP
MicroSoft‘s Alternative zu JSP
• serverseitige Skriptsprache zur Generierung von HTML
• Mischung von HTML und Kontroll-Code (Schleifen, ...)
<% Code-Einbindung wie JSP-Skriptlet %>
• benutzt ASP-Komponenten (z.B. in Visual Basic) ,
generiert Objekte zu diesen Komponenten und
ruft für diese generierten Objekte Funktionen der Komponente auf
• Response für ASP–Ausgabe ( wie response –Variable bei JSP )
• spezielle Kommandos für Datenbankzugriff
• Einbettung verschiedener MS-Sprachen möglich, z.B. VB
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 23
ASP - Beispiel
<HTML>
<BODY>
<%
Dim obj
Set obj = Server.CreateObject("asp1.hallo")
Dim str
str = obj.halloWelt
Response.Write str
%>
</BODY>
</HTML>
Active Server Page
asp1.asp
' tests new Development Web
Function halloWelt() As String
halloWelt = "Hello, World!"
End Function
Visual Basic
ASP Komponente
hallo.cls
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 24
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
12
PHP Hypertext Processor (PHP)
Alternative zu JSP
• serverseitige Skriptsprache zur Generierung von HTML
• Mischung von HTML und Kontroll-Code (Schleifen, ...)
• spezielle Kommandos für Datenbankzugriff
• im Gegensatz zu JSP und ASP keine Komponenten
eher für kleinere Web-Applikationen
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 25
PHP-Beispiel
<html> <body> Eine Tabelle mit PHP ausgegeben
php-Einbettung
<?php
$db = mysql_connect("localhost", "root");
DB-Verbindung
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM Auftrag",$db); Query
echo "<table border=1>\n";
HTML-Tabelle
echo "<tr><td>Name</td><td>Position</tr>\n";
while ($myrow = mysql_fetch_row($result))
ein Result lesen
{
printf( "<tr><td>%s</td><td>%s</td></tr>\n",
und ausgeben
$myrow[1], $myrow[2] );
}
echo "</table>\n";
eingebetteter HTML-Code
?>
</body> </html>
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 26
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
13
Extended Server Pages (XSP)
•
•
•
•
•
Trennung von Layout, Logik und Daten
Layout (.xsl-File)
Daten (.xml-File)
Logik (Java-Code gekapselt in XML)
Teil von cocoon
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 27
Arten von Webserver-Technologien
Server-Technologien für Web-Server
statische Webseiten
dynamisch generierte Seiten
Layout-orientiert
nur
HTML
PHP JSP
ASP
XSP
Logik-orientiert
CGI
Servlet
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 28
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
14
Überblick über Server-Technologien
Server-Technologien für Webserver
XSP
Active Server Pages (ASP)
Mischt Java und XML
mischt Programm und HTML
Java Server Pages (JSP)
mischt Java und HTML
Servlet generiert HTML
Java
PHP
CGI generiert HTML
nur HTML
portabel & typsicher
mischt Programm und HTML
beliebige Programmiersprache
statische Webseiten
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 29
Zusammenfassung: Internet-Technologien
Webserver-Technologien
XSP
Active Server Pages
Java Server Pages (JSP)
Servlet generiert HTML
PHP
CGI generiert HTML
nur HTML
Datenbankkopplung
Client-PGM ruft DB-Server
Web-Server ruft Datenbankserver
nur HTML
HTML+Javascript
nur HTML
HTML+Applets
XML+XSL
Dokumentsprachen
Client-Technologien
Datenbanken und Informationssysteme 2 - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 30
Datenbanken und Informationssysteme 2
Prof. Dr. Stefan Böttcher
15
Herunterladen