Você está na página 1de 28

Programação para Web 1

Introdução a Programação
do Lado do Servidor
Professor Vinícius Costa
Arquitetura da Web
•Baseada em 3 pilares
• HTML
• URL
• HTTP
URL

•protocolo://servidor:porta/caminho/recurso?parâmetros#anc
ora

•Exemplo:
• http://www.site.com.br:8080/produtos/promocao/livro.jsp?codigo=2
#conteudo
Comunicação Cliente Servidor

Cliente Internet Servidor


Comunicação Cliente Servidor
•Cliente
• Inicia a conexão com o servidor
• Solicita algo
•Servidor
• Fica esperando uma solicitação
• Responde ao cliente
Protocolo TCP/IP

Aplicação

Transporte

Rede

Enlace

Física
Web e protocolo TCP/IP
•Aplicação - HTTP
• Navegadores Web e Servidores Web se comunicam utilizando o
protocolo HTTP
•Transporte - TCP
•Rede - IP
•Enlace - Ethernet
•Física - Hardware
Protocolo HTTP
•É um protocolo da camada de aplicação
•É um protocolo cliente-servidor
• Base da comunicação entre navegadores e servidores Web
•Permite a obtenção de recursos, tais como documentos
HTML, imagens, CSS, XML, JSON, etc.
•É a base de qualquer troca de dados na Web
Protocolo HTTP
•Cliente HTTP – Ex.: Navegador
1. Abre uma conexão TCP
2. Envia uma requisição HTTP
GET / HTTP/1.1
...
3. Recebe a resposta HTTP do servidor
HTTP/1.1 200 OK
...
<html>...</html>

4. Fecha a conexão ( a conexão pode ser reutilizada para novas


requisições).
Protocolo HTTP
•Até a versão 1.1 do protocolo HTTP as mensagens eram
trocadas utilizando-se texto puro o que permitia a
leitura por humanos, na versão 2.0 os dados são
colocados dentro de estruturas binárias que não são
legíveis por humanos.
Mensagens HTTP

Requisição Resposta
Métodos HTTP
•GET
•HEAD
•POST
•PUT
•DELETE
•CONNECT
•OPTIONS
•TRACE
•PATCH
Simulado uma requisição com Telnet
•Telnet - protocolo de comunicação que serve para testar
conexões, trocar texto e simular terminal remoto.
•Telnet pode ser utilizado para simular um cliente
• Exemplo:
telnet www.google.com.br 80

Após abrir a conexão então faça a seguinte solicitação:


GET / HTTP/1.1
Socket
•Socket é a interface entre a camada de aplicação e a de
transporte dentro de uma máquina
•Socket é a forma que o sistema operacional permite a
aplicação, desenvolvida por nós, utilizar o protocolo
TCP/IP (pode ser utilizado outros protocolos).
•Com sockets pode se criar clientes ou servidores, a
grande diferença é que servidores ficam esperando por
conexões.
Um pequeno “servidor” HTTP com Socket
ServerSocket welcomeSocket = new ServerSocket(8080);
while(true)
{
Socket connectionSocket = welcomeSocket.accept();

BufferedReader infoDoCliente = new BufferedReader(new


InputStreamReader(connectionSocket.getInputStream()));
String mensagemDoCliente = infoDoCliente.readLine();
System.out.println(mensagemDoCliente);

DataOutputStream infoParaCliente = new


DataOutputStream(connectionSocket.getOutputStream());
infoParaCliente.writeBytes("HTTP/1.1 200 OK\n\n<h1>ola</h1>");
connectionSocket.close();
}
Servidor Web
•Um servidor Web recebe requisições HTTP e as
responde
•Exemplo:
• Quando uma solicitação chega em um servidor solicitando a
página "index.html"
• O servidor verifica se esta página existe e se existir gera uma
resposta colocando a página "index.html" no corpo da
resposta HTTP
• Se a página não existir o servidor irá criar uma resposta onde
o cabeçalho terá algo semelhante a:
HTTP/1.1 404 Not Found
CGI
•Common Gateway Interface
•Permite criar páginas web dinâmicas
•Possibilita que páginas sejam desenvolvidas em
diversas linguagens como C, Python, PHP, Shell, etc.
•Coloca-se um programa dentro do servidor web
•Quando o programa é solicitado pelo navegador o
servidor web executa-o e redireciona sua saída padrão
para a conexão web
CGI
• Exemplo utilizando o servidor Apache
• No diretorio: /etc/apache2/mods-enabled/ crie um link do arquivo
/etc/apache2/mods-available/cgi.load
• Edite o arquivo /etc/apache2/sites-enabled/000-default.conf acrescentando as
seguintes linhas antes de </VirtualHost>:

ScriptAlias /executavel/ /var/www/executavel/


<Directory "/var/www/executavel">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
• Restart o Apache: sudo service apache2 restart
CGI
•No diretorio /var/www/executavel/ coloque os
executaveis ou scripts
•Exemplo de CGI em C
#include<stdio.h>
int main()
{
printf("Content-type: text/html\n\n");
printf("<h1>ola mundo</h1>");
printf("<h2>Seja bem vindo</h2>");
return 0;
}
GlassFish
•GlassFish é a implementação de referência da
plataforma Java EE
•Dentre outras coisas o GlassFish tem um Container Web
que é a forma como o Java trabalha na Web, incluindo:
• Servlet
• JSP page
• JavaServer Faces Facelets page
GlassFish
•Iniciar GlassFish
• glassfish5/glassfish/bin/asadmin start-domain
•Parar GlassFish
• glassfish5/glassfish/bin/asadmin stop-domain
GlassFish
•Para testar coloque suas páginas HTML dentro do
diretorio:
• ... /glassfish5/glassfish/domains/domain1/docroot/
GlassFish – Projeto Web
•Para criar uma projeto no Java EE a estrutura de
diretórios deve ser a seguinte:
‐ Projeto
‐ paginas.html
‐ paginas.jsp
‐ estilos.css
‐ scripts.js
‐ WEB-INF
‐ classes
‐ classes.class
‐ web.xml
GlassFish - Exemplo de Projeto
GlassFish
•Para compilar um servlet é preciso informar o classpath
do javax.servlet-api.jar
• javac -classpath javax.servlet-api.jar nomedaclasse.java
•No GlassFish o javax.servlet-api.jar fica no diretório:
• Glassfish5/glassfish/modules/
•Os arquivos .jsp não precisam ser compilados
GlassFish - Fazendo Deploy
• Abra o console de administração web do GlassFish
• localhost:4848
• No painel “Common Task” clique em “Applications”
• Em seguida clique no botão Deploy
• Na página que se abre escolha o botão de rádio “Local
Packaged File or Directory That Is Accessible from GlassFish
Server”
• Clique no botão “Browse Folders”
• Escolha o diretório onde você criou sua aplicação
• No combo box “Type” escolha “Web Application”
• Clique no botão “OK”
GlassFish – Um pouco mais fácil
•Não é comum fazer uma aplicação web em Java de
forma manual pois as IDEs facilitam e agilizam muito o
serviço
Bibliografia
•https://developer.mozilla.org/pt-BR/docs/Web/HTTP
•http://pajeonline.blogspot.com/2008/09/fazendo-um-
http-get-via-telnet.html
•https://pt.wikibooks.org/wiki/Redes_de_computadores/Pr
ograma%C3%A7%C3%A3o_com_sockets
•http://www.eriklievaart.com/blog/cgi.html

Você também pode gostar