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

Transcript

30 slides
  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

More Decks by Gerrit Meier

Other Decks in Programming