4. Servlets Ein kleiner Einstieg

Ähnliche Dokumente
4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

Schritt 4: Hallo Enterprise Bean

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck

Java - Webapplikationen

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Java zur Realisierung von Internetanwendungen

e-commerce Running Tomcat

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

Web 2.0 Software-Architekturen

Application Server und Continuous Integration

Java EE Java EE Multitiered Applications

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Sicherheit. letzten beiden Punkte typischerweise durch Verschlüsselung realisiert. Komponentenbasierte Software Entwicklung. Prof. Dr.

Sitzungszustand. Vorläufige Version 309 c 2005 Peter Thiemann

Websuche: Benutzer-Schnittstelle. Eingabeformulare. Ein einfaches Suchformular. Web-Suche. Benutzer-Schnittstelle.

Schritt 1: Java im Web

Java Server Pages (JSP)

Java zur Realisierung von Internetanwendungen

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Datenbanksysteme SS 2007

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

Projekt Systementwicklung. Wie kommen Daten von einem Webserver? Java-Applikationsserver. Servlets, JSP. Handout S. 1. Dr.

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Programmieren II. Remote-Programmierung. Institut für Angewandte Informatik

Schritt 5: Session Beans

Internetanbindung von Datenbanken

J a v a S e r v l e t s

Java zur Realisierung von Internetanwendungen

Web-Suche. Eingabeformulare. Websuche: Benutzer-Schnittstelle. Ein einfaches Suchformular. Benutzer-Schnittstelle.

Beispiel Time Client/Server

Webanwendungen mit Java

A Java EE component is a self-contained functional software unit that is assembled into a Java EE. communicates with other components.

Das WWW im Schweinsgalopp

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Referat: Netzwerkprogrammierung in Java

Web- Applikationen. in Java-Web

Programmieren in Java

Netzwerkprogrammierung

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

Auslieferungsmethoden im Performancevergleich Zieleinlauf mit Java

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

Netzwerkprogrammierung & Threads

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Kapitel 12: Datenbanken im Internet

FH LU JEE Vorlesung SS Ralf Gitzel

Webbasierte Informationssysteme

Was ist ein Web Service?

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Client/Server-Programmierung

Algorithmen und Programmierung V WS 10/11 Nachklausur am , Uhr Maximal erreichbare Punktzahl: 80 Erforderliche Punktzahl: 40

Web-Programmierung (WPR)

Proseminar: Website-Management-Systeme

Programmiermethodik. Übung 13

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Beispiel senden

Theoretische Aspekte

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 5 Formulare

Einführung in Internet- und Middleware Technologien

Programmieren von Webinformationssystemen

Beispiel: Keine Threadsicherheit(1/2) Servlet - Lebenszyklus. Berechnen und Weiterleiten (1/2) Beispiel: Keine Threadsicherheit(2/2) Laden static{...

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

Datenbanksysteme 2009

Überblick über Internet-Technologien

Übungsaufgabe 9: Warenkorb

Java Remote Method Invocation (RMI)

Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Sockets.

Informatik I: Einführung in die Programmierung

JSP und Servlet Programmierung

Distributed Computing Group

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Name: Matr.-Nr.. Aufgaben: Punkte erreicht. 1. Klient mit Socket Server mit Sockets Java RMI Klienten und Server PHP 9.

Der IBM Websphere Portalserver

Anwendungsprotokolle: HTTP, POP, SMTP

Softwareentwicklung mit JAVA EE

Themen. Web Service - Clients. Kommunikation zw. Web Services

Web-Konzepte für das Internet der Dinge Ein Überblick

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Java RMI Remote Method Invocation

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Fortgeschrittene Servlet- Techniken. Ralf Gitzel

Platform as a Service (PaaS) Prof. Dr. Ch. Reich

Geschäftsprozesse Benutzerschnittstelle

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

Networking. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Übungen zu Softwaretechnik

Reflection. Arthur Zaczek. Nov 2014

Web-Entwicklung. Tomcat testen und installieren KAPITEL 9

Internetapplikationen

Servlets und Java Server Pages

Grundlagen der WWW- und Dokumenten-Architektur. Robert Strzebkowski TFH Berlin

Techniken der Projektentwicklung

Applets I. Grundlagen der g Applet-Programmierung

Networking. Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Web-Programmierung (WPR)

Informatik I: Einführung in die Programmierung

Aktuelle Technologien zur Entwicklung verteilter Anwendungen RESTful Web Services mit JAX-RS

Transkript:

4. Servlets Ein kleiner Einstieg Erinnerung: HTTP und HTML Idee von Web Servern und Containern Erstellung einfacher Servlets (zunächst software technisch übelst unstrukturiert) Literatur: B. Basham, K. Sierra, B. Bates, Head First Servlets and JSP, Second Edition, O Reilly, Sebastopol (USA), 2008 Sun, Java Servlet Specification Version 2.5 MR6 Sun: http://java.sun.com/developer/onlinetraining/servlets/ Fundamentals/servlets.html#usingJavaWebServer 147

Kurze Java Historie Erfolgsfaktoren von Java Portabilität Wesentlich einfachere Syntax/Semantik als C++ Frei verfügbar Oberflächenentwicklung als Teil der Kernsprache (erst AWT, dann Swing) Mit Applets erste einfach anzuwendende Technik, Programme im Browser laufen zu lassen Heute Applets spielen relativ geringe Rolle Java die Allgemeinsprache Java auch in Servern genutzt 148

Erinnerung: Internet Anwendungen URL (Uniform Resource Locator) Adressierung von Maschinen, Dateien und Programmen URI (Uniform Resource Identifier) Indirekte Adressierung, Server kennt evtl. physikalischen Pfad und Dateinamen Auch alleine als eindeutiger Identifikator (ohne konkrete Information dahinter nutzbar) HTTP (Hypertext Transfer Protocol) Kommunikation zwischen Client und Server (Request und Response) GET: Parameter bei Anfrage an URL gehängt (sichtbar) POST: Parameter im separaten Block (Body) unsichtbar 149

Konzept eines Seitenaufrufs HTTP-Request Web-Server Client HTTP-Response mit HTML-Datei im Body Server HTML (Hypertext Markup Language) Auszeichnungssprache mit festgelegten tags zum Aufbau der Ausgabe Ebene 3/4 typisch TCP/IP, Session Ebene 5: HHTP, Darstellungsebene 6: HTML, Programmebene 7: JVM 150

HTTP Ablauf Client: Request get, post, head, put,... URL HTTP1.x HeaderInfo: Accept, Cookie,... Body: Post Parameter Server: Response Statusmeldung: HTTP1.x 200 OK, oder 404 Error HeaderInfo: Content type, set cookie,... Body: Dokument Verbindungsabbau Protokoll ist zustandslos/gedächtnislos; Client wird bei erneutem Request ohne Trick nicht als Bekannter erkannt 151

HTTP Server selber schreiben public class Main { public static void main(string[] args) throws UnknownHostException, IOException { ServerSocket socket = new ServerSocket(80); Socket conn = socket.accept(); BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readline())!= null) System.out.println(line); conn.close(); } } GET /meinwww:80 HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; 152

Web Server mit Container nutzen Servlet: Wortkreation aus den Begriffen Server und Applet, (serverseitiges Applet) Web Server leitet HTTP Request an Servlet weiter Servletkann Antwort (HTML Code) berechnen Servletkann Anfrage Informationen und Serverumgebung nutzen Servletkann mit anderen Servlets kommunizieren Container 153

Erstes Servlet (1/2) import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class ErstesMal extends HttpServlet { @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } @Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } 154

Erstes Servlet (2/2) protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); try { out.println("<html> <head>"); out.println("<title>servlet ErstesMal</title>"); out.println("</head><body>"); out.println("<h1>pfad:<br>" + request.getcontextpath() + "</h1>"); out.println("</body></html>"); } finally { out.close(); } } } 155

Typische Projektstruktur () Zentrale Konfigurationsdatei web.xml (Deployment Descriptor) Ergänzt um Serverspezifika sun web.xml <servlet> <servlet-name>erstesmal</servlet-name> <servlet-class>servlets.erstesmal </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>erstesmal</servlet-name> <url-pattern>/erstesmal</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> 156

Erstes komplettes Beispiel (1/4) <html> <head> <title>bewertung</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <form name="auswertungsform" action="auswertung" method="post"> Verteilte ID eingeben: <input type="text" name="idfeld" value="" size="20" /><br> <input type="checkbox" name="urteil" value="ausgezeichnet" checked="checked" /> ausgezeichnet <br> <input type="checkbox" name="urteil" value="faszinierend" checked="checked" /> faszinierend <br> <input type="checkbox" name="urteil" value="solala" /> solala <br> <input type="submit" value="abschicken" name="abschicken"/> </form> </body> </html> 157

Erstes komplettes Beispiel (2/4) Web Seite und Projektaufbau 158

Erstes komplettes Beispiel (3/4) public class Auswertung extends HttpServlet { protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); String id = request.getparameter("idfeld"); String [] werte = request.getparametervalues("urteil"); try { out.println("<html> <head>"); out.println("<title>bewertungsergebnisse</title>"); out.println("</head> <body>"); out.println("<h3>auswertung mit ID: "+id+ "</h3><ul>"); if(werte!=null) for(int i=0;i<werte.length;i++) out.println("<li>"+werte[i]+"</li>"); out.println("</ul></body></html>"); } finally { out.close(); } }... 159

Erstes komplettes Beispiel (4/4) In web.xml <welcome-file-list> <welcome-file>bewertung.html</welcome-file> </welcome-file-list> Ausgabe 160

Deployment (Ausblick) Standard definiert u. a. : web.xml in WEB INF Programmierte Klassen in Ordner classes war = Web Archive (installierbar durch Drag und Drop) In Netbeans empfiehlt sich Blick in Ordner build oder dist 161

Ablauf bei Servlet Nutzung (1/2) Web-Server GET GET Web Server Steuerung Servlet Steuerung (Container) Client erzeugt erzeugt :Request :Response liest Servlet Thread erzeugt Servlet (in Java) 162

Ablauf bei Servlet Nutzung (2/2) HTTP <HTML> Web Server Steuerung <HTML> Servlet Steuerung (Container) Web-Server Client liest :Response <HTML> schreibt Servlet Thread <HTML> 163

Aufgaben des Containers Kommunikation zwischen Servlet und Web Server Container steuert Erzeugung und Löschung von Servlets Container ermöglicht Mehrfachnutzung; neue Threads für benötigte Servlets Hinweis: Container garantiert keine Threadsicherheit; gemeinsam genutzte Objekte muss Entwickler synchronisieren Container Verhalten über XML Deployment Descriptor konfigurierbar Container erlaubt Zusammenarbeit von Techniken ( > JSP) 164

Zwischenfazit Servletserlauben mit Hilfe eines Web Servers und zugehöriger Container die Erzeugung dynamischer HTML Seiten Servlet Konfiguration über einen Deployment Descriptor Servletskönnen klassische und selbst erstellte Java Klassen nutzen Container stellt Objekte zur Aufgabenlösung zur Verfügung (einige mehr, als bis jetzt gezeigt) Alles in Servlets zu packen, ist schlechte Idee Keine Trennung der Oberfläche und der Geschäftslogik println ist fehlerträchtig in Web Designer können kein Java 165