Folien_02 - DBIS - Humboldt

Werbung
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
Herunterladen