SOFTWARE ENGINEERING 2 SCHMIEDECKE 13 FINGERÜBUNGEN ZUM JAVA WEB-FRONTEND MIT NETBEANS Arbeitsziel: Einrichten der Arbeitsumgebung und erstes Kennenlernen der Java-Web-Programmierung mit NetBeans, Einführung in JSP, JSF und den Standardschutz für Web-Anwendungen. Bearbeitungszeitraum: 5 Kurswochen mit Zwischenabnahmen. Die praktischen Übungen sind essenziell für das Verständnis der Theorie. Deshalb muss jeder Teilnehmer (nicht jede Gruppe) die praktische Arbeit am Rechner selbst durchführen und verstehen! Bei der Abnahme müssen alle Gruppenmitglieder anwesend sein. Abgabe: Halten Sie bitte die wesentlichen Arbeitsschritte, alle Probleme mit ihren Lösungen, alle Erkenntnisse und evtl. ungelöste Fragen stichwortartig in einem Protokoll fest und laden es in Moodle hoch (als Gruppe). Kopieren Sie nicht das Tutorial, sondern ergänzen sie Ihre Erfahrungen damit! ________________________________________________________________________________ Fingerübung 1: JSPs und NetBeans (1 Woche) Falls Sie auf Ihrem eigenen Rechner arbeiten, installieren Sie bitte die aktuelle NetBeans IDE für Java EE mit dem JSF2.x-Plugin. Der aktuelle Glassfish-Server und die Java-DB „Derby“ sind automatisch enthalten. Natürlich sollten Sie immer ein aktuelle Java-Version installiert haben. 1. Machen Sie sich anhand des JSP-Tutorials (www.jsptutorial.org) mit der JSP-Syntax vertraut. Lesen Sie dazu unbedingt die Abschnitte 7-10. Die Abschnitte 1-3 sind für das Verständnis sehr zu empfehlen. Sie müssen danach die JSP-Syntax nicht perfekt beherrschen, da Sie praktisch keinen JSP-Code schreiben werden – aber Sie sollten JSP lesen und verstehen können. Notieren Sie die wichtigsten Syntaxelemente im Protokoll. Praktische Übungen machen Sie in NetBeans unter Verwendung des Glassfish-ApplicationServers (nicht Tomcat), Sie müssen also nicht die Installationsanweisungen des JSP-Tutorials umsetzen. Der Netbeans-Projekttyp ist Java-Web-Application, der Dateityp JSP. 2. Unter Help > Online Docs & Support > Java EE & Web Applications finden sie die einschlägigen Tutorials für Web-Anwendungen in Java. Arbeiten Sie bitte das erste Tutorial, Introduction to Developing Web Applications, durch. Lesen sie die JSPs, die entstehen, und studieren Sie sich auch die entstehende Dateistruktur! Kommentieren Sie die JSP-Seiten, indem Sie zu jedem Stück JSP-Code vermerken, um welches Syntaxelement es sich handelt und was es bewirkt. Verwenden Sie dafür JSP-Kommentare, also <%-- --%>. Übernehmen Sie die kommentierten JSP-Seiten in Ihr Protokoll. Achtung Falle: „name“ ist hier verwirrenderweise ein Synonym mit sehr unterschiedlichen Bedeutungen. Am besten wählen sie andere Bezeichner, die sich voneinander unterscheiden! ________________________________________________________________________________ Für „Mutige“: Um zu testen, ob Sie alles verstanden haben, schreiben Sie danach ohne NetBeans eine einfache JSP-Hallo-Welt-Anwendung, erstellen Sie das Dateiverzeichnis von Hand und speichern es als WAR gepackt direkt im Glassfish-Autodeploy-Verzeichnis in Ihrer Domäne, z.B. Z:\glassfish\domain1\autodeploy. Für Kreative: Bauen Sie Ihre Anwendung zu einem kleinen Gästebuch aus, jedoch ohne Datenpersistenz: Geben Sie dem entsprechenden Bean die Lebensdauer „application“, dann bleiben die Daten bis zum nächsten Neustart des Servers erhalten. Wenn Sie CSS beherrschen, dann geben Sie Ihren Seiten noch ein nettes Aussehen. SOFTWARE ENGINEERING 2 SCHMIEDECKE 13 Fingerübung 2: JSF 2.0 mit NetBeans (2 Wochen) Lernen Sie jetzt den Umgang mit dem Frontend-Framework JSF 2.0 kennen, indem Sie das Tutorial Introduction to Java Server Faces 2.0 durcharbeiten (das letzte im “Getting Started“-Block). Wieder ist es vorranging, dass Sie verstehen, was Sie tun – dokumentieren Sie es bitte durch Kommentare in den JSF-XHTML-Seiten; benutzen Sie dazu HTML-Kommentare, also <!-- -->. Und natürlich schreiben Sie alles, was Sie erkant haben, was Ihnen auffällt und was Probleme gemacht hat ins Protokoll. (Wenn Sie den letzten Teil “Templates“ nicht schaffen, lesen Sie ihn bitte jedenfalls durch! Fingerübung 3: Zugriffschutz und Sicherheit (2 Wochen) Web-Anwendungen bieten breite Angriffsflächen, weil Sie grundsätzlich von jedem beliebigen Benutzer im Netz – und das ist meistens das WWW – verwendet werden können. Deshalb müssen Schutzmaßnahmen ergriffen werden. Die Standardmaßnahmen sind: Authentifizierung und Autorisierung (Login und Zugriffschutz) Eingabevalidierung Timeout Es reicht nicht, diese Schutzmaßnahmen irgendwie zu implementieren. Man sollte sich auf geprüfte Standardwerkzeuge stützen, auch, damit die Anwendungen von Sicherheitsupdates profitieren. Java-Applicationserver bieten eine JAAS-Implementierung für die Authentifizierung und Autorisierung, die sie in einem Tutorial kennenlernen werden. Sie wissen außerdem, wie Sie den Server zu einem Timeout veranlassen. Darüber hinaus sollen sie sich mit den Validierungsmöglichkeiten in JSF auseinandersetzen. 1. Arbeiten Sie zunächst bitte das Tutorial Securing a Web Application im Block “Tutorials and Articles”, Abschnitt ”Developing a Web Application“ durch. Im Protokoll erläutern Sie bitte die Fachtermini (Role, Security Constraint, Principal - wenn Sie ein deutsches NetBeans nutzen, finden Sie auch die Übersetzungen heraus!) und erklären Sie, wie man diese setzt und ändert. Fehler und Sackgassen beim Durcharbeiten gehören natürlich auch wieder ins Protokoll. Wichtig: Wie im letzten Tutorial, gibt es hier auch wieder viele Synonyme, d.h. dass z.B. „admin“ in verschiedenen Bedeutungen vorkommt. Bitte, ändern Sie folgendes: Usernamen und Passwörter Bezeichnung der Sicherheitsrollen Bezeichnung der Sicherheitsbeschränkungen Finden Sie bitte außerdem 2 Wege, dem Admin zusätzlich Zugang zu den User-Seiten zu geben. 2. Als eigenes Beispiel für die grundlegenden Sicherheitsmechanismen bauen Sie jetzt ein kleines JSF-Logbuch: Berechtigte Nutzer können Log-Einträge machen, bestehend aus Datum (automatisch) Textzeile und Zahlencode für den Projektkontext. Legen sie mindestens zwei Benutzer mit Schreibrecht und einen mit nur Leserecht an. Setzen sie außerdem ein Timeout und validieren Sie die Eingaben mit JSF. Es ist keine Persistenz (also keine Datei oder Datenbank) erforderlich: Füllen sie einfach eine Liste in einem Managed Bean mit Application Scope. Wer gut zurecht kommt, kann folgende Erweiterungen vornehmen: Geben Sie statt des Zahlencodes ein bestimmtes Muster vor (etwa 234.002.100 oder P34-22-SMI) und validieren Sie es; tragen Sie zusätzlich den Nutzername ins Logbuch ein. SOFTWARE ENGINEERING 2 SCHMIEDECKE 13 Links: JSP-Tutorial www.jsptutorial.org Netbeans-Tutorials Java Web http://netbeans.org/kb/trails/java-ee.html Introduction to Developing Web Applications http://netbeans.org/kb/docs/web/quickstart-webapps.html Introduction to Java Server Faces 2.0 http://netbeans.org/kb/docs/web/jsf20-intro.html Securing a Web Application http://netbeans.org/kb/docs/web/security-webapps.html Aktueller Hinweis: Oracle hat ein umfassendes JEE-6-Tutorial herausgebracht, das alle Themen, zumeist mit denselben Beispielen, zusammenfasst. Es ist sehr viel genauer und ausführlicher, enthält aber auch deutlich mehr Text. Für diesen Kurs relevant sind Part II – The Web Tier, Part VI –Persistence (für Meilenstein 2) und Part VI – Security (nur Abschnitte 39 und 40). Ich stelle Ihnen frei, statt der oben genannten mit diesem Tutorial zu arbeiten. Geben sie das bitte in Ihrem Protokoll an! Für die meisten ist es vermutlich eher eine gute Referenz, wenn Sie etwas nicht verstehen oder genauer wissen wollen. http://docs.oracle.com/javaee/6/tutorial/doc/bnatc.html