Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

ITec 1 web client (browser) web server _____.html request URL ( get, post ) response HTML _____.jsp _____.class application DBMS JDBC RMI Sockets CORBA.

Ähnliche Präsentationen


Präsentation zum Thema: "ITec 1 web client (browser) web server _____.html request URL ( get, post ) response HTML _____.jsp _____.class application DBMS JDBC RMI Sockets CORBA."—  Präsentation transkript:

1 iTec 1 web client (browser) web server _____.html request URL ( get, post ) response HTML _____.jsp _____.class application DBMS JDBC RMI Sockets CORBA EJB Ausgangslage (HTML-Seiten, Applets) Einführung Web-basierte Anwendungsarchitekturen HTTP

2 iTec 2 Einführung Web-basierte Anwendungsarchitekturen verteilte Präsentation entfernte Präsentation verteilte Anwendung fat client

3 iTec 3 Präsentation Einführung Web-basierte Anwendungsarchitekturen Browser Presentation Layer Web-Server Domain Logic Layer Application Server DB Server DB Web-Client (z.B. HTTP) (RPC, CORBA) (z.B. JDBC)... Web-basierte Anwendungen haben eine verteilte Präsentationsschicht die Richtung der Kontrolle geht nur in eine Richtung

4 iTec 4 Model was darstellen? Controller (Maus, Tastatur,..) View (Window) Model-unabhängige Funktionalität Änderung! Applikation MVC - Model View Controller Architektur: in GUI-Anwendungen GUI Schicht Domänen Schicht dies ist KEIN Controller für UseCases, sondern ein GUI Event-Handling Ziel: mache das Modell unabhängig vom GUI Einführung Web-basierte Anwendungsarchitekturen

5 iTec 5 ProcessSale Handler... endSale() enterItem(...) makeNewSale() makeCashPayment(...) GUI-basierte Präsentation mit Controller-Klassen (UseCase Controller) actionPerformed( actionEvent ) :ProcessSale Handler : Cashier :SaleJFrame presses button 1: enterItem(itemID, qty) End sale actionPerformed( actionEvent ) :ProcessSale Handler :SaleJFrame 1: endSale() EnterPayment actionPerformed( actionEvent ) :ProcessSale Handler :SaleJFrame 1: MakeCashPayment (amount)... UseCase Controller Einführung Web-basierte Anwendungsarchitekturen

6 iTec 6 Einführung Web-basierte Anwendungsarchitekturen actionPerformed( ActionEvent ) :Register : Cashier :SaleJFrame drückt Knopf 1: enterItem(itemID, qty) 1. textValueChanged( TextEvent ) :SaleJFrame valueChanged( ListSelectionEvent) :SaleJFrame... item-Id 925AE productSpec Erdnuss Riesenpack price quantity addItem endOfSale category Getränke Lebensmittel Drogeriewaren Haushaltswaren Lebensmittel gibt Text ein wählt aus Liste 1.1: spec := find(itemId, category) spec:Product Specification GUI- Schicht Domänen- Schicht implementieren EventListeners diese Art von Interaktion ist in HTTP nicht möglich 1.2 product Spec

7 iTec 7 web browser web server _____.html request URL ( get, post ) response HTML (HTML-Seiten, Applets) _____.jsp _____.class nur ein Servlet für alle Clients Ausgangslage: eigentlich traurig HTTP Einführung Web-basierte Anwendungsarchitekturen nur eine Operation nur einen Datentyp (String) ohne jede innere Struktur (flach!) nur einen Datentyp (String) ohne jede innere Struktur (flach!) nur formatierter Hypertext nur formatierter Hypertext Objektorientierung ade?

8 iTec 8 Einführung Web-basierte Anwendungsarchitekturen Web-basierte Anwendungen müssen unbedingt eine gut strukturierte Server-seitige Architektur erhalten. Die Praxis sieht leider anders aus. Daran ist auch die Technologie schuld.

9 iTec 9 der Seiten-zentrierte Ansatz Web-App = Sammlung von JSPs die 3 Architekturtypen Web-basierte Anwendungsarchitekturen database request response JSP +einfach zu Beginn (wenn es nicht weiterwächst) -Code ist eine Mischung aus Präsentation, Domänenlogik, Datenzugriffstechniken: ein Wartungsalptraum -nicht skalierbar -vieles doppelt und dreifach Eingaben prüfen JSP Ausgaben auswählen

10 iTec 10 database request response JSP +Auslagerung einiger Teile der Anwendungslogik in Beans - zuviel Steuerlogik in den JSPs bean Web-App = Sammlung von JSPs + Beans der Seiten-mit-Beans Ansatz Eingaben prüfen bean DB-Mapping die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

11 iTec 11 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Beispiel: Lotterie (aus Bergsten2001)

12 iTec 12 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

13 iTec Name: ..... userinfoinput.jsp die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

14 iTec 14 userinfovalidate.jsp: reine Kontrolllogik-JSP (kein HTML) userinfovalidate.jsp: reine Kontrolllogik-JSP (kein HTML) die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

15 iTec 15 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

16 iTec 16 User Info Validated Thanks for entering valid information! userinfovalid.jsp: reines HTML – trotzdem gleich als JSP anlegen für zukünftige Erweiterungen userinfovalid.jsp: reines HTML – trotzdem gleich als JSP anlegen für zukünftige Erweiterungen die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

17 iTec 17 session scope die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

18 iTec 18 CatalogBean ProductBeans CartBeans application scope session scope die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

19 iTec 19 modelview controller database Client Web ServerData request State change event Forward event data response servlet JSP bean der Servlet-Controller Ansatz + MVC Trennung der Belange: JSP als reiner View + skalierbar - etwas aufwendig bei sehr kleinen Anwendungen die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

20 iTec 20 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Servlets: damit könnte man eigentlich alles machen

21 iTec 21 modelview controller request State change event Forward event data response servlet JSP bean Event dispatcher Security gateway Model preparation Error handling Response triggering logging Aufgaben des Controller Servlets die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

22 iTec 22 modelview controller request State change event Forward event data response servlet JSP bean business logic data state read/write utilities Aufgaben des Model Beans database validation, security die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

23 iTec 23 presentation logic read-only modelview controller request State change event Forward event data response servlet JSP bean database validation, security Aufgaben des View JSPs die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

24 iTec 24 bean model2 page2 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen page1 controller request Forward events servlet JSP

post(..) action (action == a1) doA1(..) JSP (action == a2) doA2(..) (action == a3) doA3(..) page3 JSP response auf process im web.xml abgebildet +doPost(..) -doA1(..) -doA2(..) -doA3(..) model1 bean url rewriting Alternative: hidden fields url rewriting Alternative: hidden fields

25 iTec 25 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen der Servlet Life Cycle - init(): einmalig aufgerufen bei Instanzierung des Servlets instanziiert entweder bei erstem Request auf Servlet, oder beim Starten der Servlet Engine - service(..): (doPost, doGet) bei jedem Request des Servlets - destroy(..): einmalig vor dem Löschen aus der VM wann das geschieht, entscheidet Servlet Engine Merke: es gibt zu jedem Servlet nur immer höchstens ein Objekt!

26 iTec 26 in init(): –in die Methode direkt hineinimplementiert: private Attribute. Servlet-Scope: werden geteilt von allen Requests Attribute mit Applikations-Scope: ServletContext.set/getAttribute(..) für jede Applikation gibt es genau ein ServletContext Objekt. Also: alle Servlets und JSPs einer Applikation teilen dieses Objekt –über web.xml Parameter: werden im - Tag gesetzt servlet-spezifisch: über ein ServletConfig Objekt wird aus den Parametereinträgen ( -Tag innerhalb -Tag) in web.xml erzeugt und in init() mit getInitParameter(..) gelesen applikationsspezifisch: über ServletContext Objekt, aus ( -Tag innerhalb -Tag) in web.xml. oder aus ServletContext.setAttribute(..) in anderen Servlets oder JSPs erzeugt die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Servlet Initialisierung

27 iTec 27 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen pbController com.ora.jsp.servlets.PBControllerServlet1 maxNews 100 web.xml

28 iTec 28 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen login.jsp Anwendung Project Billboard (Bergsten2001)

29 iTec 29 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen main.jsp

30 iTec 30 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen entermsg.jsp

31 iTec 31 Anwendung Project Billboard (Bergsten2001) die 3 Architekturtypen Web-basierte Anwendungsarchitekturen action=storeMsg action=authenticate action=updateprofile oder =showPage&page=entermsg.jsp action= showPage &page=...

32 iTec 32 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen public void init() throws ServletException { DataSource ds = null; try { ds = new DataSourceWrapper("sun.jdbc.odbc.JdbcOdbcDriver", "jdbc:odbc:example", null, null); } catch (Exception e) {} // Ignore all in this example EmployeeRegistryBean empReg = new EmployeeRegistryBean(); empReg.setDataSource(ds); getServletContext().setAttribute("empReg", empReg); NewsBean news = new NewsBean(); getServletContext().setAttribute("news", news); } die init-Methode des Controller Servlets Zugriff auf news-Bean von anderen Servlets: NewsBeans newsBeans = (NewsBeans) getServletContext.getAttribute(news); Zugriff auf news-Bean von JSPs dieser Anwendung:

33 iTec 33 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String action = request.getParameter("action"); // Check if the user is authenticated if (!isAuthenticated(request) && !("authenticate".equals(action) || "logout".equals(action))) { doForwardToLogin(request, response); } else { if ("authenticate".equals(action)) { doAuthenticate(request, response); } else if ("logout".equals(action)) { doLogout(request, response); } else if ("storeMsg".equals(action)) { doStoreMsg(request, response); } else if ("updateProfile".equals(action)) { doUpdateProfile(request, response); } else if ("showPage".equals(action)) { doShowPage(request, response); } else { response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); } } } Controller Servlet: zentralisierte Request Bearbeitung Besonderheit: jeder Request dieser Anwendung bedarf einer Authentifizierung

34 iTec 34 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doPost(request, response); } private boolean isAuthenticated(HttpServletRequest request) { boolean isAuthenticated = false; HttpSession session = request.getSession(); if (session.getAttribute("validUser") != null) { isAuthenticated = true; } return isAuthenticated; }

35 iTec 35 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen private void doForwardToLogin(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String origURL = HttpUtils.getRequestURL(request).toString(); String queryString = request.getQueryString(); if (queryString != null) { origURL += "?" + queryString; } String loginURL = "login.jsp" + "?origURL=" + URLEncoder.encode(origURL) + "&errorMsg=" + URLEncoder.encode("Please log in first"); forward(loginURL, request, response); } der Parameter origURL dient dazu, die ursprüngliche URL des Requests zu speichern – was man natürlich auch in dem Session Objekt hätte tun können Besonderheit: der ursprüngliche, nicht authentifizierte Request wird gespeichert, damit der Benutzer ihn nicht nochmals eingeben muss Besonderheit: der ursprüngliche, nicht authentifizierte Request wird gespeichert, damit der Benutzer ihn nicht nochmals eingeben muss

36 iTec 36 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Request xyz?abc=123 Servlet [nicht authentifiziert] doForwardToLogin login.jsp forward origUrl=xyz?abc=123 origUrl (hidden) action=authenticate hidden:origURL name, password doAuthenticate userNameCookie, passwordCookie origUrl redirect Request xyz?abc=123 [authentifiziert] doXYZ … Authentifizieren eines Requests

37 iTec 37 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Please enter your User Name and Password, and click Enter. Name: Password: Remember my name and password: > (This feature requires cookies to be enabled in your browser) login.jsp (Ausschnitt) login.jsp (Ausschnitt)

38 iTec 38 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen private void doAuthenticate(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String userName = request.getParameter("userName"); if (userName == null) { throw new ServletException("Missing User Name"); } String password = request.getParameter("password"); if (password == null) { throw new ServletException("Missing Password"); } try { EmployeeRegistryBean empReg = (EmployeeRegistryBean) getServletContext().getAttribute("empReg"); boolean isRegistered = empReg.authenticate(userName, password); if (isRegistered) { EmployeeBean emp = empReg.getEmployee(userName); HttpSession session = request.getSession(); session.setAttribute("validUser", emp);...

39 iTec Cookie userNameCookie = new Cookie("userName", userName); Cookie passwordCookie = new Cookie("password", password); int maxAge = MAXUSERCOOKIEAGE; if (request.getParameter("remember") == null) { maxAge = 0; } userNameCookie.setMaxAge(maxAge); passwordCookie.setMaxAge(maxAge); response.addCookie(userNameCookie); response.addCookie(passwordCookie); // Redirect to the originally requested URL or main String next = request.getParameter("origURL"); if (next == null || next.length() == 0) { next = getShowPageURL(request) + "main.jsp"; } response.sendRedirect(next); } else { String loginURL = "login.jsp" + "?errorMsg=" + URLEncoder.encode("Invalid User Name or Password"); response.sendRedirect(loginURL); } die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Unterschied zu forward : -Umleitung geschieht Client-seitig -Aktivierung wieder über Servlet Unterschied zu forward : -Umleitung geschieht Client-seitig -Aktivierung wieder über Servlet

40 iTec 40 die einzelnen Schritte eines UseCases in einer Web-Architektur sind voneinander entkoppelt: es gibt keine zentrale Steuerinstanz eines UseCases damit kann der Client (Browser) jeden Schritt potentiell selber aktivieren, wann er will (sofern er den Request schon einmal ausgeführt hat, ihn also kennt) eine strenge Kontrolle über den UseCase Ablauf bedarf einer besonderen Steuerlogik, die anders ist als eine GUI-Steuerlogik die 3 Architekturtypen Web-basierte Anwendungsarchitekturen warum reicht es nicht, am Anfang zu authentifizieren? wichtige Besonderheit von Web-Anwendungen:

41 iTec 41 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Project Billboard Welcome...

42 iTec 42 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen... Post a new message <% NewsItemBean[] newsItems = news.getNewsItems(validUser.getProjects()); pageContext.setAttribute("newsItems", newsItems); %> Project:... main.jsp (Ausschnitt) main.jsp (Ausschnitt) keine Informationsver- arbeitung auf Server, reiner Seitenwechsel

43 iTec 43 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen private void doShowPage(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String url = request.getParameter("page"); if (url == null) { throw new ServletException("Missing page info"); } forward(url, request, response); } private String getShowPageURL(HttpServletRequest request) { return request.getContextPath() + request.getServletPath() + "?action=showPage&page="; } private void forward(String url, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { RequestDispatcher rd = request.getRequestDispatcher(url); rd.forward(request, response); } Im Unterschied zu den anderen Aktionen soll hier nur auf eine andere Seite verzweigt werden. Anstatt von einer Seite direkt auf eine andere Seite zu verweisen, wird hier immer ein Durchlauf durch das Servlet erzwungen (Authentifizierung). Im Unterschied zu den anderen Aktionen soll hier nur auf eine andere Seite verzweigt werden. Anstatt von einer Seite direkt auf eine andere Seite zu verweisen, wird hier immer ein Durchlauf durch das Servlet erzwungen (Authentifizierung). gibt eine absolute URL zurück, um den nächsten Request wieder über das gleiche Servlet auf die nächste Seite zu lenken. Ist besser als diese URL direkt hineinzukodieren! gibt eine absolute URL zurück, um den nächsten Request wieder über das gleiche Servlet auf die nächste Seite zu lenken. Ist besser als diese URL direkt hineinzukodieren!

44 iTec 44 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Request action=showPage&page=xyz.jsp Servlet [authentifiziert] doShowPage xyz.jsp forward [page existiert] anstatt Request xyz.jsp xyz.jsp

45 iTec 45 Einführung Web-basierte Anwendungsarchitekturen EnteringItems enterItem WaitingForPayment makeNewSale makeCashPayment endSale AuthorizingPayment makeCheckPayment makeCreditPayment authorized Beispiel: ProcessSale wie sind in diesem Beispiel die Zustandsübergänge der Session kodiert? wie macht man dies bei komplexeren Sessions?

46 iTec 46 1.beginne mit einem Satz verlinkter, statischer HTML-Seiten als Frontend-Prototyp. Es gibt hauptsächlich zwei Hyperlink-Typen: a)Dateneingabe (HTTP Parameter) verarbeiten, Resultat anzeigen i.data entry (neue Entität), Resultat über Erfolg, evtl. Daten-Echo ii.Resultat sind Daten, die mit Dateneingabe identifiziert werden b)verzweigen zu anderem Menu (nächster Arbeitsschritt) manchmal können a) und b) in einem Link zusammenfallen 2.gehe zu dynamischen Seiten (JSP) über, und bilde die Links auf Zustandsübergangslogik eines oder mehrerer Servlet-Controller ab, mit forwards auf die JSPs 3.definiere das Domänenmodell (Beans) 4.verbinde Servlets und JSPs mit dem Domänenmodell zwei Ansätze zur Spezifikation einer WEB-Anwendung A) Frontend-basiert die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

47 iTec 47 1.schreibe wie im Unified Process mit UML UseCases mit Arbeits- schritten, und definiere für jeden UseCase ein Controller Servlet 2.schreibe für jeden Arbeitsschritt des UseCases eine Operation des Controllers 3.definiere in einem State-Diagramm Zustandsübergänge eines Controllers (UseCase), um Arbeitsschrittsequenzen einzuschränken 4.definiere für jeden Arbeitsschritt eines UseCases das Interaktionsereignis auf einer Web-Seite (samt Eingabedaten) 5.organisiere diese Ereignisse in eine Reihe von Web-Seiten (JSPs), unter Berücksichtigung von 3 6.definiere das Domänenmodell (Beans) 7.verbinde Servlets und JSPs mit dem Domänenmodell die 3 Architekturtypen Web-basierte Anwendungsarchitekturen zwei Ansätze zur Spezifikation einer WEB-Anwendung B) UseCase-basiert

48 iTec 48 in beiden Ansätzen: gehe nach den Normalfällen das Ganze nochmal durch für die Spezialfälle/Fehlerfälle am besten: immer beide Ansätze durchgehen die 3 Architekturtypen Web-basierte Anwendungsarchitekturen zwei Ansätze zur Spezifikation einer WEB-Anwendung A) Frontend-basiert B) UseCase-basiert

49 iTec 49 Problem: Jedes Servlet ist ein Controller für einen UseCase. Dann aber sollte man innerhalb einer Session eventuell mehrere Servlets (Use Cases) laufen lassen können: parallel/verschachtelt Problem damit: Session Management für mehrere UseCases/Servlets – es gibt nur globalen Bereich pro Session, aber nicht pro Session-Servlet! Lösungen 1.verschachtelte/parallele UseCases nur über jeweils neue Sessions. 2.verschachtelte/parallele UseCases in einem Session-Objekt, in dem man per Hand Servlet-spezifische Zustände führt die 3 Architekturtypen Web-basierte Anwendungsarchitekturen zwei Ansätze zur Spezifikation einer WEB-Anwendung

50 iTec 50 Basisausnahme: ServletException wenn diese Exception nicht aufgefangen wird: unschöne Fehlermeldung im Browser deshalb: Exception im Servlet auffangen und verzweigen (mit forward) auf spezielle Fehler JSP wo auffangen? so spät (so weit oben) wie möglich: in der service -Methode des Servlets die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Erqweiterungen 1. Fehlerbehandlung

51 iTec 51 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen BaseServlet service(request,response) handle(exception, request,response) HttpServlet MyServlet handle(exception, request,response) doPost(request,response) doGet(request,response)... public final void service ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { try { super.service( request, response ); } catch( Throwable aThrowable ) { handle( aThrowable, request, response ); } } protected void handle (Throwable aThrowable, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {. RequestDispatcher dispatcher = getServletContext().getRequestDispatcher( "error.jsp" ); dispatcher.forward( request, response ); }

52 iTec 52 Idee: pro Aktion ein spezielles Aktionenobjekt definieren Abbildung des Aktionsnamens (Request Parameter) auf ein Objekt entweder dynamisch mittels Class.forName während des Request Services, oder in einer Hashtable während der Initialsierung des Servlets anlegen, am besten über Servlet Initialisierungsparameter die 3 Architekturtypen Web-basierte Anwendungsarchitekturen Erqweiterungen 2. das Servlet unabhängig von den spezifischen Aktionen machen

53 iTec 53 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen bean model2 page2 page1 controller request Forward events servlet JSP post(..) action [action == a1] A1 JSP [action == a2] A2 [action == a3] A3 page3 JSP response auf process im web.xml abgebildet +doPost(..) model1 bean url rewriting Alternative: hidden fields url rewriting Alternative: hidden fields process(req,res)

54 iTec 54 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen BaseServlet service(request,response) handle(exception, request,response) MyServlet handle(exception, request,response) doPost(request,response) doGet(request,response)...

55 iTec 55 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

56 iTec 56 Beans as x00-x000 sehr kurzlebig x0 kurzlebig x0 längerlebig von mehreren Anwendungen geteilt Problem: Skalierbarkeit Lösung: untersage private Verbindungen zwischen Clients und kostspieligen Ressourcen. Benutze statt dessen Ressourcen-Pools langlebig Anzahl Dauer Einführung Web-basierte Anwendungsarchitekturen

57 iTec 57 Beans as Dynamic content creation and delivery Input collection; validation? Screen flow State management? Support for multiple clients Business logic? Einführung Web-basierte Anwendungsarchitekturen

58 iTec 58 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

59 iTec 59 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

60 iTec 60 die 3 Architekturtypen Web-basierte Anwendungsarchitekturen

61 iTec 61 1.für jeden Go-Button (HTML buttons mit submit, links auf servlets) mit eigener Funktion: ein eigenes Servlet 2.ein einziges Servlet als Controller, das auf Supportklassen verzweigt, die die speziellen Funktionen ausführen (z.B. mit dem Command-Pattern)

62 iTec 62 BaseServlet HttpMethodServlet +doGet( req, res ) +doPost( req, res ) +handle( exception, req, res ) -processRequest( req, res ) -getHttpController( req, res ) { processRequest(req, res); } { HttpController controller = getHttpController( req, res ); controller.process(); } «interface» HttpController + forward(String aPage)


Herunterladen ppt "ITec 1 web client (browser) web server _____.html request URL ( get, post ) response HTML _____.jsp _____.class application DBMS JDBC RMI Sockets CORBA."

Ähnliche Präsentationen


Google-Anzeigen