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 SEP SS 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

3 SEP SS 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 SEP SS 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 SS 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 SS 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 SS 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 SS Technische Einführung8 WWW- Server HTTP Response Servlets WWW- Browser (Client) Servlet HTTP Request Servlet Container Datei- system HTTP Request HTTP Response

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

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

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

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

19 SEP SS Technische Einführung19 JSP: Syntax = … diverse andere Direktiven, auf die ich jetzt nicht eingehe.

20 SEP SS 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 SS Technische Einführung21 JSP: Vordefinierte Variablen ServletRequest request ServletResponse response HttpSession session JspWriter out … und einige weitere

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

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

26 SEP SS 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 SS 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 SEP SS 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 SS Technische Einführung30 Calculator Berechnung: + = View Beispiel

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

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

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

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

36 SEP SS 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 SS Technische Einführung37 Tools Java 2 SDK 1.4.1_01 Tomcat Ant JDBC 2.0 HTML 4.01 oder XHTML 1.0 CSS CVS LaTeX (empfohlen) Junit JavaMail Together/Borland Control Center

38 SEP SS Technische Einführung38 Einführungsaufgabe Ausgabe SEP-Webseite Nächste Woche Abgabe Termin: 31. März 12:00 Uhr Per 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 SEP SS Technische Einführung39 Web-Seite auch in den Ferien abholen Web-Seite öfter kontrollieren


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