JBuilder5 InternetBeans Express Michael Schmut Phatthana Sitthideth [email protected] Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de 1 dbSwing • dbSwing-Komponenten sind Unterklassen der SwingKomponenten • Datensensitivität durch dataSet- und columnName-Eigenschaft • befolgt die Swing-Konventionen in bezug auf Modelle, Ereignisse, und Erscheinungsbild 2 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 1 InternetBeans Express • Komponentenbasierter, datengesteuerter Ansatz mit bekannten Mechanismen aus dbSwing • Datensensitivität wie bei dbSwing durch dataSet- und columnName-Eigenschaft • DataExpress-Funktionalität anwendbar 3 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Inhalt • Architektur der InternetBeans Express Technologie • InternetBeans Express mit Servlets • InternetBeans Express mit JSPs 4 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 2 Architektur Klassen und Interfaces lassen sich in drei Kategorien unterteilen • InternetBeans Komponenten • JSP-Tag Behandlungsroutinen • Unterstützung von Datenmodellen 5 InternetBeans Express © 2000-2001 Orientation in Objects GmbH InternetBeans Komponenten • zuständig für die dynamische Generierung von HTML und der HTTP-Semantik • dienen als Ersatz für die „out.println“-Anweisungen in Servlets 6 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 3 JSP-Tag Behandlungsroutinen • rufen die InternetBeans und deren unterstützende Infrastruktur intern auf • werden von den JSP-Tag Erweiterungen in der Tag-Library von InternetBeans verwendet 7 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Unterstützung von Datenmodellen • DataExpress • DataModules 8 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 4 Inhalt • Architektur der InternetBeans Express Technologie • InternetBeans Express mit Servlets • InternetBeans Express mit JSPs 9 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Java Servlets • Ein Mittel zur Erweiterung der Funktionalität von WWW-Servern • Das Gegenstück zu einem Applet das auf einem Server aktiviert wird. • Sie werden ähnlich wie das Common Gateway Interface (CGI), zur Erstellung von dynamischen Webseiten verwendet. Webserver Client CGI DB Client Servlet 10 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 5 Vorteile von Servlets • • • • • • Sicherheit durch die Sprache Java Plattformunabhängigkeit Standard API 2.1« neue API 2.3 Problemloser Datenbankzugriff (über JDBC) Objektorientiert Sehr ressourcensparend, da mehrere gleichzeitige Anfragen durch Threads sehr effizient verarbeitet werden können 11 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Komponenten Client Webserver Request Servlet-Engine Context Context Context Servlet Servlet Servlet Response 12 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 6 Servlet Lebenszyklus Erste Anfrage an Servlet Webserver lädt das Servlet und instantiiert es Anfrage an Servlet Anfrage an Servlet Anfrage an Servlet Webserver initialisiert das Servlet: init() init() Servlet bearbeitet die Anfragen: service() service() Webserver löscht das Servlet: destroy() destroy() Webserver wird beendet 13 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Implementierungshierarchie Interface Servlet implements abstrakte Klasse GenericServlet Package javax.servlet • allgemein für Client-Server-Architektur extends abstrakte Klasse HTTPServlet Package javax.servlet.http • Http Spezialisierungen extends MeinServlet 14 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 7 Servlet API in UML Servlet has ServletRequest 0..* extends implements 1 implements ServletConfig GenericServlet HttpServletRequest 0..* extends has 1 HttpServlet ServletContext ServletResponse 0..* has extends extends 1 MeinServlet Web container HttpServletResponse 15 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Die Klasse HttpServlet Als Unterklasse zu Servlet können hier folgende Methoden überschrieben werden: • doGet • doPost • doPut • doDelete Hier erfolgt jeweils die Übergabe des Request- und des Response-Objektes. 16 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 8 Kommunikation zwischen Client & Server Client Server Request doGet() { ... ... response } Response 17 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Verwendung eines Response-Objektes • Zum Schreiben der Antwort-Seite wird ein PrintWriter verwendet • PrintWriter ist Teil von java.io • Der Printwriter wird vom response-Objekt zurückgeliefert Anwendung PrintWriter out = new PrintWriter(response.getOutputStream()); ... out.println("<html><body>"); ... out.close(); 18 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 9 Schwächen von Servlets • Daten und Präsentation sind nicht entkoppelt • Änderung im Aussehen bedeutet Änderung im Code • keine XML-Integration 19 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Ix-Applikation mit Servlets erstellen 1. Eine HTML-Seite erstellen 2. HTML-Elemente mit id-Attributen versehen (Platzhalter) 3. Servlet erstellen 4. Im Servlet einen IxPageProducer generieren 5. Eine Datenquelle oder Model angeben 6. InternetBeans Express Komponenten (Tabellen, Listboxen, Comboboxen) initialisieren und deren properties füllen 20 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 10 InternetBeans und HTML-Seiten • InternetBeans Komponenten werden in die HTML-Seite eingebunden und sind nun datensensitiv, ohne das sich das Aussehen der Seite geändert hat • für <table>, <span> und andere HTML Tags müssen dann ID Attribute gesetzt werden • jeder Button ist durch seinen Namen an die InternetBeans Komponente gebunden 21 InternetBeans Express © 2000-2001 Orientation in Objects GmbH ixPageProducer • Der ixPageProducer erzeugt die dynamische HTML-Seite • Parst das template File und ersetzt die identifizerten spans mit dynamischen Inhalt aus den Ix-Komponenten • Die doGet()-Methode reduziert sich oft auf einen Zweizeiler 22 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 11 ixPageProducer Schema Servlet IxPageProducer IxComboBox IxComponent IxListBox render() IxTextField IxSpan IxRadioButton HTML-Template 23 InternetBeans Express © 2000-2001 Orientation in Objects GmbH doGet() public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); ixPageProducer1.servletGet(this,request,response); } 24 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 12 doPost() public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); ixPageProducer1.servletPost(this,request,response); doGet(request,response); } 25 InternetBeans Express © 2000-2001 Orientation in Objects GmbH ixControl • Emuliert jedes HTML-Steuelement • kann anstelle aller InternetBeans Express Komponenten genutzt werden • controlName und Name müssen gesetzt werden 26 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 13 Schema der ix-Technologie HTML-Seite <table id="table1"> <!-- .. --> </table> <select name="list1"> <!-- .. --> </select> <input type="submit" name="button1" Abb. 3, Seite 76, Java Magagzin 12.2000 I x P a g e P r o d u c e r HTML-Seite <table id="table1"> <tr> <td>Entry1</td> <tr> <td>Entry2</td> </tr> </table> <select name="list1"> <option="ListEntry1"</option> <option="ListEntry2"</option> </select> <input type="submit" name="button1"> IxTable IxSubmitButton IxComboBox (table1) (button1) (list1) Entry1 Entry2 SubmitListener { //..do sth. } ListEntry1 ListEntry2 InternetBeans Express 27 © 2000-2001 Orientation in Objects GmbH Vorteile Vorteile: • HTML-Seite dient als Template mit Platzhaltern, die ersetzt werden • Layout kann ohne Codeänderungen geändert werden • MVC-Paradigma wird eingehalten • Anlehnung an dbSwing und damit verbundene Vorteile 28 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 14 Servlet-Beispiel IxCombo - Projekt erstellen 29 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Servlet-Beispiel IxCombo - Servlet-Experte 30 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 15 Servlet-Beispiel IxCombo - Datenmodul 31 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Servlet-Beispiel IxCombo - IxPageProducer 32 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 16 Inhalt • Architektur der InternetBeans Express Technologie • InternetBeans Express mit Servlets • InternetBeans Express mit JSPs 33 InternetBeans Express © 2000-2001 Orientation in Objects GmbH JSP - methodisch gesehen • JSP sind eine Erweiterung der Servlet-API • Ziel ist die einfache Entwicklung portabler, dynamischer Webanwendungen • Trennung zwischen Funktionalität und Layout • Wiederverwendbare Komponenten: ‚Custom Tag Libraries‘ • dadurch Trennung des Programmiererprofils: Java-Programmierer¥Webdesigner 34 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 17 JSP - technisch gesehen • JSP ist eine Skriptsprache, die in ‚Template‘-Text eingebettet wird • JSP-Seiten werden vor der ersten Ausführung in Servlets übersetzt (eine JSP-Seite « ein Servlet) 35 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Servlets & JSP HTML java java HTML Servlets JSP Mit JSPs lassen sich Servlets ‚inside out‘ programmieren 36 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 18 Servlets & JSP Legende: HTML Java writer.print(„<html><body> Bei diesem Klick war es „+new Date()+“.</body></html>“); <html><body>Bei diesem Klick war es <%=new Date() %>.</body></html> Servlets JSP 37 InternetBeans Express © 2000-2001 Orientation in Objects GmbH JavaServer Pages JSP Request Server <HTML> <HEAD>...</HEAD> <BODY> . <%Java Statements...%> . </BODY> </HTML> Java Compiler Servlet Response 38 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 19 JSP Elemente Standard-HTML JSP Direktive JSP Action-Tags, z.B. Beans zu laden Ausdrücke Scriptlets Kommentar <html> <%@page import ="com.wombat.JSP.*" %> <body> <h1>Willkomen</h1> <p>Heute ist der </p> <jsp:useBean id ="clock" class="calendar.jspCalendar" /> <ul> <li>Tag: <%= clock.getDayOfMonth() %></li> <li>Jahr: <%= clock.getYear() %></li> </ul> <% if (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) {%> Guten Morgen <% } %> </body> </html> <%-- Kommentar %> 39 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Taglibs • • • • • Erstellen eigener Tags Auslagern von Logik in Taglibs Vereinfachen von komplexen JSP-Seiten Ein Tag - eine TagKlasse Syntax: – <NameSpace:TagName AttributName= Wert/> oder – <NameSpace:TagName AttributName= Wert> ...Rumpf... </NameSpace:TagName AttributName= Wert> • Semantik wird durch Tag-Klasse (JavaBean) angegeben 40 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 20 Taglibs anwenden • JSP-Fragment, welches Taglib verwendet <%@ taglib uri=“hellolib.tld” prefix=“test”%> <html> <body> <test:hello user=“Gernot” /> </body> </html> 41 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Schwächen von JSP • Logik erzeugt direkt die Ausgabe • Keine Abstraktion von der Programmiersprache 42 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 21 InternetBeans mit JSP Basisidee: JSP als HTML-Template mit speziellen Tags ohne Java Code zu erstellen, die dann dynamischen Inhalt liefern können. Dadurch entsteht eine klare Trennung von WebRepräsentation und Businessobjekten. 43 InternetBeans Express © 2000-2001 Orientation in Objects GmbH ix-Applikation mit JSPs erstellen 1. JSP-Seite erstellen 2. database und query Tags anwenden und/oder DataModules 3. Mit dem control Tag HTML-Elemente und/oder andere InternetBeansExpress Komponenten umschliessen 4. Skriptlets für Eventhandler schreiben 44 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 22 database-Tag <ix:database id="database1" driver="com.borland.datastore.jdbc.DataStoreDriver" url="jdbc:borland:dslocal:C:\\BeispielDB.jds" username="test" > ... </ix:database> 45 InternetBeans Express © 2000-2001 Orientation in Objects GmbH query-Tag und table-Tag <ix:query id=„aktien" statement="select * from aktien"> <ix:table dataSet=“aktien" > <table id="depottable" align="Left" cellspacing="0" cellpadding="7"> <tr> <th>Name:</th> <th>WKN:</th> <th>Kurs:</th> </tr> </table> </ix:table> </ix:query> 46 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 23 internetbeans.tld • XML-Datei, welche die InternetBeans Express custom tag library definiert • besteht aus einer Reihe von Tags um in einer JSP InternetBeans zu benutzen • dienen als Templates für dynamische Daten 47 InternetBeans Express © 2000-2001 Orientation in Objects GmbH internetbeans.tld Datei I <?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/webjsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>ix</shortname> <uri>http://www.borland.com/jbuilder/internetbeans.tld</u ri> <info> JSP tag extensions for InternetBeans Express </info> 48 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 24 internetbeans.tld Datei II <tag> <name> database </name> <tagclass> com.borland.internetbeans.taglib.DatabaseTag </tagclass> <info>Database connection object</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> 49 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Tag-Bibliothek im Detail • enthält sechs Tags, jedoch gibt es 17 InternetBeans Komponenten • kein Nachteil, denn das control-Tag wird einer IxControlKomponente zugeordnet, die Informationen an alle anderen steuerungsspezifschen InternetBeans weitergibt 50 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 25 Tags im Detail I Name des Tags Beschreibung Attribute database Definiert eine DatabaseKomponente in DataExpress id driver url username password query Definiert eine QueryDataSet Komponente in DataExpress id database statement control Definiert eine IxControlKomponente in InternetBeans Express id tupleModel dataSet columnName 51 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Tags im Detail II Name des Tags Beschreibung Attribute image Definiert eine IxImageKomponente in InternetBeans Express id tupleModel dataSet columnName submit Definiert eine IxSubmitButton Komponente in InternetBeans Express id methodName table Definiert eine IxTableKomponente in InternetBeans Express id dataSet tableModel 52 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 26 Ix-Schema für JSPs JSP Dynamic Java Content database tag query tag submit tag image tag table tag Kann alle anderen spezifischen IxKomoponenten ersetzen, z.B. ixCheckbox control tag 53 InternetBeans Express © 2000-2001 Orientation in Objects GmbH JSP-Beispiel IxAktien - Projekt erstellen 54 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 27 JSP-Beispiel IxAktien - JSP-Experte 55 InternetBeans Express © 2000-2001 Orientation in Objects GmbH JSP-Beispiel IxAktien - HTML Teil <%@ page import="com.borland.internetbeans.*,com.borland.dx.dataset.*,com.borland.d x.sql.dataset.*" %> <%@ taglib uri="/internetbeans.tld" prefix="ix" %> <html> <head> <title> AktienJSP </title> </head> <body> <h1> Aktien aus einer DB auslesen </h1> 56 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 28 JSP-Beispiel IxAktien - Ix-Tags <ix:database id="database1" driver="com.borland.datastore.jdbc.DataStoreDriver" url="jdbc:borland:dslocal:C:\\InternetBeans_Vortrag\\IxAktien\\Aktien.jds" username="test" > <ix:query id="aktien" statement="select * from aktien"> ........ </ix:query> </ix:database> 57 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Architektur Client JSP Translator JSP WebContainer JDBC DB DataExpress DataExpress RMI App com.borland.internetbeans com.borland.internetbeans Servlet FS Servlet Servlet Engine 58 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 29 Fazit • einfaches, vielversprechendes Konzept • durch DataExpress ist Kommunikation mit anderen Modellen möglich (z.B. EJB) • leider gibt es zuwenig praxistaugliche Beispiele • Dokumentation ist nicht ausreichend 59 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Literatur und Quellen • Notes on using InternetBeans Express http://community.borland.com/article/0,1410,26373,00.html • InternetBeans Express http://www.drbob42.com/Jbuilder/jbexpr01.htm • InternetBeans Express http://www.drbob42.com/Jbuilder/jbexpr02.htm • Java Magazin 12/2000 Swing im Web: Hammock und InternetBeans Express • Java Magazin 01/2001 JBuilder 4.0: neuer Komfort bei Servlets und JSP 60 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 30 Fragen ? 61 InternetBeans Express © 2000-2001 Orientation in Objects GmbH Vielen Dank für die Aufmerksamkeit! 62 InternetBeans Express © 2000-2001 Orientation in Objects GmbH 31