Software Engineering Praktikum WS 2002/03

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
Software Engineering Praktikum SS 2003
Basis-Architekturen für Web-Anwendungen
Internet-Datenbanken
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
HTML - Einführung Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Sprache
Internet-Technologien und Java
Internet-Technologien und Java. Beispiel: Im Browser wird diese Zeile eingegeben. Wie nennt man diese eingegebene Zeile.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Dynamische Webseiten mit PHP Oder: LAMP - The open way.
Dynamische Webseiten mit PHP
Dynamische Webseiten Java servlets.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Spezielle Aspekte der Anbindung von Datenbanken im Web.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
Seminar Internet Technologien
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Coccon das Web-XML-Publishing System Thomas Haller.
Einführung Servlets/JSPs
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Applets Java für’s Web.
Seminar Internet - Technologie
PPS-Design einer eigenen WWW-Homepage SS 2003 Applets.
Servlet III Java Webanwendung Webcontainer Web.xml
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Grundlagen: Client-Server-Modell
Anwendungen Servlet II Formular Auswertung Zähler
Servlets Servlets und relevantes API Servlets & SQL via JDBC Implementierungs - Spezifika Architektur Überblick Vertikaler Prototyp / Spezifikation.
Programmierprojekt Java Server Pages
Web 2.0 & AJAX (A)sysnchrones (J)avaScript (A)nd (X)ML
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
HTTP IT-Zertifikat Universität zu Köln Allgemeine Technologien II
UML Präsentation Team 2 Projekt Sportereignis
Client-Server-Modell
Webbasierte Verwaltung von Raumbelegungen
Willkommen zum Brückensemester
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Datenbanken im Web 1.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Das Internet Ein Netzwerk, das viele Rechner miteinander verbindet
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
1 JavaServer Pages Stephan Baldes JavaServer Pages Einführung
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Praktikum Mobile Web 2.0 – 2.Teil Wolfgang Wörndl, Robert Eigner.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Internet-Technologien und Java
 Präsentation transkript:

Software Engineering Praktikum WS 2002/03 Technische Einführung Michael Forster

SEP WS 2002/03 - Technische Einführung Einleitung Idee des Software Engineering Praktikums Selbständiges Lösen einer größeren Aufgabe im Team Selbständiges Einarbeiten in neue Tools & Technologien Tutorials und Dokumentationen lesen „Spielen“ mit den Tools Einführungsaufgabe lösen Ziel dieses Vortrags Überblick über verwendete Technologien Einstieg erleichtern Kein ausführlicher Kurs Weitere Hilfe: SEP-Webseite (demnächst) 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Aufgabenstellung Inhaltlich: Termin- & Aufgabenverwaltung Überblick: Einführungsvortrag (Letzte Woche) Weitere Details: Lastenheft (Anfang August) Genaue Ausgestaltung: Pflichtenheft Technisch: Web Application Dynamische Webseiten Bedienung mit dem Browser Fragen bitte gleich stellen 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Überblick Verwendete Technologien HyperText Markup Language (HTML) HyperText Transfer Protocol (HTTP) Java Servlets Java Server Pages (JSP) Java Beans Zusammenspiel Model View Controller (MVC) Design Pattern Java Web Applications 19.07.2002 SEP WS 2002/03 - Technische Einführung

HyperText Markup Language (HTML) Sprache, in der Webseiten geschrieben sind: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Eine Beispielseite</title> </head> <body> <h1>Überschrift</h1> <p>Ein ziemlich sinnfreier Text, der nur demonstrieren soll, was HTML ist</p> </body> </html> Als bekannt vorausgesetzt Diverse Tutorials und Dokumentationen auf der SEP-Webseite DTD-Konformer Code Validator 19.07.2002 SEP WS 2002/03 - Technische Einführung

HyperText Transfer Protocol (HTTP) Kommunikationsprotokoll zwischen Browser und WWW-Server http://www.fmi.uni-passau.de/ WWW- Browser (Client) WWW- Server HTTP Request HTTP Response HTTP Request HTTP Response 19.07.2002 SEP WS 2002/03 - Technische Einführung

HTTP: Gesendete Informationen HTTP Request URL http://server:port/pfad/seite?param1=wert1&param2=wert2 http://localhost:8080/demo/add?x=12&y=13 Methode (GET/POST/…) Body (z. B: Parameter bei POST, Datei-Uploads…) Diverse andere Informationen (Header) HTTP Response Angeforderte Datei (HTML, GIF, …) 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Servlets Servlet Container WWW- Browser (Client) WWW- Server Datei-system Servlet HTTP Request HTTP Request HTTP Response HTTP Response 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Aufruf eines Servlets Anfrage: HTTP Request URL in Browser eingeben (GET) HTML Link klicken (GET) HTML Formular abschicken (GET/POST) Ergebnis: HTTP Response Wird vom Browser angezeigt Evtl. automatisch weitere Requests, etwa Bilder 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung GET Methode (Link) <html> <head> <title>Calculator</title> </head> <body> <a href="servlet/sep.CalculatorServlet?x=12&y=13"> Berechnung starten </a> </body> </html> 19.07.2002 SEP WS 2002/03 - Technische Einführung

GET Methode (Formular) <html> <head> <title>Calculator</title> </head> <body> <form action="servlet/sep.CalculatorServlet"> X: <input type="text" name="x"> Y: <input type="text" name="y"> <input type="submit"> </form> </body> </html> 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung POST Methode <html> <head> <title>Calculator</title> </head> <body> <form action="servlet/sep.CalculatorServlet" method="post"> X: <input type="text" name="x"> Y: <input type="text" name="y"> <input type="submit"> </form> </body> </html> 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Vergleich GET / POST GET Methode Parameter sind Bestandteil des URLs  Bei Bookmarks werden Parameter mitgespeichert  Ungeeignet für Passwörter Links benutzen automatisch GET Methode POST Methode Parameter werden im Body des Requests übertragen Notwendig bei Datei-Upload (Werdet ihr wohl nicht brauchen) 19.07.2002 SEP WS 2002/03 - Technische Einführung

package sep; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class CalculatorServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); PrintWriter out = response.getWriter(); out.println("<html><head><title>MyCalc</title></head>"); out.println("<body>"); out.println("Berechnung: "+x+" + "+y+" = " + (x+y)); out.println("</body>"); out.println("</html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

SEP WS 2002/03 - Technische Einführung Sessionverwaltung Problem: Viele Benutzer kommunizieren gleichzeitig mit dem Server Welche Requests gehören zu welchem Benutzer? Glücklicherweise: Servlet Engine macht die meiste Arbeit // Session holen bzw. erzeugen HttpSession session = request.getSession() // Objekt in der Session speichern session.setAttribute("user", aUser); // Objekt aus der Session lesen User curUser = (User) session.getAttribute("user"); 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Sessionverwaltung Verschiedene Implemtierungen Cookies: Auf dem Client wird eine eindeutige Session ID abgelegt URL Rewriting: Die Session ID wird in alle URLs kodiert Cookies können deaktiviert sein  Servlet Engine wählt automatisch richtige Implementierung Zu beachten:  Sessionverwaltung muss auch ohne Cookies funktionieren  Alle internen URLs müssen kodiert werden: out.println("<a href=\""); out.println(response.encodeURL("/servlet/xy.Abc")); out.println("\">text</a>"); 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Servlets: Bewertung Vorteil: Extrem flexibel Nachteil: HTML ist in Java-Quellcode eingebettet Unübersichtlich HTML-Editoren können nicht benutzt werden Kein Syntax-Highlighting von HTML-Quellcode Alternative: Java Server Pages 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSP: Beispiel <%-- Parameter lesen --%> <% int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); %> <html> <head> <title>Calculator</title> </head> <body> Berechnung: <%= x %> + <%= y %> = <%= x+y %> </body> </html> 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSP: Syntax <%= Java Expression %> 2 + 3 = <%= 2 + 3 %> <%-- Kommentar --%> <%-- JSP Kommentar --%> <!-- HTML Kommentar --> <%@ Direktive %> <%@ page import="java.util.*" %> … diverse andere Direktiven, auf die ich jetzt nicht eingehe. 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSP: Syntax <%! Funktions- und Variablen-Deklarationen %> <%! static final int PI = 3.1415926536; double u(double radius) { return 2*PI*r; } %> Umfang des Einheitskreises: <%= umfang(1.0) %> <% beliebiger Java Code („Skriptlet“) %> <% int i = 10; for(int j=0; j<i; ++j) { out.println(i); } %> Unterschied zu <%= … %>: Ergebnis wird nicht ausgegeben Strichpunkt Unterschied zu <%! … %>: Variablen sind lokal 19.07.2002 SEP WS 2002/03 - Technische Einführung

JSP: Vordefinierte Variablen ServletRequest request ServletResponse response HttpSession session JspWriter out … und einige weitere 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSPs und Servlets JSPs werden zu Servlets kompiliert: *.jsp (JSP Quellcode)  *.java (Servlet Quellcode)  *.class Trennung von Logik / Layout Servlets: HTML eingebettet in Java JSPs: Java eingebettet in HTML Folgerung: Servlets (und JavaBeans) für Logik JSPs für Anzeige 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Java Beans Beans in diesem Kontext: Nicht: Enterprise Java Beans Nicht: Oberflächenkomponenten Sondern: Server-side Java Beans Komponenten mit Properties und Methoden Im wesentlichen: Java Klassen Default Konstruktor Für jede Property mit Typ „Type“ und Namen „niceValue“ public void setNiceValue(Type value); public Type getNiceValue(); 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSPs und JavaBeans Bean deklarieren / erzeugen <jsp:useBean id="bean" scope="request" type="Klassenname"/> Property lesen <jsp:getProperty name="bean" property="niceValue"/> <%= bean.getNiceValue() %> Property schreiben <jsp:setProperty name="bean" property="niceValue" value="1.0"/> <% bean.setNiceValue(1.0) %> Beispiel folgt 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JSPs und Servlets Servlet Container WWW- Browser (Client) WWW- Server Servlet / Java Server Page HTTP Request HTTP Response 19.07.2002 SEP WS 2002/03 - Technische Einführung

Model View Controller (MVC) Servlet Container WWW- Browser (Client) Controller Controller (Servlet) Model (Java- Beans) Model HTTP Request View (JSP) View HTTP Response 19.07.2002 SEP WS 2002/03 - Technische Einführung

Model View Controller (MVC) Model (Java Beans) Enthält die eigentliche Programmlogik Unabhängig von der Webschnittstelle  Kein Import von javax.servlet.* View (JSPs) Anzeige des Ergebnisses Ziel: Möglichst wenig Java Code Controller (Servlet) Einlesen und Überprüfen der übergebenen Parameter Aufrufen der eigentlichen Programmlogik im Model Weitergabe des Ergebnisses an das passende View 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Model Beispiel package sep; public class Calculator { protected int x; public void setX(int x) { this.x = x; } public int getX() { return x; } protected int y; public void setY(int y) { this.y = y; } public int getY() { return y; } public void calculate() { result = x + y; } protected int result; public int getResult() { return result; } } 19.07.2002 SEP WS 2002/03 - Technische Einführung

public class ControllerServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); Calculator c = new Calculator(); c.setX(x); c.setY(y); c.calculate(); request.setAttribute("calculator", c); RequestDispatcher disp = request.getRequestDispatcher("/WEB-INF/jsp/view.jsp"); disp.forward(request, response); }

SEP WS 2002/03 - Technische Einführung View Beispiel <%@ page import="sep.*" %> <jsp:useBean id="calculator" scope="request" type="Calculator"/> <html> <head> <title>Calculator</title> </head> <body> Berechnung: <jsp:getProperty name="calculator" property="x"/> + <jsp:getProperty name="calculator" property="y"/> = <jsp:getProperty name="calculator" property="result"/> </body> </html> 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Verzeichnisstruktur sep-demo/ index.html Statische HTML-Seiten xy.gif Bilder calculator.jsp JSPs WEB-INF/ classes/ Kompilierte Servlets & Beans sep/ ControllerServlet.class lib/ Hilfbibliotheken xy.jar jsp/ View JSPs view.jsp web.xml Deployment Descriptor 19.07.2002 SEP WS 2002/03 - Technische Einführung

Deployment Descriptor (web.xml) <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> … </web-app> 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Servlet Mappings <servlet> <servlet-name>controller</servlet-name> <servlet-class>sep.ControllerServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/controller</url-pattern> </servlet-mapping> 19.07.2002 SEP WS 2002/03 - Technische Einführung

Weitere Möglichkeiten <init-param> (z. B. Datenbankparameter) <load-on-startup> (z. B. Hintergrund-Threads) <session-timeout> <welcome-file-list> <error-page>  Selber anschauen 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Datenbankzugriff Servlet Container WWW- Browser (Client) Controller Controller Model HTTP Request Daten- bank JDBC View View HTTP Response 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung JDBC Als bekannt vorausgesetzt (Praktische Informatik) Tutorials, Dokumentationen auf der SEP-Webseite Zu beachten: Connection Pool Aufbau von Datenbankverbindungen ist aufwendig Vorhalten von mehreren Verbindungen Wiederverwendung Shutdown-Thread Datenbankverbindungen müssen abgebaut werden (auch bei Systemabsturz) public void Runtime.addShutdownHook(Thread hook) 19.07.2002 SEP WS 2002/03 - Technische Einführung

SEP WS 2002/03 - Technische Einführung Einführungsaufgabe Ausgabe SEP-Webseite Nächste Woche Ankündigung per E-Mail Abgabe Termin: 30. September Per E-Mail beim jeweiligen Betreuer Build-System: Jakarta Ant Datenbankkennung (IBM DB2) Funktioniert nur innerhalb der Uni Jeder Teilnehmer bekommt eine Später bekommt jedes Team zwei weitere 19.07.2002 SEP WS 2002/03 - Technische Einführung