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

Todo lo que querías saber sobre MVC en Jakarta EE y te avergonzaba preguntar - ES-PeruJug

Todo lo que querías saber sobre MVC en Jakarta EE y te avergonzaba preguntar - ES-PeruJug

La nueva especificación JSR-371 MVC (Eclipse Krazo) está por llegar.

Esta especificación nos dará una forma alternativa de aplicar MVC al ecosistema Jakarta EE de manera basada en la acción.

En esta presentación, veremos los conceptos básicos de la especificación junto con una simple demostración con Apache TomEE.

Codigo:

https://github.com/soujava/mvc-cxf-tomee

Daniel Dias

June 13, 2020
Tweet

More Decks by Daniel Dias

Other Decks in Technology

Transcript

  1. Todo lo que querías saber sobre MVC en Jakarta EE

    y te avergonzaba preguntar Daniel Dias Jakarta EE Developer - SouJava daniel.dias@soujava.org.br - @danieldiasjava
  2. 2 / 32

  3. 3 / 32

  4. 4 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS.
  5. 5 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes.
  6. 6 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • integración con CDI y Bean Validation
  7. 7 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets.
  8. 8 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • Integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets. • Contiene soporte RestEasy, Jersey y Apache CXF a través de módulos.
  9. 9 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • Integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets. • Contiene soporte RestEasy, Jersey y Apache CXF a través de módulos. • No tiene la intención de reemplazar frameworks basados en componentes como JSF, sino simplemente ofrecer una alternativa a la creación de aplicaciones web en Java EE.
  10. 10 / 32

  11. 11 / 32 public class HelloController { }

  12. 12 / 32 @Controller public class HelloController { } •

    javax.mvc.Controller
  13. 13 / 32 @Controller @Path("hello") public class HelloController { }

  14. 14 / 32

  15. 15 / 32 @Controller @Path("hello") public class HelloController { @GET

    public String getHello() { return "hello.jsp"; } }
  16. 16 / 32 @Controller @Path("hello") public class HelloController { @GET

    public Response getHello() { return Response.status(OK) .entity("hello.jsp") .build(); } }
  17. 17 / 32 @Controller @Path("hello") public class HelloController { @View("hello.jsp")

    @GET public void getHello() { } } • javax.mvc.View
  18. 18 / 32 @Controller @Path("hello") public class HelloController { @GET

    public Viewable getHello() { return new Viewable("hello.jsp"); } } • Solo en RI - org.eclipse.krazo.engine.Viewable
  19. 19 / 32 Asciidoc .adoc | .asciidoc Freemarker .ftl Handlebars

    .hbs | .handlebars Jade .jade Jetbrick .jetx JSR-223 .groovy | .js | .py Mustache .mustache Pebble .peb Stringtemplate .st Thymeleaf .html Velocity .vm Jtwig .twig.html | .twig
  20. 20 / 32

  21. 21 / 32 @Controller @Path("hello") public class HelloController { @Inject

    private Models model @View("hello.jsp") @GET public void getHello() { model.put("MSG","SouJava"); } } • javax.mvc.Models
  22. 22 / 32 @Named("jug") @RequestScoped @Data public class JUG {

    private String nombre; } • javax.inject.Named; • javax.enterprise.context.RequestScoped; • lombok.Data;
  23. 23 / 32 @Controller @Path("hello") public class HelloController { @Inject

    private JUG jug; @View("hello.jsp") @GET public void getHello() { jug.setNombre("SouJava"); } }
  24. 24 / 32 <%@page contentType=“text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head>

    <title>MVC 1.0 Hello Demo</title> </head> <body> <h1>Hello ${MSG} utilizando Model</h1> <h1>Hello ${jug.nombre} utilizando CDI</h1> </body> </html> • Solo soporte JSP, Facelets y Thymeleaf .
  25. 25 / 32

  26. 26 / 32 @ApplicationPath("resource") public class MVCApplication extends Application {

    @Override public Map<String, Object> getProperties() { Map<String, Object> defaultFileExtension = new HashMap<>(); defaultFileExtension.put(Properties.DEFAULT_VIEW_FILE_EXTENSION, "jsp"); return defaultFileExtension; } } • javax.ws.rs.ApplicationPath • javax.ws.rs.core.Application
  27. 27 / 32 "Adopt a Spec" Program for JUGs https://jakarta.ee/community/adopt-a-spec/

  28. 28 / 32 Adopt-a-Spec

  29. 29 / 32 https:/ /git.io/fjFbu DEMO

  30. 30 / 32 Referencias

  31. 31 / 32 Q&A

  32. Daniel Dias Jakarta EE Developer - SouJava daniel.dias@soujava.org.br - @danieldiasjava