Überblick über Internet-Technologien Server-Technologien Datenbankkopplung Servlets JSP PHP CGI XML+XSL Dokumentsprachen Client-PGM ruft DB-Server Web-Server ruft Datenbankserver HTML+Javascript HTML+Applets Client-Technologien (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 1 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 (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 2 Prof. Dr. Stefan Böttcher 1
Java Server Pages (Beispielausgabe) JSP-Verzeichnis JSP-Seite Layout (+konstanter Inhalt) dynamischer Inhalt Layout (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 3 JSP (Trennung von Design und Logik) Eingabe JSP-Web-Server JSP-Seite Web- Designer Web- Browser.class-Files Servlet (.java) Ausgabe Web-Seite (html) Java-Klasse(n) Programmierer Client Server (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 4 Prof. Dr. Stefan Böttcher 2
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... Client Web-Seite (html) Server Clock.Java (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 5 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 ); } } (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 6 Prof. Dr. Stefan Böttcher 3
Java Server Pages (Beispiel 1) <!-- clock0.jsp --> <!-- Diese Java Server Page funktioniert ohne eigenes Java-Programm --> <html> <body> </body> </html> Die aktuelle Zeit ist <%= new java.util.date() %> JSP Ausdruck (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 7 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() ; } } (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 8 // Clock.Java Prof. Dr. Stefan Böttcher 4
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"); 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> (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 9 <!-- JSP Skriptlet --> 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> </tag> <tag> </tag> </taglib> // Ausschnitt aus bsplib.tld <name>getday</name> <tagclass>beispiel1.getdaytag</tagclass> <name>ifis</name> <tagclass>beispiel.ifistag</tagclass> <attribute> <name>timeofday</name> <required>true</required> </attribute> (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 10 Prof. Dr. Stefan Böttcher 5
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> (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 11 MicroSoft s Alternative zu JSP ASP 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 (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 12 Prof. Dr. Stefan Böttcher 6
ASP - Beispiel <HTML> <BODY> <% Dim obj Set obj = Server.CreateObject("asp1.hallo") Dim str str = obj.hallowelt Response.Write str %> </BODY> </HTML> tests new Development Web Function hallowelt() As String hallowelt = "Hello, World!" End Function Active Server Page asp1.asp Visual Basic ASP Komponente hallo.cls (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 13 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 (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 14 Prof. Dr. Stefan Böttcher 7
PHP-Beispiel <html> <body> Eine Tabelle mit PHP ausgegeben <?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $result = mysql_query("select * FROM Auftrag",$db); echo "<table border=1>\n"; echo "<tr><td>name</td><td>position</tr>\n"; while ($myrow = mysql_fetch_row($result)) { printf( "<tr><td>%s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2] ); } echo "</table>\n";?> </body> </html> (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 15 php-einbettung DB-Verbindung Query HTML-Tabelle ein Result lesen und ausgeben eingebetteter HTML-Code 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 (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 16 Prof. Dr. Stefan Böttcher 8
Überblick über Internet-Technologien Server-Technologien Servlet generiert HTML JSP generiert HTML PHP generiert HTML CGI generiert HTML Datenbankkopplung Client-PGM ruft DB-Server Web-Server ruft DB-Server HTML+Javascript HTML+Applets XML+XSL Dokumentsprachen Client-Technologien (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher Folie 17 Prof. Dr. Stefan Böttcher 9