Java web
-
Upload
marcosvpcortes -
Category
Software
-
view
46 -
download
0
Transcript of Java web
![Page 2: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/2.jpg)
Agenda
● Apresentação● Conhecimentos Básicos● Frameworks
○ JSF○ Spring○ Hibernate
![Page 3: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/3.jpg)
Aplicações Java STI
CPD
![Page 4: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/4.jpg)
Aplicações Java STI
● Nossas aplicações Web são compostas por:
○ JSF como front-end
○ Spring como controlador de serviços e transações
○ Hibernate como ORM
![Page 5: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/5.jpg)
ArquiteturaView ModelController DB
![Page 6: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/6.jpg)
Conceitos BásicosIOC / IC
FrameworkEscopo
![Page 7: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/7.jpg)
IOC - Inversion Of Control
● O fluxo de controle da aplicação é da biblioteca e não ao programador
● Uma biblioteca deste tipo pode ser considerado um framework
Exemplo:
Jogo extends JogoFramework{ @Override public void update(){ …. }
@Override public void draw(){ …. }}
![Page 8: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/8.jpg)
DI - Dependency Injection
O programador não deve se preocupar em criar a estrutura da aplicação, cabendo ao framework construí-la usando arquivos de configuração (XML) ou anotações
Exemplo:class pessoa{ @Inject List<Objetos> listObjetos;}
![Page 9: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/9.jpg)
DI (exemplo)
Aplicação
ImpressaoService
EmailService
![Page 10: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/10.jpg)
DI (exemplo)
class Aplicacao{Impressora impressora;Email email;void main(String[] args){
impressora = new Impressora(a, b, ?, ?); email = new Email(?, #, %, …);
impressora.imprime(x); email.envia(x);}
![Page 11: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/11.jpg)
DI (exemplo)
class Aplicacao{@Inject Impressora impressora;@Inject Email email;
main(){impressora.imprime(x);email.envia(x);
}
![Page 12: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/12.jpg)
DI - Container
Container
impressora
@Inject
retorna objeto
![Page 13: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/13.jpg)
DI - Tempo de Vida
“Quanto tempo” vive um objeto no container?● Sempre é criado um novo;● Enquanto existe uma criação no banco;● Durante toda a aplicação;● Enquanto meu personagem está no mesmo
cenário;
![Page 14: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/14.jpg)
DI - Exemplos
● O CDI é a especificação de DI de java definida pelas JSR-299 e JSR-330
Implementação Foco Limitações
Spring Framework Web com DI
● Não implementa totalmente o CDI● Containers de Aplicação não o
suportam nativamente● Pode ser muita coisa para quem só
deseja usar DI
Guice Somente DI ● Containers de Aplicação não o suportam
● Pode ser pouca coisa se você quer algo além de DI
Weld Implementação de referência CDI
● Quase ninguém usa
![Page 15: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/15.jpg)
JSF, Spring e Hibernate
![Page 16: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/16.jpg)
O que é JSF?
Framework stateful e orientado a componentes para camadas view e controller
de aplicações web
![Page 17: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/17.jpg)
Vantagens/Desvantagens
● Poderoso● Flexível● Abstração das
tecnologias web● Facilidade em criar
ferramentas● Biblioteca de
componentes● Suporta acessibilidade,
internalização e multilinguística
● Padrão definido na industria
● Complexo e as vezes desnecessário
● Padrão diferente dos frameworks por ação (Rails, Struts, …)
● Não aproveita REST do HTTP
● Somente a versão 1.2 foi estável.
● Por ser stateful, é mais lento e consome mais memória
Des-mytifying Java ServeFaces - Ed Burns
![Page 18: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/18.jpg)
Vantagens/Desvantagens
● “Simula” uma aplicação desktop, onde existe estado da View
● Componentes prontos. Se não há necessidade de customização. O desenvolvimento é acelerado
● Pode ter problemas de desempenho ao manter o estado da View
● Dificuldade de customização de componentes
![Page 19: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/19.jpg)
Arquitetura JSF
FacesServlet
Front-Controller
Manager Beans(Controllers)
XHTML/Facelets(Views)
![Page 20: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/20.jpg)
Fases JSFRestore
View
Apply Request Values
Process Validations
Update Model Values
Invoke Application
Render Response
![Page 21: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/21.jpg)
Managed Bean
LoginController
String nome;String senha;
public void login(String nome, String senha);
![Page 22: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/22.jpg)
Facelets
![Page 23: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/23.jpg)
Escopo
Req
uest
Sco
pe
Ses
sion
Sco
pe
App
licat
ionS
cope
Vie
wS
cope
![Page 24: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/24.jpg)
O que é Spring?
![Page 25: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/25.jpg)
Spring
“Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.”
http://docs.spring.io/spring/docs/3.0.x/reference/overview.html
![Page 26: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/26.jpg)
Spring
O que usamos?● DI● Controlar Transações e Wrapper do
Hibernate
![Page 27: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/27.jpg)
Spring - Bean
Bean no Spring é um POJO que é carregado no contexto de aplicação do Spring (container DI) e terá seu ciclo de vida gerenciado de acordo com um scopo determinado
● singleton – Return a single bean instance per Spring IoC container● prototype – Return a new bean instance each time when requested● request – Return a single bean instance per HTTP request. *● session – Return a single bean instance per HTTP session. *● globalSession – Return a single bean instance per global HTTP session. *
![Page 28: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/28.jpg)
Spring - Transaction
O Spring abstrai o conceito de transação permitindo definir métodos transacionais com a anotação @Transactional
@Transactionalpublic void doSomething(){…}
![Page 29: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/29.jpg)
HIbernate
Primeiro ORM em java e o mais usado atualmente
![Page 30: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/30.jpg)
Hibernate@Entity(name = "conta")public class Conta implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id;
@Column private String nome; //GETTER E SETTERS}
![Page 31: Java web](https://reader031.fdocumentos.com/reader031/viewer/2022020110/55beb999bb61eba41d8b45be/html5/thumbnails/31.jpg)
Hibernate
obtemContas(){Session s = getSessionFactory().
getCurrentSession();
return s.createQuery("FROM pessoa").list();
}