Einführung in Spring Web MVC Seminarvortrag © 2012 TravelTainment Sebastian Hesse sebastian.hesse@traveltainment.de Motivation Webanwendungen werden immer wichtiger Bsp. Onlineshops Programmiersprachen stellen nur Grundlagen für ClientServer-Kommunikation bereit Werkzeuge zwar sehr umfangreich Möglichkeiten nur bedingt alltagstauglich für Entwickler Frameworks berücksichtigen Best Practices Für Java: Spring-Framework weit verbreitet sebastian.hesse@traveltainment.de © 2012 TravelTainment Inhalt Servlets Grundlagen Implementierung Nachteile Spring Framework Konzept Konfiguration Vorteile Spring Web MVC Funktionsweise Vorteile zu Servlets Schlusswort sebastian.hesse@traveltainment.de © 2012 TravelTainment Spezifikation für abstrakte Anfrage-Antwort-Zyklen Referenzimplementierung für HTTP verfügbar Servlets sind einfach Java-Klassen mit Interface Servlet Bestandteil einer Java-Webanwendung Servlets werden beim Start geladen Existieren bis zum Herunterfahren der Webanwendung sebastian.hesse@traveltainment.de © 2012 TravelTainment Servlets - Grundlagen Servlets - Grundlagen Servlet-Container verwaltet mehrere Webanwendungen Webanwendung hat festgelegten Servlet- Kontext Servlets greifen auf gemeinsam zu Konfiguration der Webanwendung per XML sebastian.hesse@traveltainment.de © 2012 TravelTainment Servlet-Kontext Servlets - Implementierung HttpServlet als Elternklasse am weitesten verbreitet Servlet Spezifikation Http Servlet Referenzimplementierung Eigene Implementierung Example Servlet sebastian.hesse@traveltainment.de Example Servlet2 Generic Servlet Example Servlet3 © 2012 TravelTainment Servlets - Implementierung Auslesen von Parametern und des Sessionobjekts Bsp.: /page?action=read © 2012 TravelTainment sebastian.hesse@traveltainment.de Servlets - Nachteile Weiterleiten an andere Methoden umständlich Boilerplate-Code => Code-Wiederholungen, schlecht zu © 2012 TravelTainment warten sebastian.hesse@traveltainment.de Servlets - Nachteile 1. HTTP-Body auslesen 2. JSONKonvertierung 3. Exception- © 2012 TravelTainment Handling sebastian.hesse@traveltainment.de Antwortgenerierung sehr aufwendig Boilerplate-Code tritt wieder auf Spring Web MVC schafft Abhilfe sebastian.hesse@traveltainment.de © 2012 TravelTainment Servlets - Nachteile Inhalt Servlets Grundlagen Implementierung Nachteile Spring Framework Konzept Konfiguration Module Spring Web MVC Funktionsweise Vorteile zu Servlets Schlusswort sebastian.hesse@traveltainment.de © 2012 TravelTainment Spring - Konzept Java-Framework zur Unterstützung von Best Practices © 2012 TravelTainment und Applikationsentwicklung sebastian.hesse@traveltainment.de Spring - Konzept Spring Container enthält Spring-Beans Klassen greifen auf Spring-Beans zu Bean 1 Bean 2 Bean 3 Bean 4 sebastian.hesse@traveltainment.de Bean 1 Service -Klasse Bean 2 © 2012 TravelTainment Spring - Konfiguration Spring-Konfiguration in XML-Datei Konfiguration per Annotation Beans: @Component, @Controller, @Service, @Repository Attribute: @Resource, @Value, @Autowired © 2012 TravelTainment sebastian.hesse@traveltainment.de © 2012 TravelTainment Spring - Module sebastian.hesse@traveltainment.de Inhalt Servlets Grundlagen Implementierung Nachteile Spring Framework Konzept Konfiguration Module Spring Web MVC Funktionsweise Vorteile zu Servlets Schlusswort sebastian.hesse@traveltainment.de © 2012 TravelTainment Spring Web MVC - Funktionsweise Model-View-Controller (MVC) mit Frontcontroller MVC => Explizite Trennung der Schichten & Aufgaben © 2012 TravelTainment sebastian.hesse@traveltainment.de Spring Web MVC - Funktionsweise Controllerklassen und -methoden werden mit Pfad © 2012 TravelTainment konfiguriert => Request-Mapping sebastian.hesse@traveltainment.de Parameterverarbeitung per @RequestParam DispatcherServlet stellt der Methode diverse Übergabeparameter bereit Keine Bindung an HttpServlet nötig sebastian.hesse@traveltainment.de © 2012 TravelTainment Spring Web MVC – Vorteile zu Servlets Spring Web MVC – Vorteile zu Servlets Weitere Übergabeparameter: HttpServletRequest, HttpServletResponse HttpSession @PathVariable @RequestBody Model, ModelMap, @ModelAttribute … © 2012 TravelTainment sebastian.hesse@traveltainment.de Spring Web MVC – Vorteile zu Servlets © 2012 TravelTainment 1 Annotation + 1 Konfiguration sebastian.hesse@traveltainment.de Spring Web MVC – Vorteile zu Servlets Vorbereitete Daten werden meist in Templates (= mit Platzhaltern vorbereitete HTML-Seiten) eingebunden Weit verbreitet: JavaServerPages (JSP) © 2012 TravelTainment sebastian.hesse@traveltainment.de Spring Web MVC – Vorteile zu Servlets Model für Antwortgenerierung vorbereiten Map enthält Objekte für das Model Model wird an Template weitergegeben Controllermethode gibt nur den Namen des Templates an ViewResolver-Bean findet korrektes Template sebastian.hesse@traveltainment.de © 2012 TravelTainment Zugriff per Java Expression Language (Java EL) Bestmögliche Schichtentrennung sebastian.hesse@traveltainment.de © 2012 TravelTainment Spring Web MVC – Vorteile zu Servlets Spring Web MVC – Vorteile zu Servlets Alternative Formate zur Kommunikation: XML, JSON Notwendig: Konfiguration von HttpMessageConverterImplementierungen Beispiel JSON: Antwort mit @ResponseBody zu JSON umwandeln 1. Flexibilität 2. Einfachheit 3. Erweiterbarkeit sebastian.hesse@traveltainment.de © 2012 TravelTainment Inhalt Servlets Grundlagen Implementierung Nachteile Spring Framework Konzept Konfiguration Module Spring Web MVC Funktionsweise Vorteile zu Servlets Schlusswort sebastian.hesse@traveltainment.de © 2012 TravelTainment Schlusswort Servlets bieten gute Grundlage zum Verarbeiten von Client-Anfragen und –Antworten Standardmäßiges Reagieren auf Anfrage(parameter) resultiert in Boilerplate-Code Spring unterstützt Entwickler bei wiederkehrenden Abläufen und bietet zentrale Konfiguration von Klassen an Spring Web MVC baut darauf auf Verbirgt und automatisiert Vorgänge, wie bspw. Adressierung von Pfaden zu Klassen und Methoden Bietet Schnittstellen zur Erweiterung der Ein- und Ausgabe sebastian.hesse@traveltainment.de © 2012 TravelTainment Schlusswort Spring • Einfache Anfragen • Einfache Verarbeitung © 2012 TravelTainment Servlets • Große Webanwendungen • Anbindung an weitere Services sebastian.hesse@traveltainment.de Quellen 1. Sun Microsystems, Inc. Java Servlet Specification 3.0, 2009 2. Rod Johnson, Juergen Hoeller, Keith Donald. Spring Framework Reference Documentation, 2013 3. Aleksa Vukotic, James Goodwill. Apache Tomcat 7, Apress, 2007 4. Martin Fowler. 23.01.2004, Zugegriffen am 04.10.2013 5. Gary Mak, Josh Long, Daniel Rubio. Spring Recipes – A problem solution approach, Apress, 2010 sebastian.hesse@traveltainment.de © 2012 TravelTainment http://martinfowler.com/articles/injection.html, sebastian.hesse@traveltainment.de © 2012 TravelTainment Fragen? © 2012 TravelTainment Vielen Dank! sebastian.hesse@traveltainment.de