Einführung Projektseminar Informationssysteme – 02.05.2007 Einführung in Java-WebApplikationen Frank Huber Humboldt-Universität zu Berlin Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 Konfiguration (1) • Servlet Container: • ${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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 WebApplikation. context/WEB-INF/web.xml • .class-Files der Webapplikation. Ordner wird vom Container automatisch in den Classpath gelegt. context/WEBINF/classes/ • .jar-Files der Webapplikation. Jedes .jar-File wird automatisch in den CP gelegt. context/WEB-INF/lib/ Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 Weitere Ressourcen • Servlet-Spec • Java ist auch eine Insel • Tomcat Application Development Guide • JSP-Syntax (PDF) Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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, ... Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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)) Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 JSP-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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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" Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 Zusammenfassung • Java-Programmierung ist mehr als Syntax lernen • Kontext, WEB-INF-Verzeichnis, DeploymentDescriptor • Servlets / JSPs • Forward vs. redirect • 4 scopes: application, session, request, page • JSP-Snippets • Datenzugriff Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 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 Sommersemester 2007 Einführung Projektseminar Informationssysteme – 02.05.2007 Fragen? Sommersemester 2007