Weitergehende Webprogrammierung mit NetBeans - 2. Meilenstein
Hinweis: Es handelt sich hierbei NICHT mehr um den zweiten Meilenstein. Dieses Dokument existiert nur noch aus historischen Gründen!
Vorbereitungen
Es empfiehlt sich, diesen Meilenstein in einer virtuellen Maschine zu lösen, da Sie dann bei Fehlern auf einen früheren Entwicklungsstand des Meilensteins zurückspringen können (mittels Snapshots). Verwenden Sie am besten Oracle VirtualBox, da dieser Virtualisierer auf allen Betriebssystemen kostenfrei zur Verfügung steht. Installieren Sie ein virtuelles Linux Ubuntu. Geben Sie diesem mindestens 3-4 GB Hauptspeicher. Verzichten Sie (zumindest dann, wenn Sie nicht VirtualBox verwenden, sondern Microsoft Hyper-V) auf dynamische Hauptspeicherzuweisung, da Ubuntu damit nicht gut zurechtkommt, oder installieren Sie die Ubuntu-Pakete zur Virtualisierungsunterstützung. Installieren Sie Oracle Java EE mit GlassFish, und bitte nicht Java OpenJDK, da dieses mit NetBeans nicht vollständig kompatibel ist. Installieren Sie im Anschluss NetBeans selbst.
Bearbeitung des ersten Aufgabenteil – Datenbank-Anbindung mit JDBC
In dieser Fingerübung sollen Sie sich mit der einfachsten Art vertraut machen, Datenbankinhalte in dynamischen Webseiten zu verwenden – "Model 1 mit direktem Datenbankzugriff".
Tutorial durchführen
Arbeiten Sie das NetBeans-Tutorial Creating a Simple Web Application (veraltete Notfall-Alternative: ziemer.info/tutorials/se/mysql-webapp.html) durch. Ich empfehle Ihnen, die JavaDB (DerbyDB) zu verwenden, und nicht MySQL. Stellen Sie sicher, dass die Dropdown-Liste der Subjects nur Namen zeigt, und keine zusätzlichen Indizes. Die Lösung dazu finden Sie ebenfalls im Tutorial.
Dokumentieren Sie Ihre Beobachtungen und Interpretationen des Geschehens. Es geht nicht darum zu beschreiben, was Sie geklickt und eingetippt haben, sondern darum, dies zu interpretieren und zu bewerten! Das Tutorial ist zwar ein wenig umfangreicher, hat aber einen hohen Lernwert.
Erweiterung der entstandenen Weblösung um einen zusätzlichen Geschäftsprozess
Erweitern Sie die aus dem Tutorial heraus entstandene Weblösung um folgenden Geschäftsprozess: Es sollen neue Datensätze von Subject und Counselor in der Datenbank erfasst werden. Auf einer hierfür zu erstellenden Webseite wird ein HTML-Formular angezeigt. Es enthält Eingabemöglichkeiten (Input-Felder) für alle relevanten Attribute der zu erfassenden Datensätze. Die Felder im Formular werden vom Anwender gefüllt und mittels eines Submit-Buttons abgeschickt. Dadurch werden neue Datensätze mit den eingegebenen Attributinhalten in die Datenbank geschrieben. Nach Rückkehr auf die Webseite "index.jsp" ist auch der soeben erfasste Subject-Datensatz in der Dropdown-Liste sichtbar. Nach seiner Auswahl wird der dazu erfasste Counselor-Datensatz angezeigt. Zur Abgabe werden Sie diesen Geschäftsprozess (und den Rest der Webanwendung) demonstrieren.
Dokumentieren Sie für beim Implementieren des zusätzlichen Geschäftsprozesses Ihr gesamtes Vorgehen.
Bearbeitung des zweiten Aufgabenteils – Servlet von Hand
Inzwischen wissen Sie, dass Servlets die Basistechnologie und JSPs nur komfortable Notationen für Servlets sind. Eine kurze Zusammenfassung zur Servlet-Technologie finden Sie im JSP-Tutorial im Anhang II: Servlets – Die Grundlagen. Erstellen Sie jetzt eine elementare, JSP-freie Webanwendung, in der die auszugebende Webseite direkt von einem Servlet erzeugt wird. Das ist in NetBeans sehr einfach:
- Erstellen Sie ein neues Java-Web-Projekt.
- Erzeugen Sie darin ein neues Servlet (Kontextmenü New -> Servlet).
- Ziehen Sie die vorgegebenen Ausgabezeilen aus dem Kommentar heraus (sofern es überhaupt Kommentarzeilen gibt) und
- speichern Sie das Servlet.
- Löschen Sie die Datei "index.jsp".
- Tragen Sie im Deployment-Deskriptor "web.xml" im Tag "welcome-file" statt "index.jsp" den Namen Ihres Servlets ein, z. B. "HelloServlet".
- Starten Sie das neue Projekt.
Finden Sie das übersetzte Servlet im Dateibaum. Sie müssen dazu in die Registerkarte „Files“ wechseln. Wer Lust hat, kann das Servlet beliebig „aufbohren“. Ihrer Fantasie sind keine Grenzen gesetzt, aber vergessen Sie nicht, dass es noch mehr zu tun gibt! Und auch Servlets werden Sie in der Regel nicht von Hand schreiben.
Dokumentieren Sie Ihre Beobachtungen und Interpretationen des Geschehens.
Bearbeitung des dritten Aufgabenteils – Erste JSF-Anwendung
Lernen Sie jetzt die Technologie kennen, mit der wir weiterarbeiten werden, das JSF-Framework. Arbeiten Sie dazu bitte das NetBeans-Tutorial Introduction to the Java Server Faces Framework (veraltete Notfall-Alternative: ziemer.info/tutorials/se/jastrologer-intro.html) durch und protokollieren Sie Ihre Arbeit, wie Sie es in den ersten beiden Teilen des Meilensteins getan haben.
Dieser Aufgabenteil bleibt unbearbeitet.
Was soll im fertigen Meilenstein vorhanden sein?
- Dokumentation des ersten Aufgabenteils (inkl. des neuen Geschäftsprozesses)
Dokumentieren Sie Ihre Beobachtungen und Interpretationen des Geschehens bei der Durchführung des Tutorials. Es geht nicht darum, zu beschreiben, was Sie geklickt und eingetippt haben, sondern darum, dies zu interpretieren! Bei der Implementierung des neuen Geschäftsprozesses dokumentieren Sie hingegen Ihr gesamtes Vorgehen.
- Dokumentation des zweiten Aufgabenteils
Dokumentieren Sie Ihre Beobachtungen und Interpretationen des Geschehens beim Durchführen der vorgegebenen Aufgabenschritte.
- Demonstration des ersten Aufgabenteils (inkl. des neuen Geschäftsprozesses) sowie des zweiten Aufgabenteils
Auf mindestens einem Rechner muss die Aufgabe zum Zeitpunkt der Meilensteinabgabe live demonstriert werden.
- Problemdokumentation
Vor welchen technischen oder anders gearteten Problemen standen Sie während der Projektbearbeitung (üblicherweise: Virtualisierung/VirtualBox, Konfiguration von MySQL/JavaDB, GlassFish, NetBeans/Java, "Datenbankzugriff funktioniert nicht", "Webseite öffnet sich nicht" etc.) und wie haben Sie diese gelöst? Wieviel Zeit haben Sie zur Lösung des Problems benötigt? Falls Sie ein Problem bis zum Schluss nicht gelöst haben, so dokumentieren Sie bitte, was Sie alles (erfolglos) versucht haben.
- Eine Frage pro Übungsgruppenteilnehmer
Überlegen Sie sich pro Teilnehmer Ihrer Übungsgruppe eine interessante Frage. Die Fragen können technischer, theoretischer oder sonstiger Natur sein. Sie müssen jedoch eine ernsthafte Relevanz zum Meilenstein besitzen. Beantworten und dokumentieren Sie die Fragen.
- Fazit
Ziehen Sie ein Fazit für den gesamten Meilenstein, in dem folgende Fragen beantwortet werden: Was ist ein Servlet? Welche Rolle spielen Servlets im ersten und im zweiten Teil des Meilensteins? Welche Zusammenhänge bzw. Unterschiede gibt es in diesem Kontext zwischen erstem und zweitem Teil?
Bekannte Probleme, mit denen Sie rechnen müssen
- Besser JavaDB (DerbyDB) als MySQL verwenden
Die Datenbank MySQL muss für den Meilenstein extra konfiguriert werden. JavaDB hingegen ist in NetBeans bereits ordentlich integriert. Ich empfehle deshalb, diesen Meilenstein mit der JavaDB als Datenbank durchzuführen, da mit MySQL gelegentlich Probleme auftreten können. Hinweis: In der Registerkarte „Services“ erzeugen Sie mit einem Rechtsklick auf die JavaDB-Option „Create Database“ eine neue Datenbank. Stellen Sie mit einem Rechtsklick und „Connect“ die Verbindung dazu her. Mit Rechtsklick auf das Verzeichnis „Tables“ wählen Sie „Execute Command“. In das erscheinende Fenster kopieren Sie den Inhalt der Datei Ifpwafcad-Derby.sql und führen sie aus. Verwenden Sie anstelle der JavaDB-Datenbank eine MySQL-Datenbank, nehmen Sie unbedingt die Datei Ifpwafcad-MySQL.sql. Sie enthält einige Syntaxänderungen gegenüber der Derby-Variante, erzeugt aber das gleiche Datenbank-Schema mit den gleichen Inhalten.
- glassfish-resources.xml verschieben
Die Datei glassfish-resources.xml wird (durch NetBeans selbst!) leider im falschen Projektpfad Configuration Files erstellt. Sie muss von dort nachträglich per Hand in den richtigen Pfad Server Resources verschoben werden. Tun Sie dies nicht, werden Sie verschiedenste Probleme mit den skurrilsten Auswirkungen beobachten!
- Aufgabenvollständigkeit prüfen
Bearbeiten Sie bitte alle Aufgabenteile vollständig. Lesen Sie deshalb diesen gesamten Text sehr aufmerksam und möglichst mehrfach. Wenn Sie denken, dass Sie fertig sind, überprüfen Sie es noch einmal.