Java Net: Interagindo com a Internet
-
Upload
ricardo-terra -
Category
Education
-
view
131 -
download
2
Transcript of Java Net: Interagindo com a Internet
![Page 1: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/1.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Java NET: Interaja com a Internet
Ricardo Terra rterrabh [at] gmail.com
Java NET: Interaja com a Internet 1
![Page 2: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/2.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
CV
Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1)
Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
Java NET: Interaja com a Internet 2 Maio, 2011
![Page 3: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/3.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Objetivo do Mini-curso
§ Entendendo o Funcionamento da Web § HTTPS
§ Entendendo File e Stream
§ API Java Net § Baixar o conteúdo de um recurso (página, imagem etc) § Submeter formulários
§ Ataque por Força Bruta
§ Desenvolvimento de Aplicações § MyDownload § MyPageChecker
3
![Page 4: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/4.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Entendendo o Funcionamento da Web
Java NET: Interaja com a Internet 4
![Page 5: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/5.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Funcionamento da Web – HTTP e HTML
§ A maioria das conversas que ocorre na web entre clientes e servidores são mantidas através do protocolo HTTP, que possibilita conversas de requisição e resposta
§ O cliente envia uma requisição HTTP e o servidor retorna uma resposta HTTP § Enfim, se você é um servidor web você fala HTTP
§ Portanto, uma conversação HTTP é uma sequência de requisição/resposta § Isto é, o cliente pede uma coisa, o servidor responde, o cliente pede
outra coisa, o servidor responde...
5
![Page 6: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/6.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Funcionamento da Web
§ Requisição e resposta:
6
![Page 7: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/7.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Cliente e Servidor / HTTP e HTML
§ Quando um servidor responde a uma solicitação, ele geralmente envia algum tipo de conteúdo para o browser, para que esse possa exibí-lo § O formato HTML é o formato mais comum enviado como resposta
para um cliente pelo Servidor, pois esse é facilmente lido pelo browser no cliente
§ Informação presente no content-type no cabeçalho HTTP § text/html!§ text/plain!§ application/pdf!§ image/jpeg!§ ... !
7
![Page 8: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/8.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Cliente e Servidor / HTTP e HTML
§ O HTTP é um protocolo da camada de aplicação que tem características específicas para a web, mas ele depende de toda a arquitetura TCP/IP para garantir que tanto a solicitação e quanto a resposta sejam transmitidas entre o cliente e o servidor
TOPO DO TCP/IP
8
![Page 9: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/9.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Principais elementos do fluxo de requisição: § método HTTP § endereço da página (URL) que está sendo acessada § parâmetros do formulário
§ Principais elementos do fluxo de resposta: § cabeçalho
§ código de status § Método HTTP § tipo do conteúdo (texto, imagem, HTML...)
§ conteúdo (o texto, a imagem, o HTML...)
9
![Page 10: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/10.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Requisição HTTP § A primeira coisa que você encontrará é o nome do método HTTP
§ O nome do método informa ao servidor o tipo de solicitação que está sendo feita e como o resto da mensagem será formatada.
§ O protocolo HTTP possui diversos métodos, mas usaremos e aprenderemos os mais comuns: GET e POST
10
![Page 11: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/11.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Método GET § É o método mais simples do HTTP e seu principal trabalho é pedir
um recurso § Pode ser qualquer tipo de recurso: uma página, uma imagem, um PDF,
etc
§ O caminho até o recurso e quaisquer parâmetros adicionados à URL serão incluídos na própria barra de endereços
§ Podemos usar o GET para formulários, porém com desvantagens: § O total de caracteres do GET é limitado § Os dados que você envia utilizando HTTP GET são anexados à URL,
portanto, seja o que for que você estiver transmitindo, ficará exposto
11
![Page 12: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/12.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Método POST § É um método mais poderoso. É um GET++. Com o POST, você
pode solicitar algo e, ao mesmo tempo, enviar os dados de um formulário para o servidor
§ Os dados a serem enviados ao servidor estão localizados na carga útil (payload) da mensagem e podem ser bem extensos
Pacote IPv4
§ Por isto, o POST é considerado mais seguro que o GET
12
![Page 13: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/13.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Enfim, para acesso a recursos utiliza-se GET e aplicações que utilizam formulários utiliza-se POST
13
![Page 14: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/14.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Requisição e resposta
§ Resposta HTTP § uma resposta HTTP é composta de um cabeçalho (header) e o
corpo § o cabeçalho informa ao browser o método que está sendo utilizado, se
a solicitação obteve êxito (código) e o tipo de conteúdo está incluído no corpo
§ corpo possui o conteúdo (por exemplo, HTML) que o browser exibirá
§ o código pode ser: § 1xx: Informativa: requisição recebida, processo em continuidade… § 2xx: Sucesso: a ação foi recebida, entendida e aceita com sucesso § 3xx: Redirecionamento: ação futura ainda deve ser tomada para
completar a requisição § 4xx: Erro no cliente: requisição contém sintaxe incorreta ou não pode
ser resolvida § 5xx: Erro no servidor: O servidor falhou ao responder uma aparente
requisição válida
14
![Page 15: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/15.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 15 Java NET: Interaja com a Internet
HTTPS
§ E o HTTPS? Se utilizarmos, nossa aplicação é segura?!
![Page 16: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/16.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Entendendo File e Stream
Java NET: Interaja com a Internet 16
![Page 17: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/17.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
API Java Net
§ Antes de entrarmos na API Java Net, os seguintes pré-requisitos devem ser abordados: § Classe File
§ Streams
§ Assim, esta seção apresenta uma visão geral desses assuntos
17
![Page 18: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/18.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Classe java.io.File!
§ Classe responsável em realizar métodos em arquivos físicos. Para se construir um objeto do tipo File, deve saber o nome completo do arquivo. Caso o arquivo esteja na raiz do workspace pode apenas passar o nome do arquivo
§ Caso se passe o nome de um arquivo que não existe, este é criado na primeira necessidade
§ Exemplo: § new File("C:\\pasta\\meuArquivo.txt")!§ new File("meuArquivoNoWorkspace.txt")!§ new File(”/dev/etc/xpto.txt”)!§ new File(”/bin")!
Java NET: Interaja com a Internet 18
![Page 19: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/19.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Classe java.io.File
§ Trabalhando com um arquivo: File fileTexto = new File("arquivoTexto.txt");!!System.out.println("Nome do arquivo: " + fileTexto.getName());!!System.out.println("O arquivo existe? " + fileTexto.exists());!!System.out.println(”Diretório? " + fileTexto.isDirectory());!
!if (fileTexto.isFile()) {!! !System.out.println("É um arquivo do diretório: " !! ! !+ fileTexto.getAbsolutePath());!!}!!System.out.println("Posso ler? " + fileTexto.canRead());!!S y s t e m . o u t . p r i n t l n ( " P o s s o e s c r e v e r ? " + fileTexto.canWrite());!
§ Enfim, classe File não manipula arquivos... § Então, quem manipula?! Streams...
!Java NET: Interaja com a Internet 19
![Page 20: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/20.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§ Java fornece uma interface consistente ao programador, independente do dispositivo real que é acessado
§ Essa abstração é chamada stream e o dispositivo real pode ser: § arquivo (file) § impressora § socket § Internet § …
§ Em outras palavras, você trabalha com qualquer dispositivo do mesmo modo (com certas limitações)
Java NET: Interaja com a Internet 20
![Page 21: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/21.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§ Basicamente, existem dois principais tipos de streams: § stream de texto
§ Manipula caracteres
§ Leitura: Reader!§ Escrita: Writer!
§ stream binário § Manipula bytes
§ Leitura: InputStream!§ Escrita: OutputStream
Java NET: Interaja com a Internet 21
![Page 22: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/22.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams!
Java NET: Interaja com a Internet 22
![Page 23: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/23.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Streams
§ Devido ao foco do curso, não colocarei exemplos de uso
§ O conhecimento necessário será absorvido durante as explicações da próxima seção (on-the-fly)
Java NET: Interaja com a Internet 23
![Page 24: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/24.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
Java NET: Interaja com a Internet 24
![Page 25: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/25.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§ API completa desenvolvida pela Oracle / Sun para acessos à Internet
§ Com essa API podemos: § Buscar recursos web (página HTML, por exemplo) § Submeter formulários
§ Nos próximos slides veremos alguns exemplos básicos da utilização dessa API
Java NET: Interaja com a Internet 25
![Page 26: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/26.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§ Acessando um site § Lendo do InputStream da URLConnection!
§ Projeto JavaNet: com.terra.exemplos.RecursoHTML!
§ O conteúdo retornado é uma HTML, isto é, texto!
§ Logo, qual o papel de um browser?
Java NET: Interaja com a Internet 26
![Page 27: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/27.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§ Só com o que já sabemos, podemos baixar qualquer conteúdo e salvá-lo em disco (espécie de um programa de download)
§ Baixando um recurso (imagem ou pdf, por exemplo): § Lendo do InputStream da URLConnection § Escrevendo no OutputStream de um arquivo!
§ Projeto JavaNet: com.terra.exemplos.SalvarRecurso!
Java NET: Interaja com a Internet 27
![Page 28: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/28.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
API Java Net
§ Submetendo um formulário § Descobrir url do formulário e nome dos seus campos
§ Antes da submissão § Uso de URLEncoder para passagem de parâmetros § Escrita no OutputStream da URLConnection!
§ Depois da submissão § Lendo do InputStream da URLConnection!
§ Projeto JavaNet: com.terra.exemplos.Formulario! Java NET: Interaja com a Internet 28
![Page 29: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/29.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Ataque por Força Bruta
Java NET: Interaja com a Internet 29
![Page 30: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/30.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Força Bruta
§ Tentar todas as possibilidades...
30
![Page 31: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/31.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Força Bruta
§ Exemplo Motivador: SINEF
§ Técnicas para evitar § Limite de Tentativas
§ Você utilizou 5 tentativas. Usuário bloqueado.
§ Tempo de Ociosidade § Você utilizou 5 tentativas. Usuário bloqueado por 30 minutos.!
§ Imagem
31
![Page 32: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/32.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Força Bruta
§ Como fazer? § Descobrir o formulário e o nome do seus campos § Bolar um algoritmo para gerar todas as combinações § Ir tentando…
§ Tome cuidado que é possível descobrí-lo pelo seu IP
§ Não use para o mal: § www.peladeiro.com.br § qualquer outro... deixo com vocês...
Java NET: Interaja com a Internet 32
![Page 33: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/33.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
Java NET: Interaja com a Internet 33
![Page 34: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/34.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§ Acho que já foi possível notar que o mais legal da API Java Net não é acessar à Internet, mas sim, as aplicações que pode gerar
§ Nesta seção, faremos a criação de dois aplicativos: § MyDownload
§ Programa para fazer download pela Internet
§ MyPageChecker § Programa para verificar se houve alterações em
uma determinada página
Java NET: Interaja com a Internet 34
![Page 35: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/35.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§ MyDownload § Programa para fazer download pela Internet
§ Algo como:
§ Pacotes: § com.terra.mydownload.{thread,gui,main}!
Java NET: Interaja com a Internet 35
![Page 36: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/36.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Desenvolvimento de Aplicações
§ MyPageChecker § Programa para verificar se houve alterações em uma
determinada página
§ Algo como:
§ Pacotes: § com.terra.mypagechecker.{thread,gui,main}!
Java NET: Interaja com a Internet 36
![Page 37: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/37.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011
Considerações Finais
Java NET: Interaja com a Internet 37
![Page 38: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/38.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Considerações Finais
§ Use para o BEM!!!
38
![Page 39: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/39.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Dúvidas?
???
39
![Page 40: Java Net: Interagindo com a Internet](https://reader031.fdocuments.in/reader031/viewer/2022020208/55aef9431a28ab260a8b481f/html5/thumbnails/40.jpg)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2011 Java NET: Interaja com a Internet
Ricardo Terra rterrabh [at] gmail.com
Apresentação e projeto Java disponíveis em:
www.ricardoterra.com.br/palestras
Principais referências bibliográficas: HORSTMANN, C; CORNELL, G. Core Java: Volume 1 – Fundamentos. 8 ed. São Paulo: Pearson, 2010.
DEITEL, P; DEITEL, H. Java: Como Programar. 8 ed. São Paulo: Pearson, 2010.
Obrigado!
40