Desenvolvendo para WEB com JAVA

61
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 of Desenvolvendo para WEB com JAVA

Page 1: Desenvolvendo para WEB com JAVA

Desenvolvendo para WEB com

JAVA

Page 2: Desenvolvendo para WEB com JAVA

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

INTRODUÇÃO

Page 4: Desenvolvendo para WEB com JAVA

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

Plataformas

Java SE – Java Standard Edition

Java EE – Java Enterprise Edition

Java ME – Java Micro Edition

Page 6: Desenvolvendo para WEB com JAVA

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

PRIMEIRO PROGRAMA

Page 8: Desenvolvendo para WEB com JAVA

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

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

ENCAPSULAMENTO

Page 11: Desenvolvendo para WEB com JAVA

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

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

HERANÇA

Page 14: Desenvolvendo para WEB com JAVA

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

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

REESCRITA

Page 17: Desenvolvendo para WEB com JAVA

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

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

SOBRECARGA

Page 20: Desenvolvendo para WEB com JAVA

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

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

POLIMORFISMO

Page 23: Desenvolvendo para WEB com JAVA

Polimorfismo

...

public void dormir() { System.out.println(“GENTE dormindo zzz..."); }

...

curso.entidades.Gente.java

Page 24: Desenvolvendo para WEB com JAVA

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

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

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

CONTROLE DE FLUXO

Page 28: Desenvolvendo para WEB com JAVA

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

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

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

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

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

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

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

ARRAYS E COLEÇÕES

Page 36: Desenvolvendo para WEB com JAVA

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

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

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

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

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

PERSISTÊNCIA

Page 42: Desenvolvendo para WEB com JAVA

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

Persistência

Exemplo: JDBC (livraria)

- SQL Injection

- Fábrica de conexões

Page 44: Desenvolvendo para WEB com JAVA

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

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

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

WEB

Page 48: Desenvolvendo para WEB com JAVA

Entendendo a WEB

Internet

Servidor Usuário

Page 49: Desenvolvendo para WEB com JAVA

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

Conteúdo

Servlets ou JSP

Frameworks

- JSF

- Struts

- Spring

Page 51: Desenvolvendo para WEB com JAVA

JSF

Page 52: Desenvolvendo para WEB com JAVA

O framework

Agilidade

Componente prontos

XHTML Managed Beans Class Java

FaceletsComponentes visuais

BD

Page 53: Desenvolvendo para WEB com JAVA

O framework

Exemplo: Loteria

Page 54: Desenvolvendo para WEB com JAVA

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

Componentes visuais

Exemplo: ComponentesVisuais

Page 56: Desenvolvendo para WEB com JAVA

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

Navegação

Exemplo: Navegação

Page 59: Desenvolvendo para WEB com JAVA

Links

SLIDES

http://www.slideshare.com/wmagalhaes

BIBLIOTECAS

http://www.megaupload.com/?d=5CIYLRG9

Page 60: Desenvolvendo para WEB com JAVA

Contatos

Ricardo Rufino

E-mail/MSN: [email protected]

Willian Magalhães

E-mail/MSN: [email protected]

Page 61: Desenvolvendo para WEB com JAVA

BRIGADO