Desenvolvendo para WEB com JAVA

Post on 11-Jun-2015

2.835 views 3 download

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

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)

INTRODUÇÃO

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.

Plataformas

Java SE – Java Standard Edition

Java EE – Java Enterprise Edition

Java ME – Java Micro Edition

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

PRIMEIRO PROGRAMA

Primeiro programa

public class Primeiro {

public static void main(String args[]) { System.out.println(“Meu primeiro programa”); }

}

curso.app.Primeiro.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

ENCAPSULAMENTO

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

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

HERANÇA

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

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

REESCRITA

Reescrita

public class Acpiano extends Torcedor {

public void setTime(String time) { this.time = “ACP”; }

}

curso.entidades.Acpiano.java

Mesma assinatura no método

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

SOBRECARGA

Sobrecarga

...

// novo método

public void setNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; }

...

curso.entidades.Gente.java

Assinatura diferente no método

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

POLIMORFISMO

Polimorfismo

...

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

...

curso.entidades.Gente.java

Polimorfismo

public class Homem extends Gente {

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

}

curso.entidades.Homem.java

Polimorfismo

public class Mulher extends Gente {

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

}

curso.entidades.Mulher.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

CONTROLE DE FLUXO

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

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

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

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

Do...While

... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0);...

curso.fluxo.While.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

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

ARRAYS E COLEÇÕES

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

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

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

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

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

PERSISTÊNCIA

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

Persistência

Exemplo: JDBC (livraria)

- SQL Injection

- Fábrica de conexões

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

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)

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

WEB

Entendendo a WEB

Internet

Servidor Usuário

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

Conteúdo

Servlets ou JSP

Frameworks

- JSF

- Struts

- Spring

JSF

O framework

Agilidade

Componente prontos

XHTML Managed Beans Class Java

FaceletsComponentes visuais

BD

O framework

Exemplo: Loteria

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)

Componentes visuais

Exemplo: ComponentesVisuais

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)

Navegação

Exemplo: Navegação

Links

SLIDES

http://www.slideshare.com/wmagalhaes

BIBLIOTECAS

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

Contatos

Ricardo Rufino

E-mail/MSN: ricardo.rufino@yahoo.com.br

Willian Magalhães

E-mail/MSN: will_magalhaes@yahoo.com.br

BRIGADO