Einführung in Java-Web Web- Applikationen Frank Huber Humboldt-Universität zu Berlin
Allgemeines Java: Programmierung ist Programmierung nach Konvention Insbesondere bei Web-Applikationen wurde eine API definiert, die erst vom Servlet-Container erfüllt wird Programmierung gegen Interfaces Folge: Servlet Container oder Application Server ist Voraussetzung für Java Web-Applications
Zutaten Application Server / Servlet Container. Hier: Tomcat 5.5 Konfiguration des Servlet Containers. Hier: ${tomcat_home}/conf/server.xml Konfiguration der Web-Applikation: ${webapproot}/web-inf/web.xml JSPs Servlets weitere Klassen / Bibliotheken
Servlet Container: Einführung Projektseminar Informationssysteme 02.05.2007 Konfiguration (1) ${tomcat_home}/conf/server.xml: Konfiguration des Servlet Containers. Nicht standardisiert. Definition der Web Application Contexts Alternativ: Definition eines "default-verzeichnisses" für webapps; dann Interpretation aller Unterverzeichnisse als Kontext Kontext: Erster Teil der URL nach dem Servernamen. z.b.: http://localhost:8080/myapp/web/page/x. Kontext: myapp
Konfiguration (2) Web-Applikation Verzeichnislayout: Hauptverzeichnis des Kontextes ("Kontextverzeichnis"): context/ Konvention: Informationen zur Web-Applikation / Klassen / Ressourcen. Von außen nicht sichtbar: context/web-inf/ Konfigurationsdatei ("deployment descriptor") der Web- Applikation. context/web-inf/web.xml.class-files der Webapplikation. Ordner wird vom Container automatisch in den Classpath gelegt. context/web- INF/classes/.jar-Files der Webapplikation. Jedes.jar-File wird automatisch in den CP gelegt. context/web-inf/lib/
Konfiguration (3) Nachtrag Servlet-Container:.jar-Files für alle Web-Applikationen im Container sowie Tomcat selbst: ${tomcat_home}/common/lib.jar-files für alle Web-Applikationen und NICHT für Tomcat: ${tomcat_home}/shared/li
Details: web.xml Beinhaltet Konfiguration für Web-Applikation, z.b.: Name der Webapplikation Servlet-Filter Kontext-Parameter (Application Properties) Servlet-Definitionen & Mappings Error-Pages, Taglib-Definitionen, Welcome-Files Minimal ist nur webapp-root-tag erforderlich (Beispiel) Ein umfangreicheres Beispiel liegt hier
Weitere Ressourcen Servlet-Spec Java ist auch eine Insel Tomcat Application Development Guide JSP-Syntax (PDF)
Servlets vs. JSPs generell: gleichmächtig (JSPs werden vor Ausführung in Servlets konvertiert) JSP-Ansatz: HTML-Code mit Java-Code-Snippets und Tags Servlet-Ansatz: Java-Klasse. Aufruf einer entsprechenden service-methode. Für Servlets allgemein: service() Für HTTP-Servlets weiter gekapselt in doget, dopost, doput, dodelete,...
Parameter und Attribute 4 Gültigkeitsbereiche: Application (Context), Session, Request, Page Application: Definition von applikationsglobalen Parametern (Strings) in web.xml Session: Benutzerspezifische Attribute (Object) Request: Requestspezifische Parameter (Strings per Request übergeben) und Attribute (Objects, durch JSP und Servlets in den Request gelegt) Page: Attribute (Objects), die nur innerhalb der aktuellen JSP gültig sind
Zugriff auf Parameter und Attribute (1) Aus JSPs heraus über implizit vorhandene Objekte: request (javax.servlet.http.httpservletrequest) response (javax.servlet.http.httpservletresponse) out (javax.servlet.jsp.jspwriter) application (javax.servlet.servletcontext) session (javax.servlet.http.httpsession) pagecontext (javax.servlet.jsp.pagecontext) page (Object (this))
Zugriff auf Parameter und Attribute (2) Aus Servlets heraus: request: übergebener Wert response: übergebener Wert out: response.getwriter() oder response.getoutputstream() application: getservletcontext() session: request.getsession() pagecontext/page: nicht relevant
Weiterleitung Interne Weiterleitung (forward) Interne Weiterleitung findet innerhalb des Servlet-Containers statt (gleicher Thread) erlaubt Weitergabe von zusätzlichen Request-Parametern im Client-Browser weiterhin ursprüngliche URL sichtbar Weiterleitung von Serlvet zu Servlet oder von Servlet zu JSP Externe Weiterleitung (redirect) Externe Weiterleitung fordert den Client-Browser auf, andere Seite zu laden (HTTP Redirect) Initiiert zusätzlichen HTTP-Request Beispiel
JSP-Snippets Snippets JSPs sind Kombination von HTML mit JSP-Snippets und Tags Ein JSP-Snippet beinhaltet Java-Code, der (je nach Snippet-Typ) in spezielle Klammern eingeschlossen ist Mögliche Snippets
JSP-Tags Ein JSP-Tag ist eine Java-Klasse, die mindestens das Interface javax.servlet.jsp.tagext.tag implementiert, meistens jedoch wegen deutlich höherer Bequemlichkeit javax.servlet.jsp.tagext.bodytagsupport ableitet JSP-Tags müssen in einer Taglib-Definition definiert werden, welche dann in der JSP mittels <%@taglib - Direktive eingebunden wird JSP-Tags werden in der JSP analog zu XML-Tags benutzt; die implementierende Klasse hat Zugriff auf Attribute, Body etc. und kann den auszugebenden Body modifizieren. Eine Standardbibliothek mit nützlichen Tags ist die Standard Taglib Library (JSTL). Beispiele dafür gibt's mit: Google "JSTL examples"
Datenzugriff Gleiches Prinzip wie in DBS1 vorgestellt: Datenbanktreiber in Klassenpfad legen Treiber laden (damit implizit beim java.sql.drivermanager registrieren) Connection holen Statement vorbereiten Statement ausführen & ResultSet holen ResultSet anzeigen Codeschnipsel zum DBS1-Beispiel
Zusammenfassung Java-Programmierung ist mehr als Syntax lernen Kontext, WEB-INF-Verzeichnis, Deployment- Descriptor Servlets / JSPs Forward vs. redirect 4 scopes: application, session, request, page JSP-Snippets Datenzugriff
Zweite Übungsaufgabe Installation / Konfiguration von Java 1.5 und Tomcat 5.5.* Erste JSP-Schritte mit Tomcat Datenzugriff mit JSPs unter Tomcat -------------------------------------------------------------- Kombination Tomcat / Apache Servlets Entwicklungsumgebung Logging Integration von Tests
Fragen?