Slide 1

Slide 1 text

Todo lo que querías saber sobre MVC en Jakarta EE y te avergonzaba preguntar Daniel Dias Java EE Developer - SouJava [email protected] - @danieldiasjava

Slide 2

Slide 2 text

2 / 32 Agenda MVC 1.0 Demo Q&A

Slide 3

Slide 3 text

3 / 32 MVC 1.0

Slide 4

Slide 4 text

4 / 32 ● Framework orientado a la acción construido en las capas de JAX-RS. MVC 1.0

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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 MVC 1.0

Slide 7

Slide 7 text

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. MVC 1.0

Slide 8

Slide 8 text

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. MVC 1.0

Slide 9

Slide 9 text

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. MVC 1.0

Slide 10

Slide 10 text

10 / 32 Controller

Slide 11

Slide 11 text

11 / 32 public class HelloController { } Controller

Slide 12

Slide 12 text

12 / 32 @Controller public class HelloController { } ● javax.mvc.Controller Controller

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

14 / 32 View

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

18 / 32 View @Controller @Path("hello") public class HelloController { @GET public Viewable getHello() { return new Viewable("hello.jsp"); } } ● Solo en RI - org.eclipse.krazo.engine.Viewable

Slide 19

Slide 19 text

19 / 32 View View Engines apoyado en Krazo(RI) 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

Slide 20

Slide 20 text

20 / 32 Model

Slide 21

Slide 21 text

21 / 32 Model @Controller @Path("hello") public class HelloController { @Inject private Models model @View("hello.jsp") @GET public void getHello() { model.put("MSG","SouJava"); } } ● javax.mvc.Models

Slide 22

Slide 22 text

22 / 32 Model - CDI @Named("jug") @RequestScoped @Data public class JUG { private String nombre; } ● javax.inject.Named; ● javax.enterprise.context.RequestScoped; ● lombok.Data;

Slide 23

Slide 23 text

23 / 32 Model - CDI @Controller @Path("hello") public class HelloController { @Inject private JUG jug; @View("hello.jsp") @GET public void getHello() { jug.setNombre("SouJava"); } }

Slide 24

Slide 24 text

24 / 32 Model <%@page contentType=“text/html" pageEncoding="UTF-8"%> MVC 1.0 Hello Demo

Hello ${MSG} utilizando Model

Hello ${jug.nombre} utilizando CDI

● Solo soporte JSP, Facelets y Thymeleaf .

Slide 25

Slide 25 text

25 / 32 BOOT

Slide 26

Slide 26 text

26 / 32 @ApplicationPath("resource") public class MVCApplication extends Application { @Override public Map getProperties() { Map defaultFileExtension = new HashMap<>(); defaultFileExtension.put(Properties.DEFAULT_VIEW_FILE_EXTENSION, "jsp"); return defaultFileExtension; } } ● javax.ws.rs.ApplicationPath ● javax.ws.rs.core.Application Boot

Slide 27

Slide 27 text

27 / 32

Slide 28

Slide 28 text

28 / 32 - Código ( https://github.com/mvc-spec ) - Issues : ( https://github.com/mvc-spec/mvc-spec/issues ) ( https://github.com/eclipse-ee4j/krazo/issues ) - Site ( https://www.mvc-spec.org/ ) - JCP - JSR-371 ( https://jcp.org/en/jsr/detail?id=371 ) - Lista de E-mail : ( [email protected] ) (https://www.eclipse.org/lists/krazo-dev) - Ejemplos: (https://github.com/eclipse-ee4j/krazo/tree/master/examples) (https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/MVC1.0-samples) Adopt-a-JSR

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

30 / 32 Referencias - https://projects.eclipse.org/projects/ee4j.krazo - https://www.mvc-spec.org/ - https://jcp.org/en/jsr/detail?id=371 - https://medium.com/danieldiasjava/jsr-371-mvc-1-0-com-tomcat-tomee-45f9638f276c - https://medium.com/danieldiasjava/jsr-371-mvc-1-0-validação-248f58e370dc - https://medium.com/danieldiasjava/criando-uma-aplicação-com-jsr-371-mvc-1-0-13635d0fc41f - http://blog.triadworks.com.br/mvc-1-0-jsr-para-um-framework-mvc-action-based-na-java-ee-8 - http://blog.caelum.com.br/primeiros-passos-do-mvc-1-0/

Slide 31

Slide 31 text

31 / 32 Q&A

Slide 32

Slide 32 text

Daniel Dias Java EE Developer - SouJava [email protected] - @danieldiasjava Gracias