Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum SS 2003 Technische Einführung Christian Bachmaier.

Ähnliche Präsentationen


Präsentation zum Thema: "Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum SS 2003 Technische Einführung Christian Bachmaier."—  Präsentation transkript:

1 Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum SS 2003 Technische Einführung Christian Bachmaier

2 06.02.2003SEP SS 2003 - Technische Einführung2 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 http://www.infosun.fmi.uni-passau.de/br/lehrstuhl/Kurse/sep_ss03/

3 06.02.2003SEP SS 2003 - Technische Einführung3 Aufgabenstellung Inhaltlich: Termin- & Aufgabenverwaltung Überblick: Einführungsvortrag (letzten Dienstag) Weitere Details: Lastenheft (Anfang März) Genaue Ausgestaltung: Pflichtenheft Technisch: Web Application Dynamische Webseiten Bedienung mit dem Browser

4 06.02.2003SEP SS 2003 - Technische Einführung4 Ü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

5 06.02.2003SEP SS 2003 - Technische Einführung5 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

6 06.02.2003SEP SS 2003 - Technische Einführung6 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

7 06.02.2003SEP SS 2003 - Technische Einführung7 HTTP Request URL http://server:port/pfad/seite?param1=wert1¶m2=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

8 06.02.2003SEP SS 2003 - Technische Einführung8 WWW- Server HTTP Response Servlets WWW- Browser (Client) Servlet HTTP Request Servlet Container Datei- system HTTP Request HTTP Response

9 06.02.2003SEP SS 2003 - Technische Einführung9 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

10 06.02.2003SEP SS 2003 - Technische Einführung10 Calculator Berechnung starten GET Methode (Link)

11 06.02.2003SEP SS 2003 - Technische Einführung11 Calculator X: Y: GET Methode (Formular)

12 06.02.2003SEP SS 2003 - Technische Einführung12 Calculator X: Y: POST Methode

13 06.02.2003SEP SS 2003 - Technische Einführung13 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)

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); } }

15 06.02.2003SEP SS 2003 - Technische Einführung15 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");

16 06.02.2003SEP SS 2003 - Technische Einführung16 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("text ");

17 06.02.2003SEP SS 2003 - Technische Einführung17 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

18 06.02.2003SEP SS 2003 - Technische Einführung18 JSP: Beispiel <% int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); %> Calculator Berechnung: + =

19 06.02.2003SEP SS 2003 - Technische Einführung19 JSP: Syntax 2 + 3 = … diverse andere Direktiven, auf die ich jetzt nicht eingehe.

20 06.02.2003SEP SS 2003 - Technische Einführung20 JSP: Syntax <%! static final int PI = 3.1415926536; double u(double radius) { return 2*PI*r; } %> Umfang des Einheitskreises: <% int i = 10; for(int j=0; j Unterschied zu :Ergebnis wird nicht ausgegeben Strichpunkt Unterschied zu :Variablen sind lokal

21 06.02.2003SEP SS 2003 - Technische Einführung21 JSP: Vordefinierte Variablen ServletRequest request ServletResponse response HttpSession session JspWriter out … und einige weitere

22 06.02.2003SEP SS 2003 - Technische Einführung22 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

23 06.02.2003SEP SS 2003 - Technische Einführung23 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();

24 06.02.2003SEP SS 2003 - Technische Einführung24 JSPs und JavaBeans Bean deklarieren / erzeugen Property lesen Property schreiben Beispiel folgt

25 06.02.2003SEP SS 2003 - Technische Einführung25 WWW- Server HTTP Response JSPs und Servlets WWW- Browser (Client) HTTP Request Servlet Container Servlet / Java Server Page

26 06.02.2003SEP SS 2003 - Technische Einführung26 Model View Controller (MVC) WWW- Browser (Client) View Model HTTP Request HTTP Response Controller Servlet Container Controller (Servlet) View (JSP) Model (Java- Beans)

27 06.02.2003SEP SS 2003 - Technische Einführung27 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 die passende View

28 06.02.2003SEP SS 2003 - Technische Einführung28 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; } }

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); } }

30 06.02.2003SEP SS 2003 - Technische Einführung30 Calculator Berechnung: + = View Beispiel

31 06.02.2003SEP SS 2003 - Technische Einführung31 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

32 06.02.2003SEP SS 2003 - Technische Einführung32 Deployment Descriptor (web.xml) …

33 06.02.2003SEP SS 2003 - Technische Einführung33 Servlet Mappings controller sep.ControllerServlet controller /controller

34 06.02.2003SEP SS 2003 - Technische Einführung34 Weitere Möglichkeiten (z. B. Datenbankparameter) (z. B. Hintergrund-Threads) Selber anschauen

35 06.02.2003SEP SS 2003 - Technische Einführung35 Datenbankzugriff WWW- Browser (Client) View Model Daten- bank JDBC HTTP Request HTTP Response Controller Servlet Container Controller View

36 06.02.2003SEP SS 2003 - Technische Einführung36 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)

37 06.02.2003SEP SS 2003 - Technische Einführung37 Tools Java 2 SDK 1.4.1_01 Tomcat 4.1.18 Ant 1.5.1 JDBC 2.0 HTML 4.01 oder XHTML 1.0 CSS CVS LaTeX (empfohlen) Junit JavaMail Together/Borland Control Center

38 06.02.2003SEP SS 2003 - Technische Einführung38 Einführungsaufgabe Ausgabe SEP-Webseite Nächste Woche Abgabe Termin: 31. März 12:00 Uhr Per E-Mail beim jeweiligen Betreuer Lauffähiges war-Archiv incl. Quellcode Build-System: Jakarta Ant Datenbankkennung (IBM DB2) Funktioniert nur innerhalb der Uni Jeder Teilnehmer bekommt eine Später bekommt jedes Team zwei weitere Wer Abschreibt fliegt sofort raus (auch beim Prototypen)

39 06.02.2003SEP SS 2003 - Technische Einführung39 Web-Seite E-Mail auch in den Ferien abholen Web-Seite öfter kontrollieren http://www.infosun.fmi.uni-passau.de/br/lehrstuhl/Kurse/sep_ss03/


Herunterladen ppt "Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum SS 2003 Technische Einführung Christian Bachmaier."

Ähnliche Präsentationen


Google-Anzeigen