desenvolvendo para web com java
DESCRIPTION
Material utilizado durante o curso de Desenvolvendo para WEB com JAVA, realizado na UNIPAR campus Paranavaí em julho de 2011.TRANSCRIPT
![Page 1: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/1.jpg)
Desenvolvendo para WEB com
JAVA
![Page 2: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/2.jpg)
Quem somos?
Ricardo Ribeiro RufinoBacharel em Sistemas de Informação (UNIPAR 2010)Pós-graduando em Des. de Sistemas OO em Java (CESUMAR)
Willian MagalhãesBacharel em Sistemas de Informação (UNIPAR 2007)
Especialista em Des. de Sistemas para WEB (UEM 2010)
![Page 3: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/3.jpg)
INTRODUÇÃO
![Page 4: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/4.jpg)
O que é Java?
Uma linguagem de programação orientada à objetos
multiplataforma, criada na década de 90 pela
Sun Microsystems e atualmente é mantida pela
Oracle.
![Page 5: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/5.jpg)
Plataformas
Java SE – Java Standard Edition
Java EE – Java Enterprise Edition
Java ME – Java Micro Edition
![Page 6: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/6.jpg)
Conceitos básicos
JRE – Java Runtime Enviroment (APIs + JVM)
JVM – Java Virtual Machine
JDK – Java Developer Kit (compilador + bibliotecas)
Bytecode
Bytecode JAVA
JVM
Sistema Operacional
Classe JAVA Compilador JAVA
![Page 7: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/7.jpg)
PRIMEIRO PROGRAMA
![Page 8: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/8.jpg)
Primeiro programa
public class Primeiro {
public static void main(String args[]) { System.out.println(“Meu primeiro programa”); }
}
curso.app.Primeiro.java
![Page 9: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/9.jpg)
Variáveis
Primitivas (valor na memória)
- boolean, char, int, long, float, double
Referência (endereço de memória)
- Boolean, Character, String, Integer, Long, Float, Double
public class Gente {
private String nome; private int idade;
}
curso.entidades.Gente.java
![Page 10: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/10.jpg)
ENCAPSULAMENTO
![Page 11: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/11.jpg)
Encapsulamento
Default (mesmo pacote)
Public (qualquer um acessa)
Private ( somente dentro da classe - getters / setters)
... public void setNome(String nome) { this.nome = nome; }
public String getNome() { retur this.nome; }...
curso.entidades.Gente.java
![Page 12: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/12.jpg)
Encapsulamento
public class Principal { public static void main(String[] args) { Gente g = new Gente(); g.setNome("Willian"); g.setIdade(10); System.out.printf("Olá %s, você tem %d anos de idade.\n", g.getNome(), g.getIdade()); } }
curso.app.Principal.java
![Page 13: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/13.jpg)
HERANÇA
![Page 14: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/14.jpg)
Herança
public class Torcedor extends Gente {
private String time;
public void setTime(String time) { this.time = time; }
public String getTime() { return this.time; }
}
curso.entidades.Torcedor.java
![Page 15: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/15.jpg)
Herança
public class Principal { public static void main(String[] args) { Torcedor t = new Torcedor(); t.setNome("Willian"); t.setTime(“ACP"); System.out.printf("%s é torcedor do time %s.\n", t.getNome(), t.getTime()); } }
curso.app.Principal.java
![Page 16: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/16.jpg)
REESCRITA
![Page 17: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/17.jpg)
Reescrita
public class Acpiano extends Torcedor {
public void setTime(String time) { this.time = “ACP”; }
}
curso.entidades.Acpiano.java
Mesma assinatura no método
![Page 18: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/18.jpg)
Reescrita
public class Principal { public static void main(String[] args) { Acpiano a = new Acpiano(); a.setTime(“Cianorte"); System.out.printf("%s é meu time.\n", t.getTime()); } }
curso.app.Principal.java
![Page 19: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/19.jpg)
SOBRECARGA
![Page 20: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/20.jpg)
Sobrecarga
...
// novo método
public void setNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; }
...
curso.entidades.Gente.java
Assinatura diferente no método
![Page 21: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/21.jpg)
Sobrecarga
public class Principal { public static void main(String[] args) { Gente g = new Gente(); g.setNome("Willian", "Magalhães"); System.out.printf("Meu nome: %s.\n", g.getNome());
} }
curso.app.Principal.java
![Page 22: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/22.jpg)
POLIMORFISMO
![Page 23: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/23.jpg)
Polimorfismo
...
public void dormir() { System.out.println(“GENTE dormindo zzz..."); }
...
curso.entidades.Gente.java
![Page 24: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/24.jpg)
Polimorfismo
public class Homem extends Gente {
public void dormir() { System.out.println(“HOMEM dormindo zzz..."); }
}
curso.entidades.Homem.java
![Page 25: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/25.jpg)
Polimorfismo
public class Mulher extends Gente {
public void dormir() { System.out.println(“MULHER dormindo zzz..."); }
}
curso.entidades.Mulher.java
![Page 26: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/26.jpg)
Sobrecarga
public class Principal {
public void fazerDormir( Gente gente ) { gente.dormir(); } public static void main(String[] args) {
Principal p = new Principal();p.fazerDormir( new Gente() );p.fazerDormir( new Homem() );p.fazerDormir( new Mulher() );
} }
curso.app.Principal.java
![Page 27: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/27.jpg)
CONTROLE DE FLUXO
![Page 28: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/28.jpg)
If-Else
... int idade = 15; boolean amigoDoDono = true;
if (idade >= 18 || amigoDoDono == true) {
System.out.println(“Pode entrar”);
} else {
System.out.println(“Não pode entrar”);
}...
curso.fluxo.IfElse.java
![Page 29: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/29.jpg)
Switch
... int nota = 4; switch (nota / 10) { case 10 : System.out.println("ÔÔÔ NERD! :)"); break; case 9 : System.out.println("Ótimo."); break; case 8 : System.out.println("Bom."); break;
curso.fluxo.Switch.jSwitchava 1/2
![Page 30: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/30.jpg)
Switch
case 7 : System.out.println("Pode ser melhor que isso."); break; case 6 : System.out.println("UFAA! quase, quase einn..."); break; default : System.out.println("Ihh, faiô! :("); break; }...
curso.fluxo. Switch.java 2/2
![Page 31: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/31.jpg)
While
... int idade = 14; while (idade < 18) { System.out.printf("Com %d eu sou de menor.\n", idade); idade++;
} System.out.printf("Com %d eu sou de MAIOR.\n", idade);...
curso.fluxo.While.java
![Page 32: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/32.jpg)
Do...While
... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0);...
curso.fluxo.While.java
![Page 33: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/33.jpg)
For
... for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); } }...
curso.fluxo.For.java
![Page 34: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/34.jpg)
Controlando loops
... int paraNaTabuadaDo = 3;
for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); }
if (i == paraNaTabuadaDo) { break; } }
curso.fluxo.For.java
![Page 35: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/35.jpg)
ARRAYS E COLEÇÕES
![Page 36: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/36.jpg)
Arrays
... Torcedor[] torcida = new Torcedor[3]; Torcedor t = new Torcedor(); t.setNome("Carlos"); torcida[0] = t; System.out.println(torcida[0].getNome()); torcida[1] = new Torcedor(); torcida[1].setNome("Juca"); System.out.println(torcida[1].getNome());...
curso.arrays.Array.java
torcedores nomeCarlos
Torcedor
nomeCarlos
Torcedor
null
![Page 37: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/37.jpg)
Percorrendo Arrays
... // fixa for (int i = 0; i < 3; i++) { System.out.println(torcida[i].getNome()); }
// dinâmica for (int j = 0; j < torcida.length; j++) { System.out.println(torcida[j].getNome()); }...
curso.arrays.Array.java
![Page 38: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/38.jpg)
Collections framework
Utilizando arrays
- Não podemos redimensionar um array (falta de espaço)
- É impossível buscar um item diretamente quando não sabemos
o índice
- Não conseguimos saber quantas posições já foram ou estão
populadas (sem métodos auxiliares)
API Collections
- Possuí estruturas avançadas que facilitam o manuseio das
informações
![Page 39: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/39.jpg)
Listas
... ArrayList nomes = new ArrayList(); nomes.add("Juca"); nomes.add("Carlos"); for (int i = 0; i < nomes.size(); i++) { System.out.println(nomes.get(i)); }
if(nomes.contains("Carlos")) { System.out.println("tem"); } else { System.out.println("não tem"); }...
curso.entidades.Listas1.java
ArrayList NÃO é um Array
![Page 40: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/40.jpg)
Listas com Generics
... Torcedor t1 = new Torcedor(); t1.setNome("Juca"); Torcedor t2 = new Torcedor(); t2.setNome(“Carlos"); List<Torcedor> torcedores = new ArrayList<Torcedor>(); torcedores.add(t1); torcedores.add(t2); for (int i = 0; i < torcedores.size(); i++) { System.out.println(torcedores.get(i).getNome()); }...
curso.entidades.Listas1.java
![Page 41: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/41.jpg)
PERSISTÊNCIA
![Page 42: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/42.jpg)
Persistência
JDBC (Java Database Connectivity)
- Generaliza a interface com os bancos de dados
JDBC Driver Manager
Aplicação JAVA
JDBC API
JDBC Driver
MYSQL
JDBC Driver
Postgres
JDBC Driver
Oracle
![Page 43: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/43.jpg)
Persistência
Exemplo: JDBC (livraria)
- SQL Injection
- Fábrica de conexões
![Page 44: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/44.jpg)
Persistência
JPA2 e Hibernate
- Problemas
- Múltiplas sintaxes da linguagem SQL
- Orientação à Objetos x Modelo Entidade Relacionamento
- Ferramentas ORM (Object Relational Mapper)
- JPA (Java Persistente API) – especificação / visa padronizar
- Hibernate – framework ORM
![Page 45: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/45.jpg)
Persistência
Exemplo: JPA2-Hibernate (livraria)
- Notações (principais)
- @Entity – indica que se a classe será persistida no banco
Aplicação antes da declaração da classe
- @Id – indica atributo como chave primária
Aplicação antes da declaração do atributo
- @GeneratedValue – indica que o atributo é auto-increment
Aplicação depois do @Id
@GeneratedValue(strategy = GenerationType.AUTO)
![Page 46: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/46.jpg)
Persistência- @Table – indica o nome da tabela (antes do @Entity)
Aplicação antes do @Entity
@Table(name="Publisher")
- @Column – indica um nome para o atributo e algumas restrições
Aplicação antes da declaração do atributo
@Column(name="publisher_name", nullable=false)
- @Transient – in dica qual atributo não serão mapeados para
colunas
Aplicação antes da declaração do atributo
![Page 47: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/47.jpg)
WEB
![Page 48: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/48.jpg)
Entendendo a WEB
Internet
Servidor Usuário
![Page 49: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/49.jpg)
Servidor
Web Container
- Fornece recursos necessários para a interação Web
- Envio e recebimento de mensagens HTTP
- Acesso simultâneo
- Tomcat e Jetty
Servidores de aplicação
- JBoss, Glassfish, WebSphere
![Page 50: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/50.jpg)
Conteúdo
Servlets ou JSP
Frameworks
- JSF
- Struts
- Spring
![Page 51: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/51.jpg)
JSF
![Page 52: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/52.jpg)
O framework
Agilidade
Componente prontos
XHTML Managed Beans Class Java
FaceletsComponentes visuais
BD
![Page 53: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/53.jpg)
O framework
Exemplo: Loteria
![Page 54: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/54.jpg)
Componentes visuais
Componentes visuais
- Facilitam nossa vida
- Variedades de componentes em sua especificação
- Arquitetura de componentes visuais JSF permite criação de
novos
- PrimeFace (http://www.primefaces.org/)
- RichFaces (http://www.jboss.org/richfaces)
![Page 55: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/55.jpg)
Componentes visuais
Exemplo: ComponentesVisuais
![Page 56: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/56.jpg)
Navegação
Navegação estática implícita
- nome da página
Navegação estática explicita
- faces-config.xml
Navegação dinâmica implícita
- Bean retorna nome da página
Navegação dinâmica explicita
- Bean retora nome (faces-config.xml)
![Page 57: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/57.jpg)
Navegação
Exemplo: Navegação
![Page 58: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/58.jpg)
Bibliografia
LIVROS
- Java como Programar
SITES
- http://www.algaworks.com/
- http://www.caelum.com.br/apostilas/
- http://www.k19.com.br/
![Page 59: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/59.jpg)
Links
SLIDES
http://www.slideshare.com/wmagalhaes
BIBLIOTECAS
http://www.megaupload.com/?d=5CIYLRG9
![Page 60: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/60.jpg)
Contatos
Ricardo Rufino
E-mail/MSN: [email protected]
Willian Magalhães
E-mail/MSN: [email protected]
![Page 61: Desenvolvendo para WEB com JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062405/55799b3bd8b42ae72b8b52bb/html5/thumbnails/61.jpg)
BRIGADO