Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03...

of 37/37
Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03 Technische Einführung Michael Forster
  • date post

    05-Apr-2015
  • Category

    Documents

  • view

    110
  • download

    4

Embed Size (px)

Transcript of Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03...

  • Folie 1
  • Lehrstuhl fr Theoretische Informatik Universitt Passau Software Engineering Praktikum WS 2002/03 Technische Einfhrung Michael Forster
  • Folie 2
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung2 Einleitung Idee des Software Engineering Praktikums Selbstndiges Lsen einer greren Aufgabe im Team Selbstndiges Einarbeiten in neue Tools & Technologien Tutorials und Dokumentationen lesen Spielen mit den Tools Einfhrungsaufgabe lsen Ziel dieses Vortrags berblick ber verwendete Technologien Einstieg erleichtern Kein ausfhrlicher Kurs Weitere Hilfe: SEP-Webseite (demnchst)
  • Folie 3
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung3 Aufgabenstellung Inhaltlich: Termin- & Aufgabenverwaltung berblick: Einfhrungsvortrag (Letzte Woche) Weitere Details: Lastenheft (Anfang August) Genaue Ausgestaltung: Pflichtenheft Technisch: Web Application Dynamische Webseiten Bedienung mit dem Browser
  • Folie 4
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung4 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
  • Folie 5 Eine Beispielseite berschrift Ein ziemlich sinnfreier Text, der nur demonstrieren soll, was HTML ist Als bekannt vorausgesetzt Diverse Tutorials und Dokumentationen auf der SEP-Webseite">
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung5 HyperText Markup Language (HTML) Sprache, in der Webseiten geschrieben sind: Eine Beispielseite berschrift Ein ziemlich sinnfreier Text, der nur demonstrieren soll, was HTML ist Als bekannt vorausgesetzt Diverse Tutorials und Dokumentationen auf der SEP-Webseite
  • Folie 6
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung6 HyperText Transfer Protocol (HTTP) WWW- Browser (Client) HTTP Request HTTP Response WWW- Server http://www.fmi.uni-passau.de/ HTTP Request HTTP Response Kommunikationsprotokoll zwischen Browser und WWW-Server
  • Folie 7
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung7 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, ) Diverse andere Informationen (Header) HTTP: Gesendete Informationen
  • Folie 8
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung8 WWW- Server HTTP Response Servlets WWW- Browser (Client) Servlet HTTP Request Servlet Container Datei- system HTTP Request HTTP Response
  • Folie 9
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung9 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
  • Folie 10
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung10 Calculator Berechnung starten GET Methode (Link)
  • Folie 11
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung11 Calculator X: Y: GET Methode (Formular)
  • Folie 12
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung12 Calculator X: Y: POST Methode
  • Folie 13
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung13 Vergleich GET / POST GET Methode Parameter sind Bestandteil des URLs Bei Bookmarks werden Parameter mitgespeichert Ungeeignet fr Passwrter Links benutzen automatisch GET Methode POST Methode Parameter werden im Body des Requests bertragen Notwendig bei Datei-Upload (Werdet ihr wohl nicht brauchen)
  • Folie 14
  • 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(" MyCalc "); out.println(" "); out.println("Berechnung: "+x+" + "+y+" = " + (x+y)); out.println(" "); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
  • Folie 15
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung15 Sessionverwaltung Problem: Viele Benutzer kommunizieren gleichzeitig mit dem Server Welche Requests gehren zu welchem Benutzer? Glcklicherweise: 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");
  • Folie 16 text ");">
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung16 Sessionverwaltung Verschiedene Implemtierungen Cookies: Auf dem Client wird eine eindeutige Session ID abgelegt URL Rewriting: Die Session ID wird in alle URLs kodiert Cookies knnen deaktiviert sein Servlet Engine whlt automatisch richtige Implementierung Zu beachten: Sessionverwaltung muss auch ohne Cookies funktionieren Alle internen URLs mssen kodiert werden: out.println("
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung24 JSPs und JavaBeans Bean deklarieren / erzeugen Property lesen Property schreiben Beispiel folgt
  • Folie 25
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung25 WWW- Server HTTP Response JSPs und Servlets WWW- Browser (Client) HTTP Request Servlet Container Servlet / Java Server Page
  • Folie 26
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung26 Model View Controller (MVC) WWW- Browser (Client) View Model HTTP Request HTTP Response Controller Servlet Container Controller (Servlet) View (JSP) Model (Java- Beans)
  • Folie 27
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung27 Model View Controller (MVC) Model (Java Beans) Enthlt die eigentliche Programmlogik Unabhngig von der Webschnittstelle Kein Import von javax.servlet.* View (JSPs) Anzeige des Ergebnisses Ziel: Mglichst wenig Java Code Controller (Servlet) Einlesen und berprfen der bergebenen Parameter Aufrufen der eigentlichen Programmlogik im Model Weitergabe des Ergebnisses an das passende View
  • Folie 28
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung28 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; } }
  • Folie 29
  • 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); } }
  • Folie 30 Calculator Berechnung: + = View Be"> Calculator Berechnung: + = View Beispiel"> Calculator Berechnung: + = View Be" title="19.07.2002SEP WS 2002/03 - Technische Einfhrung30 Calculator Berechnung: + = View Be">
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung30 Calculator Berechnung: + = View Beispiel
  • Folie 31
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung31 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
  • Folie 32 ">
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung32 Deployment Descriptor (web.xml)
  • Folie 33
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung33 Servlet Mappings controller sep.ControllerServlet controller /controller
  • Folie 34
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung34 Weitere Mglichkeiten (z. B. Datenbankparameter) (z. B. Hintergrund-Threads) Selber anschauen
  • Folie 35
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung35 Datenbankzugriff WWW- Browser (Client) View Model Daten- bank JDBC HTTP Request HTTP Response Controller Servlet Container Controller View
  • Folie 36
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung36 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 mssen abgebaut werden (auch bei Systemabsturz) public void Runtime.addShutdownHook(Thread hook)
  • Folie 37
  • 19.07.2002SEP WS 2002/03 - Technische Einfhrung37 Einfhrungsaufgabe Ausgabe SEP-Webseite Nchste Woche Ankndigung 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 Spter bekommt jedes Team zwei weitere