Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MVC 1.0

MVC 1.0

Talk at JavaForumNord 2015 about the current state of Java EE 8's JSR 371

Gerrit Meier

October 06, 2015
Tweet

More Decks by Gerrit Meier

Other Decks in Programming

Transcript

  1. MVC 1.0 action-based und standardisiert in JEE 8 Bennet Schulz,

    @bennetelli IT Consultant [email protected] Gerrit Meier, @meistermeier Senior Consultant
 [email protected]
  2. 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/
  3. Komponenten- vs. Actionframeworks Komponentenframeworks • wenig HTML / JS /

    CSS Kenntnisse notwendig • Vorgefertigte Frontend- Komponenten • Lifecycle und Statechanges
  4. Komponenten- vs. Actionframeworks Actionframeworks • HTML / JS / CSS

    Kenntnisse notwendig • Komponenten „per Hand“ erstellen • Request / Response basierend (weitestgehend zustandsfrei)
  5. Model • halten eines Zustandes für die View • Beispiele

    • Daten des eingeloggten Nutzers • Artikel die ich kaufen möchte
  6. • Wenn kein eigenes Model notwendig • Wenn Model sich

    aus mehreren Objekten zusammensetzt javax.mvc.Models
  7. CDI Models • CDI Beans als Model • @Named •

    @RequestScoped • @Inject in Controller • EL Support in JSPs
  8. View • Präsentation und Interaktion • JSP build-in • ViewEngines:

    Velocity, Thymeleaf, Mustache, Handlebars, Asciidoc, …
  9. Controller • Reagiert auf den Request • Aktualisiert das Model

    • Triggert als Response die View Generierung
  10. • @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
  11. • 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
  12. Validation Exceptions • Lokale Validierung im Controller • javax.mvc.binding.BindingResult •

    Request Scope • isFailed() gibt Auskunft über Validierungsfehler
  13. • Cross-Site Scripting (XSS) • Cross-Site Request Forgery (CSRF) •

    Deckt A3 und A8 der OWASP Top10 2013 ab Security
  14. XSS • Escaping/Encoding um XSS Attacken zu verhindern • javax.mvc.MvcContext

    injizieren • bietet Zugriff auf Encoders für HTML und JS
  15. 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
  16. 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
  17. Events • basiert auf CDI Events • Observers zum Logging,

    Performance Monitoring, … • Controller: Before- & AfterControllerEvent • View: Before- & AfterProcessEvent
  18. 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