Einführung in Spring Web MVC Seminarvortrag - RWTH

Werbung
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
Herunterladen
Random flashcards
Erstellen Lernkarten