Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering Praktikum SS 2003

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering Praktikum SS 2003"—  Präsentation transkript:

1 Software Engineering Praktikum SS 2003
Technische Einführung Christian Bachmaier

2 SEP SS 2003 - 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 SEP SS Technische Einführung

3 SEP SS 2003 - Technische Einführung
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 Fragen bitte gleich stellen SEP SS Technische Einführung

4 SEP SS 2003 - 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 SEP SS Technische Einführung

5 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 SEP SS Technische Einführung

6 HyperText Transfer Protocol (HTTP)
Kommunikationsprotokoll zwischen Browser und WWW-Server WWW- Browser (Client) WWW- Server HTTP Request HTTP Response HTTP Request HTTP Response SEP SS Technische Einführung

7 HTTP: Gesendete Informationen
HTTP Request URL Methode (GET/POST/…) Body (z. B: Parameter bei POST, Datei-Uploads…) Diverse andere Informationen (Header) HTTP Response Angeforderte Datei (HTML, GIF, …) SEP SS Technische Einführung

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

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

10 SEP SS 2003 - 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> SEP SS Technische Einführung

11 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> SEP SS Technische Einführung

12 SEP SS 2003 - 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> SEP SS Technische Einführung

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

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

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

16 SEP SS 2003 - 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>"); SEP SS Technische Einführung

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

18 SEP SS 2003 - 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> SEP SS Technische Einführung

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

20 SEP SS 2003 - Technische Einführung
JSP: Syntax <%! Funktions- und Variablen-Deklarationen %> <%! static final int PI = ; double u(double radius) { return 2*PI*r; } %> Umfang des Einheitskreises: <%= u(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 SEP SS Technische Einführung

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

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

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

24 SEP SS 2003 - 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 SEP SS Technische Einführung

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

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

27 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 SEP SS Technische Einführung

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

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 2003 - 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> SEP SS Technische Einführung

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

32 Deployment Descriptor (web.xml)
<?xml version="1.0" encoding="ISO "?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " <web-app> </web-app> SEP SS Technische Einführung

33 SEP SS 2003 - 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> SEP SS Technische Einführung

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

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

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

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

38 SEP SS 2003 - Technische Einführung
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) SEP SS Technische Einführung

39 SEP SS 2003 - Technische Einführung
Web-Seite auch in den Ferien abholen Web-Seite öfter kontrollieren SEP SS Technische Einführung


Herunterladen ppt "Software Engineering Praktikum SS 2003"

Ähnliche Präsentationen


Google-Anzeigen