Dynamische WEB-Applikationen Java Servlets und JSP
Statischer Inhalt WEB-Server GET request HTML response Rudolf Radlbauer
Dynamischer Inhalt von Servlet generiert WEB-Server web.xml URL request Servlet-mapping BL / PL response Servlet Rudolf Radlbauer
Model View Controller (MVC) WEB-Server web.xml URL request Servlet-mapping BL / PL Servlet response Tag-Handler JSP Rudolf Radlbauer
Filter WEB-Server web.xml URL Filter Mapping request response Filterkette Rudolf Radlbauer
Listeners ServletContextListener ServletContextAttributeListener HttpSessionListener HttpSessionAttributeListener HttpSessionBindingListener HttpSessionActivationListener ServletRequestListener ServletRequestAttributeListener Rudolf Radlbauer
Aufbau einer URL http://www.sample-server.com:8080/app1/page1 http Protokoll www.sample-server.com Server 8080 Port app1 Context (Applikation) page1 Seite/Ziel Rudolf Radlbauer
Request Routing www.sample-server.com 8080 WEB-Server app1 WEB-Applikation page1 Context- Eintrag Servlet Servlet- mapping Filter server.xml Filter- mapping web.xml Rudolf Radlbauer
Servlet Mapping <servlet> <servlet-name>Test Servlet</servlet-name> <servlet-class>web.Servlet1</servlet-class> </servlet> <servlet-mapping> <url-pattern>*.test</url-pattern> <url-pattern>/servlet1</url-pattern> </servlet-mapping> Rudolf Radlbauer
Filter Mapping <filter> <filter-name>Test Filter</filter-name> <filter-class>web.Filter1</filter-class> </filter> <filter-mapping> <url-pattern>/*</url-pattern> </filter-mapping> Rudolf Radlbauer
Registrierung eines Listeners <listener-class> web.Listener1 </listener-class> </listener> Rudolf Radlbauer
Lebenszyklus der Komponenten Servlet-Engine (ist ein Java-Programm) main(…) server.xml liest confi-Dateien web.xml instanziiert Komponenten Filter Listener init(…) ruft Initialisierungs- Methoden contextInitialized(…) … Rudolf Radlbauer
Lebenszyklus der Komponenten … Servlet-Engine (ist ein Java-Programm) mehrere Threads warten auf Requests instanziieren bei Bedarf Servlets rufen Initialisierungs-Methoden Servlet init(…) rufen HTTP-Methoden doPost(…) / doGet(…) Rudolf Radlbauer
Lebenszyklus der Komponenten Servlet-Engine (ist ein Java-Programm) shutdown- stoppt Threads Request destroy() Filter ruft Aufräume- Methoden destroy() Servlet contextDestroyed(…) Listener Rudolf Radlbauer
Datenaustausch Voraussetzungen Komponenten werden nur 1x instanziiert Requests werden parallel verarbeitet Komponenten kennen einander nicht Realisierung Datenaustausch über Aufrufparameter Attribute an verschiedenen Kontext-Objekten mit klar definiertem Geltungsbereich Rudolf Radlbauer
Kontext-Objekte Servlet-Kontext Session-Kontext Request-Kontext 1x für die WEB-Applikation Session-Kontext 1x pro Client-Session Request-Kontext 1x pro HTTP-Request Page-Kontext 1x pro Java Server Page (JSP) an jedes Kontext-Objekt können andere beliebige Objekte als Attribute angehängt werden. Alle Komponenten haben Zugriff auf die in ihrem Bereich gültigen Kontext-Objekte. Rudolf Radlbauer
Kontext-Objekte (Beispiel) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { .... User u = (User)request.getSession().getAttribute("user"); request.setAttribute("name", u.getName()); } Rudolf Radlbauer
Kontrollsteuerung (Weiterleiten des Requests) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try .... request.getRequestDispatcher("antwort.jsp") .forward(request, response); } catch(Exception e) request.getRequestDispatcher("fehler.html") } Rudolf Radlbauer