Vorbemerkungen |
1 |
1 |
Einleitung |
9 |
1.1 |
JDBC |
9 |
1.1.1 |
JDBC-Konformität |
10 |
1.1.2 |
Grundstruktur von JDBC-Anwendungen |
13 |
1.2 |
Grundzüge einer JSP-Anwendung |
15 |
1.3 |
Quellen |
18 |
2 |
Relationale Datenbanken und SQL |
19 |
2.1 |
Begriffe |
19 |
2.2 |
Tabellen |
21 |
2.3 |
Beziehungen und Beziehungstypen |
22 |
2.4 |
Die "Grundrechenarten" für Tabellen |
24 |
2.4.1 |
Projektion |
25 |
2.4.2 |
Selektion |
26 |
2.4.3 |
Selektion und Projektion |
26 |
2.5 |
Exkurs: SQL Direkt - eine Übungshilfe in Java |
27 |
2.6 |
Tabellen verknüpfen: Join |
30 |
2.6.1 |
Grundlegendes zu Join |
30 |
2.6.2 |
Theta-Join |
31 |
2.6.3 |
Equi Join |
32 |
2.6.4 |
Natural Join |
33 |
2.6.5 |
Outer Join |
33 |
2.6.6 |
Inner Join |
35 |
2.7 |
Weitere Operationen auf Tabellen |
35 |
2.8 |
Schlüssel |
38 |
2.9 |
SQL: Überblick |
39 |
2.9.1 |
Skalare Operatoren und Funktionen |
40 |
2.9.2 |
Aggregatfunktionen |
41 |
2.9.3 |
Cursor |
41 |
2.9.4 |
Virtuelle Tabellen |
42 |
2.9.5 |
Transaktionen |
42 |
2.9.6 |
Persistent gespeicherte Module (PSM) |
44 |
2.10 |
SQL: Datenmanipulation |
45 |
2.10.1 |
SELECT |
46 |
2.10.2 |
Exkurs: SQL Direkt optimieren |
55 |
2.10.3 |
INSERT |
56 |
2.10.4 |
DELETE |
57 |
2.10.5 |
UPDATE |
58 |
2.11 |
SQL: Datendefinition |
59 |
2.11.1 |
CREATE TABLE |
59 |
2.11.2 |
ALTER TABLE |
60 |
2.11.3 |
DROP TABLE |
60 |
2.12 |
Quellen |
61 |
3 |
JDBC-Grundlagen |
63 |
3.1 |
Was ist JDBC? |
63 |
3.2 |
JDBC Schritt für Schritt |
68 |
3.2.1 |
Treiber und Treibermanager |
69 |
3.2.2 |
Verbindungsaufbau |
70 |
3.2.3 |
Einfache SQL-Anweisungen |
72 |
3.2.4 |
Die Ausführung von SQL-Anweisungen |
72 |
3.2.5 |
Auswertung der Ergebnistabellen |
74 |
3.2.6 |
Zusammenfassung |
76 |
3.3 |
SQL-Anweisungen |
77 |
3.3.1 |
Vorbereitete Anweisungen |
78 |
3.3.2 |
Gespeicherte Prozeduren |
79 |
3.4 |
Cursor-Operationen |
87 |
3.5 |
Batch Updates |
91 |
3.6 |
Typen |
94 |
3.7 |
Zwei vollständige Beispiele |
95 |
3.7.1 |
Eine Applikation |
96 |
3.7.2 |
Ein einfaches Applet |
100 |
3.8 |
Metadaten |
103 |
3.8.1 |
Metadaten von Ergebnistabellen |
104 |
3.8.2 |
Datenbank-Metadaten |
104 |
3.9 |
Treiber und Treiberkategorien |
107 |
3.10 |
Quellen |
110 |
4 |
JDBC und Client/Server |
111 |
4.1 |
Client/Server-Architekturen |
111 |
4.1.1 |
Client/Server |
111 |
4.1.2 |
Ebenen der Client/Server-Interaktion; Middleware |
112 |
4.2 |
Client/Server und Java |
115 |
4.2.1 |
Middleware für eine Desktop-Datenbank |
117 |
4.2.2 |
Middleware für einen Datenbankserver |
122 |
4.3 |
Webdatenbanken |
123 |
4.3.1 |
Middleware für Webclient und Desktop-Datenbank |
123 |
4.3.2 |
Datenbankanschluss mit CGI |
126 |
4.3.3 |
Datenbankanschluss über Servlets |
127 |
4.4 |
Middleware und CORBA |
130 |
4.4.1 |
OMA |
132 |
4.4.2 |
Struktur eines CORBA-ORBs |
133 |
4.4.3 |
IDL |
135 |
4.4.4 |
Ein Beispiel in Java |
136 |
4.4.5 |
CORBA-Produkte |
138 |
4.5 |
Quellen |
138 |
5 |
Servlets und Servlet-Container |
139 |
5.1 |
Einige Grundlagen |
140 |
5.1.1 |
CGI |
140 |
5.1.2 |
Server-APIs |
141 |
5.1.3 |
Servlets |
142 |
5.1.4 |
Servlet-Container |
143 |
5.1.5 |
Tomcat |
143 |
5.2 |
Servlet-Lebenszyklen |
144 |
5.2.1 |
Übersicht |
144 |
5.2.2 |
Servlet laden |
147 |
5.2.3 |
Servlet instanziieren |
150 |
5.2.4 |
Instanz initialisieren |
150 |
5.2.5 |
Anforderungen bearbeiten |
152 |
5.2.6 |
Instanz liquidieren |
155 |
5.3 |
Servlets und Threads |
156 |
5.4 |
Jakarta Tomcat |
160 |
5.4.1 |
Versionen |
160 |
5.4.2 |
Installation |
161 |
5.4.3 |
Konfiguration |
162 |
5.4.4 |
Einfache Funktionstests |
164 |
5.5 |
Programmieren mit Servlets |
168 |
5.5.1 |
Kontexte |
168 |
5.5.1.1 |
ServletContext - Kontext einer Webapplikation |
169 |
5.5.1.2 |
ServletConfig - Servlet-spezifischer Kontext |
172 |
5.5.2 |
So genannte Dispatcher |
172 |
5.5.2.1 |
RequestDispatcher und sendRedirect() |
179 |
5.5.3 |
Cookies |
179 |
5.5.3.1 |
Die Klasse Cookie |
182 |
5.5.4 |
Sitzungen |
184 |
5.5.4.1 |
HttpSession - Sitzungsverwaltung |
187 |
5.5.4.2 |
Sitzungen und HttpServletRequest |
188 |
5.5.5 |
Filter |
189 |
5.5.5.1 |
Filter |
191 |
5.5.5.2 |
FiterConfig |
191 |
5.5.5.3 |
FilterChain |
191 |
5.5.6 |
Servlet, Anforderung und Antwort |
197 |
5.5.6.1 |
HttpServlet |
197 |
5.5.6.2 |
HttpServletRequest, ServletRequest |
199 |
5.5.6.3 |
HttpServletResponse, ServletResponse |
202 |
5.5.7 |
SQL direkt als Servlet |
205 |
5.6 |
Web Application Deployment Descriptor |
207 |
5.6.1 |
Anmerkung zur Fehlersuche |
209 |
5.6.2 |
<web-app> |
210 |
5.6.3 |
<context-param> |
210 |
5.6.4 |
<filter> und <filter-mapping> |
211 |
5.6.5 |
<servlet> und <servlet-mapping> |
212 |
5.6.6 |
<session-config> |
213 |
5.6.7 |
<welcome-file-list> |
213 |
5.6.8 |
<error-page> |
214 |
5.6.9 |
<taglib> |
214 |
5.7 |
Exkurs: Internet, TCP/IP, Sockets und HTTP |
215 |
5.7.1 |
Internet |
215 |
5.7.2 |
Internet-Protokolle |
220 |
5.7.3 |
Client/Server-Kommunikation über Sockets |
222 |
5.7.4 |
Client/Server-Kommunikation mit HTTP |
226 |
5.8 |
Quellen |
229 |
6 |
JavaServerPages (JSP) |
231 |
6.1 |
Übersicht |
231 |
6.1.1 |
Weiteres zur serverseitigen Programmierung |
231 |
6.1.2 |
Was ist JSP? |
234 |
6.1.3 |
Wie JSP ausgeführt wird |
239 |
6.1.4 |
Wie JSP in Java übersetzt wird |
239 |
6.1.5 |
Precompilation |
243 |
6.1.6 |
Anmerkung zur Fehlersuche |
244 |
6.1.7 |
javax.servlet.jsp - Klassen/Interfaces und Methoden |
244 |
6.1.7.1 |
HttpJspPage und JspPage |
244 |
6.1.7.2 |
PageContext |
245 |
6.2 |
Scripting |
249 |
6.3 |
Direktiven |
255 |
6.3.1 |
include |
255 |
6.3.2 |
Die page-Direktive (Übersicht) |
256 |
6.3.3 |
page language="java" |
257 |
6.3.4 |
page extends="klasse" |
257 |
6.3.5 |
page import="klassenliste" |
258 |
6.3.6 |
page session="true|false" |
258 |
6.3.7 |
page errorPage="true|false" und page isErrorPage="url" |
260 |
6.3.8 |
page buffer="none|sizeinkb" und page autoFlush="true|false" |
261 |
6.3.9 |
page contentType="mimetyp" |
262 |
6.3.10 |
page isThreadSafe="true|false" |
264 |
6.3.11 |
page info="irgendeintext" |
264 |
6.3.12 |
page isScriptingEnabled und page isELEnabled |
265 |
6.3.13 |
taglib uri="url" prefix="namenspraefix" |
265 |
6.4 |
Standardaktionen |
267 |
6.4.1 |
jsp:forward und jsp:include |
268 |
6.4.2 |
jsp:plugin, jsp:fallback, jsp:params und jsp:param |
270 |
6.5 |
Die Aktion useBean: JavaBeans und JSP |
272 |
6.5.1 |
Übersicht |
273 |
6.5.2 |
Spezifikationen |
277 |
6.5.2.1 |
jsp:useBean |
277 |
6.5.2.2 |
jsp:setProperty |
278 |
6.5.2.3 |
jsp:getProperty |
279 |
6.5.2.4 |
Ein Beispiel |
279 |
6.5.3 |
Das value-Attribut und Typumwandlungen |
281 |
6.5.4 |
Das useBean-Attribut scope |
282 |
6.6 |
Benutzerdefinierte Aktionen ("Custom Tags") |
286 |
6.6.1 |
Der Descriptor für Tag-Bibliotheken |
286 |
6.6.2 |
Der Tag-Descriptor |
288 |
6.6.3 |
Tag-Handler |
289 |
6.6.4 |
Die Lebenszyklen eines Tags |
291 |
6.6.5 |
Programmierung von "Custom Tags" am Beispiel |
292 |
6.6.5.1 |
Die Tag-Descriptoren |
294 |
6.6.5.2 |
Handler für das Tag abfrage |
296 |
6.6.5.3 |
Handler für das Tag ausgabe |
298 |
6.6.5.4 |
"tei" für das Tag ausgabe: Variablen für Scriplets |
300 |
6.6.6 |
Iterationen, Verschachtelungen, Bedingungen |
301 |
6.6.7 |
Datenaustausch zwischen Tags (Zusammenfassung) |
305 |
6.6.8 |
Klassen, Interfaces, Methoden und Konstanten |
306 |
6.6.8.1 |
Die Interfaces Tag, IterationTag und BodyTag |
306 |
6.6.8.2 |
Die Klassen TagSupport und BodyTagSupport |
308 |
6.6.8.3 |
Die Klassen TagExtraInfo (TEI) und VariableInfo |
310 |
6.7 |
JSP Version 2 |
311 |
6.7.1 |
Expression Language (EL) |
312 |
6.7.2 |
Tag-Dateien |
315 |
6.7.3 |
Vereinfachte Tag-Handler |
316 |
6.7.4 |
Anmerkung zu JSTL |
316 |
6.7.5 |
Standardaktionen |
317 |
6.7.5.1 |
<jsp:attribute name="name" trim="true"|"false"> |
317 |
6.7.5.2 |
<jsp:body value="body"/> |
318 |
6.8 |
Quellen |
318 |
7 |
Anwendungsbeipiele |
319 |
7.1 |
Anmerkungen zur Datenpersistenz |
319 |
7.2 |
Organisation von JSP-Dokumenten |
324 |
7.2.1 |
Selbstaufruf und "Dispatching" |
325 |
7.2.2 |
Anwendungen mit "Controller"-Seite |
327 |
7.3 |
Web-Anwendungsmodelle |
331 |
7.3.1 |
Model-View-Controller |
331 |
7.3.2 |
MVC-Beispiel: Gästebuch |
334 |
7.4 |
Sitzungen |
345 |
7.5 |
Seitenverfolger |
349 |
7.6 |
Warenkörbe |
355 |
7.7 |
E-Mail |
369 |
7.7.1 |
Mail mittels Formular (Fomular-Mailer) |
371 |
7.7.2 |
Postempfang: POP3 und IMAP |
373 |
7.7.3 |
Abonnieren und stornieren (subscribe, unsubcribe) |
374 |
7.7.4 |
Responder |
380 |
7.8 |
Quellen |
386 |
A |
JDBC-Typen |
387 |
A.1 |
JDBC-Typen in Java-Typen und umgekehrt |
388 |
A.2 |
JDBC-Typen in Java-Klassen (Objekttypen) und umgekehrt |
389 |
A.3 |
Typkonvertierungen mit preparedStatement.setObject() |
390 |
A.4 |
Typkonvertierungen mit resultSet.getXxx() |
391 |
Stichwortverzeichnisse |
393 |