framework web 02
DESCRIPTION
Aula 02 - Frameworks web, SpringTRANSCRIPT
![Page 1: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/1.jpg)
Frameworks para Desenvolvimento web em
JavaAula 02
André Luiz Forchesatto
![Page 2: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/2.jpg)
Planejamento
● Aula 02○ Introdução ao desenvolvimento Web Java○ Spring MVC○ Spring Web com HTML○ Spring Rest○ Spring Test
![Page 3: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/3.jpg)
Programação WEB???
![Page 4: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/4.jpg)
Protocolo HTTP
![Page 5: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/5.jpg)
Requisição Http - request
![Page 6: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/6.jpg)
Resposta Http - response
![Page 7: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/7.jpg)
Frameworks - web● Surgiram para trazer produtividade no
desenvolvimento de software web● Component Based
○ Simplicidade no desenvolvimento e aprendizado;○ Conjunto de componentes visuais. Semelhante ao
que acontece no desktop;○ Diminui as preocupações com a parte visual;○ Exige pouco conhecimento de html+css+javascript
inicialmente
![Page 8: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/8.jpg)
Component Based
![Page 9: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/9.jpg)
Action Based
● Framework MVC● Baseado em ações;● Executam actions no servidor;● Não possui componentes visuais;● Mais flexibilidade no desenvolvimento;● Exige mais conhecimento de
html+css+javascript● Mas fácil de testar
![Page 10: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/10.jpg)
Action Based
![Page 11: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/11.jpg)
Spring Web● Fornece integração com vários frameworks;● Todas as funcionalidades do Core podem ser
usadas na web;● Possui um módulo MVC● Disponibiliza um EL de integração com os
arquivos JSP● Fácil integração com o JSF● Suporte a WebSocket
![Page 12: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/12.jpg)
Spring MVC● Foi projetado em torno de um
DispatcherServlet que despacha pedidos para os controladores configuráveis
● Seu uso esta baseado em duas anotações básicas:○ @Controller○ @RequestMapping
● Possui suporte a RestFull com anotações:○ @RestController○ @PathVariable
![Page 13: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/13.jpg)
Spring MVC
![Page 14: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/14.jpg)
Spring MVC
![Page 15: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/15.jpg)
Criando um Controller
Classe java simples com a anotação @Controller e @RequestMapping
![Page 16: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/16.jpg)
RequestMapping
● Anotação responsável por registrar uma URL em um Controller.
● Pode estar sobre um Método ou Classe.
![Page 17: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/17.jpg)
RequestMapping
● Atributos:○ value
■ Nome da URL○ consumes
■ MediaType (Json, text, html) de entrada na Action○ produces
■ MediaType (Json, text, html) de resposta na Action○ headers
■ Cabeçalho da requisição HTTP○ method
■ Método HTTP (Post, Get, etc..)○ params
■ Avalia se os parâmetros estão corretos
![Page 18: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/18.jpg)
Template URI
● Variáveis na URL
Exemplo de uso: www.meusistema.com.br/owners/10
![Page 19: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/19.jpg)
Template URI
● URL concatenada
Exemplo de uso: www.meusistema.com.br/owners/10/pets/5
![Page 20: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/20.jpg)
Método HTTP
● Pode ser utilizado o padrão RestFul● Enum RequestMethod
○ GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
![Page 21: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/21.jpg)
Redirecionamento e Foward
● Redirect○ Acontece do lado do cliente, fará o browser acessar
uma nova URL;● Foward
○ Acontece do lado do servidor transparente para o cliente/browser
![Page 22: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/22.jpg)
Redirecionamento e Foward
lista é um JSP disponível na pasta: WEB-INF/jsp/produto
![Page 23: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/23.jpg)
Binding View e Modelo
● O name dos input devem ser iguais ao nome dos atributos das classes.
![Page 24: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/24.jpg)
Classe Model
● Disponibiliza um mapa de valores para a View
![Page 25: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/25.jpg)
Flash Attributes
● Mapa de parâmetros para redirecionamento
![Page 26: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/26.jpg)
Spring-boot web
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency>
<groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope>
</dependency> <dependency>
<groupId>javax.servlet</groupId><artifactId>jstl</artifactId>
</dependency>
![Page 27: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/27.jpg)
Spring-boot web
spring.view.prefix: /WEB-INF/jsp/spring.view.suffix: .jsp
application.properties
![Page 28: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/28.jpg)
Prática
● Criar páginas e controllers
![Page 29: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/29.jpg)
Validação
● Suporta Bean Validation 1.0 (JSR-303) e Bean Validation 1.1 (JSR-349);
● Possui uma interface própria para validação;
![Page 30: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/30.jpg)
Usar Validador Spring
● Implementar interface Validation
![Page 31: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/31.jpg)
Usar Validador Spring
● Registra no @InitBinder
![Page 32: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/32.jpg)
Prática
● Implementar validações
![Page 33: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/33.jpg)
Spring Rest
● @RestController○ Anotação especifica para serviços Rest
● Assume @ResponseBody por padrão
![Page 34: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/34.jpg)
Spring Rest
● @ResponseBody○ Transforma o conteúdo de retorno do response no
formato Json ou no MediaType indicado● @RequestBody
○ Transforma o conteúdo do request em um objeto java no MediaType indicado
![Page 35: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/35.jpg)
Spring Rest
● @ResponseBody○ Transforma o conteúdo de retorno do response no
formato Json ou no MediaType indicado● @RequestBody
○ Transforma o conteúdo do request em um objeto java no MediaType indicado
![Page 36: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/36.jpg)
Spring Data - Rest
● Disponibiliza os serviços RestFul a nível de repositório
![Page 37: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/37.jpg)
Spring Data - Rest
● Pode ser acessado por JavaScript ou qualquer cliente Rest, retorna um Json para RestFul com a sessão de Links
![Page 38: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/38.jpg)
Spring Data - Rest
![Page 39: Framework web 02](https://reader034.vdocuments.net/reader034/viewer/2022042700/5588cbc1d8b42afe6d8b45cc/html5/thumbnails/39.jpg)
Prática
Criar serviços Rest