MVC 1.0
action-based und standardisiert in JEE 8
Bennet Schulz, @bennetelli
IT Consultant
bennet.schulz@codecentric.de
Gerrit Meier, @meistermeier
Senior Consultant
gerrit.meier@t-systems.com
Slide 2
Slide 2 text
Agenda
I. Motivation
II. Komponenten- vs. Actionframeworks
III. MVC Features
IV. Demo
V. Ausblick
Slide 3
Slide 3 text
Ist MVC notwendig?
• weite Verbreitung
actionbasierter
Frameworks
• JEE bietet mit JSF
bisher nur ein
komponentenbasiertes
Framework an
• … ein actionbasierter
Standard fehlt
Bildquelle: http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/
Slide 4
Slide 4 text
Komponenten- vs.
Actionframeworks
Komponentenframeworks
• wenig HTML / JS / CSS Kenntnisse notwendig
• Vorgefertigte Frontend- Komponenten
• Lifecycle und Statechanges
Controller
• Reagiert auf den Request
• Aktualisiert das Model
• Triggert als Response die View Generierung
Slide 14
Slide 14 text
• @Controller
• Entweder an einer Klasse
• alle Methoden MVC-Controller Methoden
• Oder an (mehreren) Methoden
• hybride Klasse aus MVC-Controller Methoden und
klassischen JAX-RS Ressourcen möglich
Controller
• basiert auf JAX-RS
• Zum Konvertieren von Exceptions in Responses
• implements ExceptionMapper<***Exception>
• Überschreiben von toResponse() zum Behandeln der Violations
• Grobe/globale Art des Exception Handlings
Exception Handling
Slide 17
Slide 17 text
Validation Exceptions
• Lokale Validierung im Controller
• javax.mvc.binding.BindingResult
• Request Scope
• isFailed() gibt Auskunft über Validierungsfehler
Slide 18
Slide 18 text
Binding Exceptions
• javax.mvc.binding.BindingResult
• Fehler während Request Parameter -> Java type
mapping
Slide 19
Slide 19 text
• Cross-Site Scripting (XSS)
• Cross-Site Request Forgery (CSRF)
• Deckt A3 und A8 der OWASP Top10 2013 ab
Security
Slide 20
Slide 20 text
XSS
• Escaping/Encoding um XSS Attacken zu
verhindern
• javax.mvc.MvcContext injizieren
• bietet Zugriff auf Encoders für HTML und JS
Slide 21
Slide 21 text
CSRF
• Unterstützung für CSRF Token in Form fields und HTTP header.
• über application-level property kann CSRF aktiviert werden
• javax.mvc.security.CsrfProtection
• mit javax.mvc.security.Csrf.CsrfOptions können Werte
gesetzt werden:
• OFF, IMPLICIT, EXPLICIT
• Bei EXPLICIT muss explizit mit @CsrfValid annotiert
werden
Slide 22
Slide 22 text
DEMO
Slide 23
Slide 23 text
Ausblick
1.0.0-m02
1.0.0-m01 1.0.0-m03
29.09.15 31.03.2016 Q1-Q2/2017
Java EE 8
Slide 24
Slide 24 text
Danke!
Fragen?
Slide 25
Slide 25 text
Backup
Slide 26
Slide 26 text
Meilenstein II
Slide 27
Slide 27 text
Redirects
• Neue CDI Scope in JEE 8
• @RedirectScope
• Lebensdauer maximal zwei Requests
• RequestScope < RedirectScope < SessionScope
• Controller kann weiterleiten an
• eine spezifische URL
• eine weitere Controller Methode
• URL path prefix „redirect:“ um client redirect zu triggern
Meilenstein III
• Bisher nur wenig bekannt
• Support für Logging (vermutlich über Events)
• Forwarding von Requests zwischen Controllern
ohne Client Interaktionen (wie z.B. bei redirects)
• Verzicht auf @Named Annotation für View Engines