Você está na página 1de 116

JAVA AVANÇADO

DESENVOLVIMENTO DE APLICAÇÕES
COM JDBC E SPRING BOOT
Jadir Custódio Mendonça Junior
Sumário
Java Avançado

 Introdução
 Nosso Objetivo
 Links Informativos

 Comunicação Cliente/Servidor
O que é Servidor
 O que é Cliente

 O que é um Servidor Web

 Comunicação Cliente/Servidor

 O Padrão MVC
 Conhecendo a Ferramenta
3

Introdução
Introdução
4

Nosso Objetivo.
 Desenvolvimento de aplicação web em Java:
 JAVA EE:
◼ Servlets;
◼ Java Server Page;
◼ JDBC.
 Framework Web (Spring):
◼ Spring MVC;
◼ Spring Boot;
◼ Thymeleaf (motor de templates).
 Framework de Persistência de Dados:
◼ Especificação JPA (Java Persistence API);
◼ Hibernate.
 Ferramentas:
◼ Spring Tools Suite (IDE)
◼ Baseado no Eclipse
◼ Maven (Gerenciador de Builder)
Introdução
5

Links informativos
 Framework
 https://pt.wikipedia.org/wiki/Framework
 Spring Framework
 https://spring.io (site oficial)
 https://pt.wikipedia.org/wiki/Spring_Framework
 Java Persistence API
 https://pt.wikipedia.org/wiki/Java_Persistence_API
 http://enos.itcollege.ee/~jpoial/java/naited/JPA_Mini_Book.pdf
 Hibernate
 http://hibernate.org (site oficial)
 https://pt.wikipedia.org/wiki/Hibernate
 Ferramentas
 Spring Tools Suite : https://spring.io/tools
 Maven : https://maven.apache.org
 Sobre o maven: https://pt.wikipedia.org/wiki/Apache_Maven
6

Sistemas Distribuídos
Conceito de Sistemas Distribuídos
7

 “Você sabe que um sistema é distribuído


quando uma falha em um computador
que você nem sabia que existia te impede
de continuar o seu trabalho.”
Leslie Lamport
Conceito de Sistemas Distribuídos
8

 “Um sistema distribuído é uma coleção de


computadores independentes que
parecem um sistema único para o usuário”
[Tanenbaum].
Conceito de Sistemas Distribuídos
9

 Arquitetura Cliente Servidor:

Podeser vista como um conjunto de


computadores, interligados uns aos outros,
compartilhando recursos.
Arquitetura Cliente Servidor
10
Arquitetura Cliente Servidor
11
Arquitetura Cliente Servidor (Internet)
12
Arquitetura Cliente Servidor (Internet)
13

Cadastramento
Reserva
Renovação

Usuário da
biblioteca
consultas
Cadastramentos
Reserva
Empréstimo Firewall
Renovação Internet
Devolução

Atendimento Impressora
Servidor
Web
Consultas Comunicação
Comprovantes sobre
aquisições

Servidor
Sistema da Biblioteca
Impressora Solicitações
de aquisição

Consulta
Servidor
Sistema de Compras
Usuário da
biblioteca
Comunicação
14

Cliente / Servidor
Comunicação Cliente/Servidor
15

O que é
Servidor
Comunicação Cliente/Servidor
16

Servidor
 São equipamentos geralmente com maior poder de

processamento e armazenamento que visa a fornecer


recursos/serviços a uma rede de computadores;
 Um servidor pode oferecer serviços variados:

 E-mail
 Arquivos

 Web

 Aplicações

 Banco de Dados

 Entre outros...
Comunicação Cliente/Servidor
17

Servidor
 Principais Características:
 Execução contínua;
 Recebe e responde a solicitações dos Clientes;

 Presta serviços distribuídos;

 Atende a diversos clientes simultaneamente;

 Hardware; exige máquinas mais robustas, com


grande capacidade de processamento;
 Software: processo sempre em execução, aguardando
ser chamado pelo Cliente.
Comunicação Cliente/Servidor
18

O que é
Cliente
Comunicação Cliente/Servidor
19

Cliente
 É um termo empregado em computação e representa uma
entidade que consome os serviços de um servidor, em geral
através do uso de uma rede de computadores numa
arquitetura cliente-servidor.
 Características do Cliente:
 Inicia pedidos para servidores;
 Espera por respostas;
 Recebe respostas;
 Conecta-se a um pequeno número de servidores de uma só vez;
 Normalmente interage diretamente com os usuários finais através de
qualquer interface com o usuário;
 Utiliza recursos da rede.
Comunicação Cliente/Servidor
20

O que é um
Servidor
Web
Comunicação Cliente/Servidor
21

Servidor Web
 A expressão Servidor Web pode ter dois significados:

 É um computador que executa aplicações que visam oferecer


recursos WEB baseado em requisições e respostas HTTP ;
 É um programa de computador (software) responsável por
aceitar pedidos HTTP de clientes, geralmente os
navegadores, e servi-los com respostas HTTP, incluindo
opcionalmente dados, que geralmente são páginas web, tais
como documentos HTML com objetos embutidos (imagens,
etc.).
Neste caso, alguns softwares são conhecidos:
 Apache HTTP Server
 Microsoft IIS
 Apache Tomcat
 Entre outros.
Comunicação Cliente/Servidor
22

Servidor Web
 Características de um Servidor Web:
 Gerencia sistema virtual de arquivos e diretórios;
 Interpreta requisições (HTTP) de clientes;
 Envia respostas (HTTP) ao cliente com os dados
solicitados;
 Pode se comunicar com outros servidores para
atender uma solicitação específica do cliente.
Comunicação Cliente/Servidor
23

A Comunicação Cliente/Servidor Web


Em um sistema Web Cliente/Servidor, temos pelo menos duas pontas:
Cliente www.facebook.com,
por favor, me
envie a homepage

OK Aqui vai:
<html><head>...
Servidor
Comunicação Cliente/Servidor
24

A Comunicação Cliente/Servidor Web


Na prática... Processa e renderiza o
Cliente HTML da página
solicitada
Processa a
requisição...
www.facebook.
com, por
favor, me
envie a Envia a
homepage resposta ao
Cliente...

HTTP
Envia uma
requisição OK Aqui vai:
de página ao <html><head>.
servidor! Todo este processo é ..
feito através do protocolo
HTTP
Servidor
Comunicação Cliente/Servidor
25

A Comunicação Cliente/Servidor Web


Simplificadamente...
Cliente REQUEST

HTTP

RESPONSE
Servidor
Comunicação Cliente/Servidor
26

Protocolo HTTP
 O Hypertext Transfer Protocol (HTTP) é um protocolo de
comunicação utilizado para sistemas de informação de
hipermídia, distribuídos e colaborativos;
 Ele é a base para a comunicação de dados da World Wide Web
para a distribuição e recuperação de informação;
 Define uma forma de conversação no estilo pedido-resposta
entre um cliente (o browser) e um servidor (o servidor Web);
 Toda a conversação se dá no formato ASCII (texto puro)
através de um conjunto de comandos simples que formando
uma mensagem que é trafegada entre o cliente e o servidor.
Comunicação Cliente/Servidor
27

Os Métodos de Requisições HTTP


Para envio de solicitações e/ou requisições HTTP, o cliente se
dispõe de, pelo menos, dois métodos:
 GET:
 É o primeiro método criado para envio de dados da Internet;
 Caracteriza-se por enviar os dados (objetos e seus conteúdos) para o
servidor de destino utilizando a barra de endereços do navegador;
 Exemplo:
◼ http://www.banco.com.br/acessar.jsp?conta=2245&agencia=335
(O trecho de texto após o ? é conhecido como parâmetros de requisição ou
ainda como Query String)
 POST:
 Este é um método criado para superar as limitações do método GET;
 Ele caracteriza-se por enviar os dados para o destino sem exibi-los na
barra de endereços.
Comunicação Cliente/Servidor
28

Características de uma Aplicação Web


 É tipicamente uma aplicação cliente/servidor;
 É gerenciada por um software de Servidor Web;
 É acessada por meio de uma aplicação cliente:
 navegadores, aplicativos mobile, entre outros.
 Por residir em um servidor web e por ser baseada e/ou criada
por uma linguagem de programação, uma aplicação web pode
gerar conteúdos de forma dinâmica;
 Normalmente acessam Banco de Dados;
 Pode servir outros tipos/formatos de dados além do
convencional HTML.
29

Padrão MVC
Padrão MVC
30

Definição
 É um padrão de arquitetura de aplicações que divide

a aplicação em três camadas: a visão (view), o


modelo (model), e o controlador (controller).
 Foi desenvolvido em 1979 por Trygve Reenskaug

com a finalidade de ser utilizado como arquitetura


para aplicativos desktop. Entretanto, o padrão se
popularizou para uso em sistemas web, a partir da
adesão de milhares de Frameworks de mercado.
Padrão MVC
31

Definição

Define o modelo ou Regras de negócios


Persistência de
MODEL domínio da (Camada de
dados
aplicação serviços)

Interação com o Representa a entrada


VIEW Usuário e saídas dos dados

Interagem com o
Recebe as
Camada modelo em busca da
CONTROLLER Intermediária
requisições do
resposta a ser
usuário
retornada ao usuário
Padrão MVC
32

Definição

request
CONTROLLER
HTTP

Retorna dados 
HTML, XML, JSON
response

Interação 
VIEW MODEL
Padrão MVC
33

Resumindo....
 A Camada Controller

 Exerce o controle de qual model deverá ser aplicado e qual


view será mostrado ao usuário;
 Podemos dizer que esta camada faz uma gerência das
outras duas camadas;
 Manipula e roteia as requisições dos usuários.

 Interpreta as requisições submetidas pelo usuário e traduz


em comandos que são enviados para o Model e/ou para a
View;
 Valida as requisições dos usuários de acordo com as regras
de autenticação e autorização.
Padrão MVC
34

Resumindo....
 A Camada Model

 Responsável por gerenciar o modelo ou domínio da


aplicação.
 Responsável por gerenciar o processo de persistência de
dados.
 Responsável por tratar as regras de negócio (Camada de
Serviço):
◼ Leitura, Manipulação e Validação de dados.
 Traduz os dados obtidos em informações relevantes para
serem exibidas pela View.
Padrão MVC
35

Resumindo....
 A Camada View

 É a camada de interface com usuário:


◼ Representação das entradas (inputs) de dados;
◼ representação das saídas (output) dos dados.
 Também conhecida como front-end;
 Realiza a exibição dos dados, utilizando-se de formatos
como HTML, XML e JSON;
 É responsável por usar as informações modeladas para
produzir interfaces de apresentação conforme a
necessidade.
Java Enterprise
Edition
Servlets
37

✓ Introduzidos pela Sun em 1996 com o


propósito de acrescentar conteúdo
dinâmico aos aplicativos web.
✓ Um servlet é uma classe Java executada
por um container.
✓ Tem como benefícios: bom desempenho,
portabilidade, rápido ciclo de
desenvolvimento e robustez.
Servlets
38

 Definição: Código Java, carregado em um Servidor


Web, que é usado para tratar requisições de
clientes, como CGI.
 Características:
✓ Persistente;
✓ Seguro;
✓ Independente de plataforma;
✓ Acessa Banco de Dados;
✓ Pode ser integrado com Applets, no cliente, iniciando
uma conversação
Criando um Servlet
39
Criando um Servlet
40

@WebServlet("/MeuServlet")
public class MeuServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public MeuServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
response.getWriter().append("Alô Mundo: ")
.append(request.getContextPath());
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
doGet(request, response);
}

}
Criando um Servlet
41
Java Server Page - JSP
42

✓ Separação do conteúdo estático e


dinâmico.
✓ Independência de plataforma.
✓ Reuso de componentes.
✓ Funcionalmente equivalente aos Servlets.
✓ Facilidade de uso
✓ Maturidade da linguagem Java
✓ Facilidade de desenvolvimento
Funcionamento do JSP
43
Funcionamento do JSP
44

 O navegador envia uma requisição para a página JSP.

 Se esta requisição é a primeira a este JSP então:


✓ O container analisa o conteúdo do arquivo JSP.
✓ O contêiner gera o código fonte de um servlet
baseado no conteúdo do JSP.
✓ O compilador Java gera uma classe (.class) a partir do
código fonte do Servlet gerado no passo anterior.

 O Servlet correspondente ao JSP é instanciado e iniciado


(se necessário)

 O Servlet correspondente ao JSP atende a requisição .


Diretivas
45

✓ Instruções fornecidas ao JSP para configuração


do componente.
✓ Se mantém válida para qualquer requisição
enviada.
✓ Empregadas nas fases de tradução e compilação
✓ Diretivas possíveis:
✓ page
✓ include
✓ taglib
Diretiva - Page
46

✓ Controla a estrutura do Servlet


correspondente ao JSP.
✓ Pode ser declarada várias vezes, mas

cada opção só pode aparecer apenas


uma vez na página
✓ Exceto a opção import (livre).
Diretiva - Page
47

 import
 <%@ page import="java.util.List" %>
 <%@ page import="java.util.*" %>
 <%@ page import="java.util.Vector" %>
✓ Similar ao import de Java.

 session
 <%@ page session=“true” %> - Default
 <%@ page session=“false” %>

✓ Controla quando um JSP participa ou não de Sessões.


Diretiva - Page
48

 contentType
 <%@ page contentType=“text/html”%>
✓ Seta o content-type response header indicando o
mime da resposta.

 language
 <%@ page language=“Java”%> - única
suportada
✓ Indica a linguagem que está sendo usada.
Expressões
49

 Expressões válidas da sintaxe Java, avaliadas pelo


Servlet e enviadas ao seu fluxo de saída.

 Sintaxe:
 <%= expressão %>
 Exemplo
 <%= new java.util.Date()%>
Scriplets
50

 Permite a inserção de fragmentos de


código Java, os quais serão executados
sequencialmente.

 Sintaxe:
 <% scriptlet %>
Scriplets
51

<%
for(int i=0; i<=10; i++){
out.println(i);
}
%>
Comentário
52

 <%-- cometário jsp --%>

 Não é enviado ao browser cliente


Criando projeto JAVA EE

Para criarmos este nosso projeto você precisará:

Programas:
- JDK (Java)
- Eclipse EE (Enterprise Edition)
-Apache-tomcat
- WampServer ou MySQL Server

Bibliotecas (JAR):
mysql-connector-java-X.X.X-bin (Driver mySQL)
Criando projeto WEB

1- Na opção:
File
- New
- Other
Selecionar a Web e depois:
- Dynamic Web Project
Criando projeto

1 - Digite o nome do projeto:

SistemaAcademico-WEB

2 – Selecione o Servido (TomCat)

3 - Clique em Finish
Criando projeto WEB

Estrutura do projeto:
Na pasta webapp deve conter todas os arquivos
HTML, JSP, Imagens, CSS e JavaScript.

Na pasta WEB-INF/lib devem estar as minhas


bibliotecas.

Após copiar atualize seu projeto clicando em F5.


Criando projeto WEB

Vamos criar uma página HTML para


verificarmos se o servidor Web (TomCat)
está configurado.

O nome do nosso HTML será – index.html.

1- Clique no nome do projeto com o botão


direito do mouse e selecione:
- New
- HTML File
-Coloque o nome do arquivo.
-Clique em Finish

-Agora vamos criar um menu com as


seguintes opções:
-Incluir aluno
-Alterar aluno
-Consultar aluno
-Excluir aluno
-Listar alunos
Criando projeto WEB

Vamos instalar o
TomCat.

No menu selecionar a
opção:
-Window
-Preference
-Irá aparecer a tela ao
lado.
-Selecionar a opção
server.
-E depois a opção
-Runtime
Environments
Criando projeto WEB

-Clique no botão
Add e indique o
caminho onde a pasta
apache-tomcat-X.X.XX
está copiada e clique
em Finish.

Pronto o Servidor
TomCat está instalado.

Clique em ok.
Criando projeto WEB

Agora vamos construir a


estrutura do Model View
Controller (MVC).

Vamos criar os pacotes com


base nos padrões JAVA.

Clique no projeto com o


botão esquerdo do mouse
selecione:
-New
-Package

E vamos criar os seguintes


pacotes:

br.edu.exemplo.dao
br.edu.exemplo.controller
br.edu.exemplo.util
br.edu.exemplo.model

Não esqueça de clicar em


Finish.
Criando projeto WEB

Seu projeto deverá estar


com está estrutura.
dao AlunoDAO.java
util ConnectionFactory.java
model Aluno.java
controller ServletAluno.java
Criando projeto WEB

O quê fazer quando ocorrer este erro no servlet


Criando projeto WEB

Solucionando o
problema no servlet.

Clique no projeto
SisAluno com o botão
direito do mouse e
selecione a opção
build path, em seguida
selecione Configure
build path, deverá
aparecer a tela ao lado.

Clique no botão Add


External JARs
Criando projeto WEB

Localize a pasta do
apache-tomcat /lib e
selecione a biblioteca
servlet-api.jar.

Em seguida, clique em
abrir.
Criando projeto WEB

Verifique se o arquivo
.jar foi importado para
o seu projeto.

Clique no botão OK.

Problema solucionado.
Criando projeto WEB (tela de menu)
Criando projeto WEB (tela de incluir)
Criando projeto WEB (tela de listar todos
os alunos)
Criando projeto WEB (tela de atualizar)
Criando projeto WEB (tela de atualizar)
Criando projeto WEB (tela de consultar)
Criando projeto WEB (tela de consultar)
Criando projeto WEB (tela de excluir)
Criando projeto WEB (tela de excluir)
Rest x Restfull
Rest
76

Representational State Transfer (REST), em português Transferência Representacional


de Estado, é um estilo de arquitetura de software que define um conjunto de restrições a
serem usadas para a criação de web services (serviços Web). Os Web services que estão
em conformidade com o estilo arquitetural REST, denominados Web services RESTful,
fornecem interoperabilidade entre sistemas de computadores na Internet.
O que é uma API
77

O acrônimo API que provém do inglês Application Programming


Interface (Em português, significa Interface de Programação de Aplicações),
trata-se de um conjunto de rotinas e padrões estabelecidos e
documentados por uma aplicação A, para que outras aplicações consigam
utilizar as funcionalidades desta aplicação A, sem precisar conhecer
detalhes da implementação do software.

Desta forma, entendemos que as APIs


permitem uma interoperabilidade
entre aplicações. Em outras palavras,
a comunicação entre aplicações e
entre os usuários
Representações
78
Representações
79

Por outro lado, você deve concordar comigo que a primeira


representação (formato XML) é mais verbosa, exigindo um
esforço extra por parte de quem está escrevendo. No segundo
exemplo (formato JSON) já é algo mais leve de se escrever. Já
o último (formato YAML), é praticamente como escrevemos
no dia a dia.

Sendo assim, esse é o primeiro passo que precisamos dar para


permitir a comunicação interoperável. E o mais legal é que
essas 3 representações são válidas atualmente, ou seja, homens
e máquinas podem ler, escrever e entender esses formatos.
Conceito de XML
80

XML é uma recomendação da W3C para gerar


linguagens de marcação para necessidades
especiais. É um dos subtipos da SGML capaz de
descrever diversos tipos de dados. Seu propósito
principal é a facilidade de compartilhamento de
informações por intermédio da internet.
Conceito de JSON
81

JSON (JavaScript Object Notation), é formato


para armazenamento e transmissão de dados,
assim como o XML. Tem uma legibilidade fácil para
nos humanos e é simples para o computador gerar
e fazer o parser. O JSON é menos verboso que um
XML.
Conceito de YAML
82

YAML é um formato de serialização de dados


legíveis por humanos inspirado em linguagens como
XML, C, Python, Perl, assim como o formato de
correio eletrônico especificado pela RFC 2822.
O que é REST
83

Trata-se de uma abstração da arquitetura da


Web. Resumidamente, o REST consiste em
princípios/regras que, quando seguidas,
permitem a criação de um projeto com
interfaces bem definidas. Desta forma,
permitindo, por exemplo, que aplicações se
comuniquem.
E Restful....qual a diferença
84
Rest x Restful
85

Existe uma certa confusão quanto aos termos REST e


RESTful. Entretanto, ambos representam os mesmo
princípios. A diferença é apenas gramatical.

Em outras palavras, sistemas que utilizam os princípios


REST são chamados de RESTful.

•REST: conjunto de princípios de arquitetura

•RESTful: capacidade de determinado sistema aplicar


os princípios de REST.
HTTP - Verbos
86

• GET – Utilizado como parte da navegação para


baixar-se recursos (downloads).
• POST – Utilizado para enviar mensagens ao
servidor.
• PUT – Utilizado para enviar recursos ao servidor.
• DELETE – Utilizado para excluir-se recursos do
servidor.
• HEAD – Igual ao GET, mas sem o corpo da resposta.
HTTP - Verbos
87

• Idempotente – Se múltiplas requisições repetidas seguidas


forem efetuadas, o resultado é o mesmo de apenas uma
delas ser feita?
• Seguro (safe) – O método é seguro de ser usado sem que
produza efeitos colaterais possivelmente danosos ou
irreversíveis?
• Corpo – A requisição tem um conteúdo após os cabeçalhos?
E a resposta?
• Cacheável – Posso armazenar o resultado da requisição para
quando quiser repeti-la, eu pegar o resultado da cache ao
invés de contatar novamente o servidor?
HTTP - Verbos
88

Corpo na Corpo na
Verbo HTTP Idempotente Seguro Cacheável
requisição resposta

GET Não Sim Sim Sim Sim

POST Sim Sim Não Não Não

PUT Sim Sim Sim Não Não

DELETE Não Sim Sim Não Não

HEAD Não Não Sim Sim Sim


HTTP – Códigos de Status
89

• 2xx – Códigos de sucesso.


• 3xx – Códigos de redirecionamento/cache.
• 4xx – Códigos de erro. O “culpado” é o cliente.
• 5xx – Códigos de erro. O “culpado” é o servidor.

Exemplo: 400 significa que o cliente cometeu um erro. 404


significa que o cliente cometeu um erro específico: tentou
acessar uma página que não existe.

Posso sempre trocar um 404 (erro especifico do usuário) por


400 (erro genérico do usuário)
HTTP – Códigos de Status
90

• 2xx – Códigos de sucesso.


• 3xx – Códigos de redirecionamento/cache.
• 4xx – Códigos de erro. O “culpado” é o cliente.
• 5xx – Códigos de erro. O “culpado” é o servidor.

Exemplo: 400 significa que o cliente cometeu um erro. 404


significa que o cliente cometeu um erro específico: tentou
acessar uma página que não existe.

Posso sempre trocar um 404 (erro especifico do usuário) por


400 (erro genérico do usuário)
HTTP – Códigos de Status
91

• 200 – Ok.
• 202 – Ok, aceito para ser processado.
• 203 – Ok, mas a resposta vem de uma cache ou de um
terceiro, e não do servidor de origem.
• 204 – Ok, mas a resposta está vazia.
• 205 – Ok. O conteúdo deve ser atualizado.
• 301 – Redirecionamento de URLs.
• 302 – Redirecionamento temporário.
HTTP – Códigos de Status
92

• 400 – Requisição mal-formada.


• 401 – Autenticação não autorizada.
• 403 – Acesso proibido.
• 404 – Página não encontrada.
• 405 – Método HTTP não permitido nesse recurso.
• 410 – Recurso excluído/deletado.
• 413 – Payload grande demais.
• 422 – Requisição bem formada, porém inválida.
• 423 – Recurso bloqueado.
• 429 – Requisições em excesso.
• 451 – Indisponível por razões de censura politica.
HTTP – Códigos de Status
93

• 500 – Erro no servidor.


• 502 – Resposta inválida recebida de outro servidor.
• 503 – Serviço indisponível.
• 504 – Outro servidor não respondeu.
• 505 – Versão do HTTP não suportada.
• 507 – Espaço em disco insuficiente.

Para mais informações acesse: https://developer.mozilla.org/


Spring Framework
Spring
95

Definição – O que é Spring?


 O Spring é um conjunto de projetos modulares que
resolvem várias situações do cotidiano de um
desenvolvedor, ajudando a criar aplicações Java com
simplicidade e flexibilidade.
 É um ecossistema que cobre várias áreas de
desenvolvimento das quais podemos citar algumas:
 Desenvolvimento Web;
 Acesso a Banco de Dados;
 Segurança;
 Cloud Computing;
 Big data, e outras...
No próximo slide citaremos alguns módulos de desenvolvimento
do Spring!
Spring
96

Definição – O que é Spring?


 O Spring possui diversos módulos para os mais
diversos tipos de necessidades de desenvolvimento.
Abaixo são citados alguns essencialmente utilizados:
 Spring Framework: fornece suporte essencial para
aplicativos Web com MVC, acesso a dados, gerenciamento
de transações, injeção de dependências, entre outros;
 Spring Data: fornece uma abordagem mais consistente de
acesso a dados (relacional, não relacional,...)
 Spring Security: prover suporte de segurança ao aplicativo
(autenticação e autorização);
 Spring Boot: fornece todo um processo de automatização
de geração e configuração de projetos Spring;
 Para mais informações acesse: https://spring.io/projects
Spring
97

Definição – O que é Spring Framework?


 O Spring Framework é apenas um, dentre o

conjunto de módulos, que o Spring possui;


 É o módulo que serve de base para todos os outros;

 O Spring Framework foi pensado para que nossas

aplicações pudessem focar mais na regra de negócio


e menos na infraestrutura.
 Dentre suas principais funcionalidades, podemos
destacar:
 O Spring MVC;
 Suporte para JDBC, JPA;

 Injeção de dependências (Dependency injection – DI).


Spring
98

Como funciona o Spring MVC?


É muito semelhante ao MVC utilizado no dia-a-dia com a adição de alguns
passo:
http://localhost:8080/acad/aluno/lista

Controller: aluno
Chama o Controller
Método: lista
request adequado...
FrontController
Controller
(Dispatcher Servlet)
response Envia um objeto
encapsulando
Devolve o Solicita a Devolve Solicita
a lista e o
HTML resolução objeto lista...
nome da view
pronto da view lista...

View
Model
(Template resolver)
Gera a lista de alunos...
Spring
99

Vamos criar
uma aplicação
com Spring
utilizando:
• Spring Boot
• Spring MVC
• Hibernate
Spring
100

Anotações Spring
 A base de todo o funcionamento do Spring consiste

no conceito de metadados ou metainformação, ou


seja, diretivas que são empregadas no código como
um descritivo para que o Spring trate-o de alguma
forma ao executá-lo.
 Esses metadados podem ser declarados através de

arquivos XML ou anotações Java (aqueles @alguma


coisa).
 O Spring oferece um conjunto bastante amplo de

anotações para várias finalidades:


Spring
101

Anotações Spring
 @RestController

 A anotação Spring RestController é usada para criar serviços


da Web RESTful usando Spring MVC. O Spring
RestController cuida do mapeamento dos dados da
solicitação para o método do manipulador de solicitação
definido. Depois que o corpo da resposta é gerado a partir
do método do manipulador, ele o converte em resposta
JSON ou XML.
@RestController
public class AlunoController {

//métodos e atributos omitidos

}
Spring
102

Anotações Spring
 @RequestMapping

 Usada para mapear URLs de acesso a um controller e aos


métodos contidos nele. Também podemos definir verbos
HTTP (POST, GET, ...) de acesso aos métodos.
@RestController
@RequestMapping("/turma")
public class TurmaController {

@GetMapping
public String getLista() {
//Códigos do método
}

}
Spring
103

Anotações Spring
 O Spring possui também anotações que podem

substituir o uso de @RequestMapping:


 @GetMapping
◼ para mapeamento de requisições do tipo GET
 @PostMapping
◼ para mapeamento de requisições do tipo POST
 @PutMapping
◼ para mapeamento de requisições do tipo PUT
 @DeleteMapping
◼ para mapeamento de requisições do tipo DELETE
 @PatchMapping
◼ para mapeamento de requisições do tipo PATCH
Criando 1º programa pelo site
104

https://start.spring.io/
Criando 1º programa pelo site
105

Descompactar arquivo
Criando 1º programa
106

Importando Projeto
Criando 1º programa
107

Importando Projeto
Criando 1º programa
108

Importando Projeto
Criando 1º programa
109

Criando a partir da própria IDE


Spring
110

Anotações Spring
 @Component

 É uma anotação básica que indica que uma classe vai ser
gerenciada pelo container do Spring;
 Algumas anotações são derivadas desta.

@Component
public class ComputadorUtil {

//métodos e atributos omitidos

}
Spring
111

Anotações Spring
 @Repository

 É uma anotação derivada de @Component. Utilizada para a


camada de persistência. Normalmente anotamos classes
que representam um DAO, Repositório etc.

@Repository
public class ComputadorDao {

//métodos e atributos omitidos

}
Spring
112

Anotações Spring
 @Service

 É uma anotação derivada de @Component. Utilizada para a


camada de Serviços. Normalmente anotamos classes que
representam regras de negócios.

@Service
public class ComputadorService {

//métodos e atributos omitidos

}
Spring
113

Anotações Spring
 @Autowired

 É uma anotação utilizada para informar ao Spring que a


variável anotada deve ser injetada com um objeto do tipo
gerenciado
@Service
public class ComputadorService {

@Autowired
private ComputadorDao dao;

public void salvar(Computador computador) {


dao.saveOrUpdate(computador);
}
}
Spring
114

Anotações Spring
 @PathVariable

 Tem o objetivo de extrair da URL um parâmetro que foi


incluído como path da URL.
Seja a URL: http://localhost:8080/aluno/buscar/7

@Controller
@RequestMapping("/aluno")
public class AlunoController {

@GetMapping("/buscar/{id}")
public String buscar(@PathVariable("id") Long id) {
// códigos....
}

}
Spring
115

Anotações Spring
 @RequestParam

 Tem o objetivo capturar um parâmetro de consulta (Query


Param) enviado por uma solicitação.
Seja a URL: http://localhost:8080/turma/listagem?ano=2018

@Controller
@RequestMapping("/turma")
public class TurmaController {

@GetMapping("/listagem")
public String getTurmasPorAno(@RequestParam("ano") Integer ano) {
// códigos...
}
}
Referências Bibliográficas
116

Você também pode gostar