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 WS 2002/03 Technische Einführung Michael Forster.

Ähnliche Präsentationen


Präsentation zum Thema: "Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03 Technische Einführung Michael Forster."—  Präsentation transkript:

1 Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03 Technische Einführung Michael Forster

2 SEP WS 2002/03 - 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 (demnächst)

3 SEP WS 2002/03 - Technische Einführung3 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

4 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung6 HyperText Transfer Protocol (HTTP) WWW- Browser (Client) HTTP Request HTTP Response WWW- Server HTTP Request HTTP Response Kommunikationsprotokoll zwischen Browser und WWW-Server

7 SEP WS 2002/03 - Technische Einführung7 HTTP Request URL 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 SEP WS 2002/03 - Technische Einführung8 WWW- Server HTTP Response Servlets WWW- Browser (Client) Servlet HTTP Request Servlet Container Datei- system HTTP Request HTTP Response

9 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung10 Calculator Berechnung starten GET Methode (Link)

11 SEP WS 2002/03 - Technische Einführung11 Calculator X: Y: GET Methode (Formular)

12 SEP WS 2002/03 - Technische Einführung12 Calculator X: Y: POST Methode

13 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung18 JSP: Beispiel <% int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); %> Calculator Berechnung: + =

19 SEP WS 2002/03 - Technische Einführung19 JSP: Syntax = … diverse andere Direktiven, auf die ich jetzt nicht eingehe.

20 SEP WS 2002/03 - Technische Einführung20 JSP: Syntax <%! static final int PI = ; 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 SEP WS 2002/03 - Technische Einführung21 JSP: Vordefinierte Variablen ServletRequest request ServletResponse response HttpSession session JspWriter out … und einige weitere

22 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung24 JSPs und JavaBeans Bean deklarieren / erzeugen Property lesen Property schreiben Beispiel folgt

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

26 SEP WS 2002/03 - 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 SEP WS 2002/03 - 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 das passende View

28 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung30 Calculator Berechnung: + = View Beispiel

31 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung32 Deployment Descriptor (web.xml) …

33 SEP WS 2002/03 - Technische Einführung33 Servlet Mappings controller sep.ControllerServlet controller /controller

34 SEP WS 2002/03 - Technische Einführung34 Weitere Möglichkeiten (z. B. Datenbankparameter) (z. B. Hintergrund-Threads) Selber anschauen

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

36 SEP WS 2002/03 - 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 SEP WS 2002/03 - Technische Einführung37 Einführungsaufgabe Ausgabe SEP-Webseite Nächste Woche Ankündigung per Abgabe Termin: 30. September Per 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


Herunterladen ppt "Lehrstuhl für Theoretische Informatik Universität Passau Software Engineering Praktikum WS 2002/03 Technische Einführung Michael Forster."

Ähnliche Präsentationen


Google-Anzeigen