JBuilder5 InternetBeans Express

Werbung
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
Herunterladen