Logo Passei Direto
Buscar

Spring Framework

User badge image
Lek Lik

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Spring Framework
Objetivo
Simplificar o desenvolvimento em Java corporativo
Resolve desafios comuns como, persistência de dados, segurança, cloud computing e
integração
Principais vantagens
Abordagem baseada em IoC e DI
Arquitetura modular
Dividir o sistema em componentes menores
Código altamente testável
Suporte a novas tecnologias e padrões
Spring Boot
Abstrai e simplifica o uso do Spring Framework
Reduz a quantidade de configuração manual necessária
Cria aplicações rapidamente com as dependências configuradas automaticamente
Fornece servidores de aplicação e BD embutidos
Spring Web
API RESTful
Permite a criação de serviços web com uso de métodos HTTP
Geralmente retorna dados em formato JSON ou XML
Spring MVC
Usado para aplicações web que interagem com interfaces
DispatcherServlet (Controller)
Responsável por interceptar requisições HTTP
Mapear a requisição para o controlador correto
Renderizar a View
E devolver respostas HTTP
Anotações para mapeamento de requisições HTTP
1. @RequestMapping : mapeia URLs de propósito geral
2. @GetMapping : usadas para solicitar informações
3. @PostMapping : usadas para criar um novo objeto
Spring Framework
1 / 4
af://h1-0
af://h2-1
af://h2-2
af://h2-3
af://h2-4
af://h3-5
af://h3-6
af://h5-7
af://h5-8
4. @PutMapping : usadas para atualizar um objeto
5. @DeleteMapping
6. @PatchMapping : modifica parcialmente um objeto
Tipos de respostas no Controller
ModelAndView: usado para definir um template e objetos de negócio (ou atributos do
Model)
String: nome lógico do template
Map: conjunto de pares chave-valor
Redirect
Anotações para manipulação de dados
1. @RequestParam : indica um parâmetro recebido em uma requisição HTTP
1. Tanto GET quanto POST
2. @PathVariable : indica um parâmetro recebido em uma requisição HTTP
1. Apenas GET (pela URL)
3. @ModelAttribute : facilita a transferência de dados entre as camadas Controller-View
1. Pode ser usado para mapear os dados de um formulário a um objeto Java
2. Pode ser usado também para adicionar objetos com dados do BD antes de
renderizar a View
4. @SessionAttributes : usado para armazenar automaticamente um objeto na sessão
HTTP
5. @SessionAttribute : recupera um objeto de uma sessão HTTP
6. @RequestAttribute : recupera um objeto de uma requisição HTTP
1. Acessa valores que já foram adicionados à requisição. Geralmente em um ponto
anterior no ciclo de vida da requisição
Interface
Thymeleaf
É um template engine para criação de visualizações dinâmicas
Projetado para ser desacoplado e altamente integrável ao Spring Framework
Permite a criação de páginas HTML
Expressões básicas
${aluno}
 Variável
@{/salvarAluno}
 Links ou URLs
*{aluno.matricula}
Spring Framework
2 / 4
af://h5-9
af://h5-10
af://h2-11
af://h3-12
 Seleção dentro de objetos
#{...}
 Formatação de mensagem
Atributos Thymeleaf
th:text
 Define conteúdo textual em um elemento HTML
th:each
 Usado para iteração de elementos HTML
th:each="aluno: ${listaDeAlunos}"
th:if
th:href
th:action
 Define a URL de destino para um formulário HTML
th:object
 Define um objeto do Model a ser manipulado na requisição
th:field
- Associa campos de formulário a atributos de um objeto
Custom Validators
@Component
public class TccValidador implements Validator {
 public void validate(Object obj, Errors errors) {
 Tcc tcc = (Tcc) obj;
 if (tcc.getTitulo().equals(""))
 errors.rejectValue("titulo", "campo.vazio", "O título 
não pode estar vazio.");
 }
}
Spring Framework
4 / 4
af://h3-16
af://h2-17
af://h3-18
af://h3-19
af://h3-20
af://h3-14
	Spring Framework
	Objetivo
	Principais vantagens
	Spring Boot
	Spring Web
	API RESTful
	Spring MVC
	DispatcherServlet (Controller)
	Anotações para mapeamento de requisições HTTP
	Tipos de respostas no Controller
	Anotações para manipulação de dados
	%3Cdiv%20class%3D%22markdown-embed-title%22%3ESpring%20Validation%20e%20Bean%20Validation%3C%2Fdiv%3E%3Cdiv%20class%3D%22markdown-preview-view%20markdown-rendered%20show-indentation-guide%22%3E%3Cul%3E%0A%3Cli%20dir%3D%22auto%22%3EA%20especifica%C3%A7%C3%A3o%20JSR303%20(Bean%20Validation)%20permite%20a%20valida%C3%A7%C3%A3o%20do%20lado%20do%20servidor%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3EA%20valida%C3%A7%C3%A3o%20%C3%A9%20configurada%20por%20meio%20de%20anota%C3%A7%C3%B5es%20aplicadas%20nas%20classes%20de%20dom%C3%ADnio%20(Model)%2C%20e%20as%20regras%20s%C3%A3o%20automaticamente%20aplicadas%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3EHibernate%20Validator%0A%3Cul%3E%0A%3Cli%20dir%3D%22auto%22%3E%C3%89%20uma%20implementa%C3%A7%C3%A3o%20adicional%20que%20oferece%20mais%20anota%C3%A7%C3%B5es%20de%20valida%C3%A7%C3%A3o%3C%2Fli%3E%0A%3C%2Ful%3E%0A%3C%2Fli%3E%0A%3C%2Ful%3E%0A%3Ch3%20data-heading%3D%22Principais%20anota%C3%A7%C3%B5es%20de%20valida%C3%A7%C3%A3o%22%20dir%3D%22auto%22%3EPrincipais%20anota%C3%A7%C3%B5es%20de%20valida%C3%A7%C3%A3o%3Ca%20href%3D%22af%3A%2F%2Fh3-15%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh3%3E%0A%3Cul%3E%0A%3Cli%20dir%3D%22auto%22%3E%3Ccode%3E%40NotNull%3C%2Fcode%3E%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3E%3Ccode%3E%40NotBlank%3C%2Fcode%3E%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3E%3Ccode%3E%40Min%3C%2Fcode%3E%20e%20%3Ccode%3E%40Max%3C%2Fcode%3E%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3E%3Ccode%3E%40Size%3C%2Fcode%3E%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3E%3Ccode%3E%40Pattern%3C%2Fcode%3E%3C%2Fli%3E%0A%3C%2Ful%3E%0A%3Ch3%20data-heading%3D%22Passos%20para%20configura%C3%A7%C3%A3o%20de%20valida%C3%A7%C3%A3o%22%20dir%3D%22auto%22%3EPassos%20para%20configura%C3%A7%C3%A3o%20de%20valida%C3%A7%C3%A3o%3Ca%20href%3D%22af%3A%2F%2Fh3-16%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh3%3E%0A%3Col%3E%0A%3Cli%20dir%3D%22auto%22%3EAdicionar%20depend%C3%AAncia%20no%20projeto%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3EDeclarar%20as%20regras%20de%20valida%C3%A7%C3%A3o%20nas%20classes%20do%20Model%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3EIndicar%20a%20valida%C3%A7%C3%A3o%20no%20m%C3%A9todo%20do%20Controller%3C%2Fli%3E%0A%3Cli%20dir%3D%22auto%22%3EAdicionar%20elementos%20HTML%20para%20exibi%C3%A7%C3%A3o%20de%20erros%3C%2Fli%3E%0A%3C%2Fol%3E%0A%3Ch2%20data-heading%3D%22Exemplo%22%20dir%3D%22auto%22%3EExemplo%3Ca%20href%3D%22af%3A%2F%2Fh2-17%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh2%3E%0A%3Ch3%20data-heading%3D%22Configura%C3%A7%C3%A3o%20no%20Controller%22%20dir%3D%22auto%22%3EConfigura%C3%A7%C3%A3o%20no%20Controller%3Ca%20href%3D%22af%3A%2F%2Fh3-18%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh3%3E%0A%3Cpre%3E%3Ccode%3E%40PostMapping(%22%2Fcadastro%22)%0Apublic%20String%20cadastro(%40Valid%20%40ModelAttribute(%22tcc%22)%20Tcc%20pTcc%2C%20Errors%20errors)%20%7B%0A%20%20%20%20if%20(errors.hasErrors())%20return%20%22tcc%22%3B%0A%20%20%20%20%2F%2F%20C%C3%B3digo%20adicional%0A%7D%0A%3C%2Fcode%3E%3Cbutton%20class%3D%22copy-code-button%22%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22svg-icon%20lucide-copy%22%3E%3Crect%20x%3D%228%22%20y%3D%228%22%20width%3D%2214%22%20height%3D%2214%22%20rx%3D%222%22%20ry%3D%222%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M4%2016c-1.1%200-2-.9-2-2V4c0-1.1.9-2%202-2h10c1.1%200%202%20.9%202%202%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%3C%2Fbutton%3E%3C%2Fpre%3E%0A%3Ch3%20data-heading%3D%22Exibi%C3%A7%C3%A3o%20de%20erros%20no%20Thymeleaf%22%20dir%3D%22auto%22%3EExibi%C3%A7%C3%A3o%20de%20erros%20no%20Thymeleaf%3Ca%20href%3D%22af%3A%2F%2Fh3-19%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh3%3E%0A%3Cpre%3E%3Ccode%3E%26lt%3Binput%20type%3D%22text%22%20name%3D%22titulo%22%20th%3Afield%3D%22*%7Btitulo%7D%22%26gt%3B%0A%26lt%3Bspan%20th%3Aif%3D%22%24%7B%23fields.hasErrors('titulo')%7D%22%20th%3Aerrors%3D%22*%7Btitulo%7D%22%20style%3D%22color%3Ared%22%26gt%3B%26lt%3B%2Fspan%26gt%3B%0A%3C%2Fcode%3E%3Cbutton%20class%3D%22copy-code-button%22%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22svg-icon%20lucide-copy%22%3E%3Crect%20x%3D%228%22%20y%3D%228%22%20width%3D%2214%22%20height%3D%2214%22%20rx%3D%222%22%20ry%3D%222%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M4%2016c-1.1%200-2-.9-2-2V4c0-1.1.9-2%202-2h10c1.1%200%202%20.9%202%202%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%3C%2Fbutton%3E%3C%2Fpre%3E%0A%3Ch3%20data-heading%3D%22Custom%20Validators%22%20dir%3D%22auto%22%3ECustom%20Validators%3Ca%20href%3D%22af%3A%2F%2Fh3-20%22%20class%3D%22md-print-anchor%22%3E%3C%2Fa%3E%3C%2Fh3%3E%0A%3Cpre%3E%3Ccode%3E%40Component%0Apublic%20class%20TccValidador%20implements%20Validator%20%7B%0A%20%20%20%20public%20void%20validate(Object%20obj%2C%20Errors%20errors)%20%7B%0A%20%20%20%20%20%20%20%20Tcc%20tcc%20%3D%20(Tcc)%20obj%3B%0A%20%20%20%20%20%20%20%20if%20(tcc.getTitulo().equals(%22%22))%0A%20%20%20%20%20%20%20%20%20%20%20%20errors.rejectValue(%22titulo%22%2C%20%22campo.vazio%22%2C%20%22O%20t%C3%ADtulo%20n%C3%A3o%20pode%20estar%20vazio.%22)%3B%0A%20%20%20%20%7D%0A%7D%0A%3C%2Fcode%3E%3Cbutton%20class%3D%22copy-code-button%22%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22svg-icon%20lucide-copy%22%3E%3Crect%20x%3D%228%22%20y%3D%228%22%20width%3D%2214%22%20height%3D%2214%22%20rx%3D%222%22%20ry%3D%222%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M4%2016c-1.1%200-2-.9-2-2V4c0-1.1.9-2%202-2h10c1.1%200%202%20.9%202%202%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%3C%2Fbutton%3E%3C%2Fpre%3E%3C%2Fdiv%3E

Mais conteúdos dessa disciplina