desenvolvimento de sistemas web módulo ii: programação ...jair/webprog/fundamentos.pdf · z...

34
Desenvolvimento de Sistemas Web Módulo II: Programação lado- servidor Modelo Cliente-Servidor Solicita serviço Envia resultado Cliente Usuário Servidor Rede

Upload: hoangnhi

Post on 28-Jan-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

Desenvolvimento de Sistemas Web

Módu lo II: Programação lado-

servidor

����������� � ������� � ���������������� � ! "#���%$��&��'�! ��$�� "#(�� )+* , - . /�021�3 4 3�576 8�9#4 8�:�3 ; <�=�> ? @ A�B�>

Modelo Cliente-Servidor

Solicita serviço

Envia resultado

ClienteUsuário Servidor Rede

Page 2: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias que implementam estes modelos

z HyperText Markup Language (HTML)– Linguagem que permite definir a estrutura de um

documento a ser exibido por um browser

z Uniform Resource Identifiers (URI)– Esquema pelo qual os recursos da internet são

endereçados

z HyperText Transfer Protocol (HTTP)– Protocolo que define a interação entre um browser

(cliente) e um servidor de documentos hipertextuais.

/�0�1�1�23�4 5 6�7�8�9 5 :�9; 9�<�9�=�>�? @ > 5 A 9�=!:�?B�9C$5 <�:�9 A 4�< D&9 E F G 9�H+=�? @ ?�I-5 4�< @ 4�B�? J <�9�6 > 5 B�?�6

Modelos e tecnologias em Sistemas Web

KArquitetura Cliente-Servidor

KHipertexto

KProtocolo HTTP

KLinguagem HTML

KEndereçamento através da URI

HTTP + URI

HTML, GIF, ...

Browser(cliente)

Usuário Servidor HTTP

Aplicação(programa)

Documento(arquivosHTML)

Internet

Page 3: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Transação cliente-servidor na Web

InternetCliente Servidor

Softwarede TCP/IP

Browser

Softwarede TCP/IP

ServidorHTTP

HTTP

TCP

HTTP

TCP

Resposta do servidor

Solicitação HTTP

Ligação física

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de uma sessã o Web –1/2

z 1 Usuário solicita http://www.empresa.com/arq.html

z 2 DNS é consultado e fornece o endereço IP – 200.13.16.8

z 3 O browser faz a conexão e envia a solicitação em HTTP– GET /arq.html HTTP / 1.0– ... (seguem outras

informações)GET / HTTP /1.0

Browser(cliente)

Internet

Usuário

http://www.empresa.com

DNS

200.13.16.8

Page 4: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de uma sessã o Web –2/2

z 5 Servidor recebe solicitação e procura pelo recurso (arq.html)

z 6 Servidor:HTTP/1.1 200 OK

Date: Thu, 23 Oct 1997 21:45:56 GMT

... (após o cabeçalho segue o conteúdo de arq.html)

z 7 Browser apresenta o resultado na tela

Browser(cliente)

Internet

Usuário

Servidor

Cabeçalho + conteúdo de

arq.html

arq.html

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias para Sistemas Web

InternetCliente

Interface de Usuário

HTML(Forms)

CSSScripts

Núcleo funcional:Programas utilizando

CGI, API, etc.e Banco de dados

Servidor

Sof

twar

eH

ardw

are

Page 5: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias para programação lado-servidor

Tecnologias paraSistemas Web

Tecnologias paraprogramação lado-cliente

Tecnologias paraprogramação lado-servidor

ScriptsLado-servidor

ProgramasCompilados

•Perl + CGI•PHP•Active Server Pages•Cold Fusion

•Programas + CGI•Programas + API•Java Servlets•ASP.NET

ScriptsLado-cliente

ProgramasCompilados

Outras soluções

•Javascript•VBScript •Java Applets

•Macromedia FlashTecnologias

híbridas

•Java Server Pages•ASP.NET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias do lado cliente

InternetCliente

DOM

ScriptsHTML

Módulo Compilado(Applets, ActiveX)

Plug-in

Page 6: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias do lado servidor

Servidor

InternetCliente

ServidorHTTP

Arquivos HTML,GIF,

Programasaplicativos

PáginaHTML

Solicitação HTTP

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologias do lado servidor

z Sistema operacional– Unix (Aix, Solaris, Linux),

Windows NT

z Servidor HTTP– Apache– Internet Information Server

(IIS), – Personal Web Server

z Programas Gateway– Perl, C/C++, TCL/TK, Lua,

PHP

z API – Interface de programação de aplicações– ISAPI, NSAPI

z Java Servletsz Scripting

– Server-side JavaScript

– Active Server Pages - ASP

– Cold Fusion - CFM

z Banco de dados– Oracle, Sybase, SQLServer,

MSAccess

z Database Middleware– Oracle Internet Platform

– Informix Internet Foundation.2000

– Sybase web.sql

Page 7: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

Sistemas de Informação na Web

Arquitetura e Tecnologias

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Arquitetura Típica – 3 camadas

Internet

Browser Servidor HTTP Servidor de Banco de Dados(SGBD)

Page 8: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de um sistema de comércio eletrônico

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Transações em sistemas de informação web?

z Formulário no clientez Envio de dados para o servidor através da internet

usando o protocolo HTTPz Execução de programas no servidor

– Existem diferentes alternativas

z Acesso a dados em um banco de dados através de um SGBD

Page 9: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Formulário no cliente

Nome:

Sobrenome:

Masculino Feminino

Enviar consulta Redefinir

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Código HTML

<FORM action=“cgi-bin/programa1” method=“GET”><P><INPUT type=“text” name=“primnome”><BR><INPUT type=“text” name=“sobrenome”><BR><INPUT type=“radio” name=”sexo” value=“M”>Masculino<INPUT type=“radio” name=”sexo” value=“F”>Feminino<INPUT type=“submit” ><INPUT type=“reset”></P>

</FORM>

Page 10: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Envio de dados usando HTTP

z Dados podem ser enviados pelo cliente através de dois métodos HTTP

z O método GET– O programa recebe os dados através da variável de

ambiente QUERY_STRING

z O método POST– O programa recebe os dados através da entrada padrão

do sistema operacional– O número de dados a serem lidos é informado pela

variável CONTENT_LENGTH

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Como funciona? – 1/3

z Cada formulário, além de texto e de outros elementos HTML, contém um conjunto de controles que pertencem ao seu escopo

z Cada controle possui um tipo , um nome, um valor e outros atributos

z O tipo determina qual é o controlez O nome é associado ao valor fornecido pelo

usuário durante o preenchimento do formulário

Page 11: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Como funciona? – 2/3

z Cada formulário possui alguns elementos chaves padronizados

z O atributo action associa o formulário com uma URI onde deverá estar um programa

z Este programa deverá ser capaz de processar os dados fornecidos através do formulário

z O controle submit é um botão que pode ser pressionado pelo usuário

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Como funciona? – 3/3

z Após o elemento submit (botão) ter sido pressionado o browser envia uma série de pares nome/valor com os dados fornecidos

z A submissão pode ser feita pelos métodos HTTP GET ou POST

z No método GET, os pares nome/valor são enviados juntos com a URI

z No método POST os pares nome/valor são enviados no corpo da solicitação HTTP

Page 12: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Forma dos dados enviados

z O usuário fornece os dados preenchendo os controles de um formulário

z No código HTML cada controle deve ter um nome, especificado pelo atributo name

z O valor fornecido pelo usuário é associado ao atributo value

z Os dados são enviados em pares nome=valor da seguinte forma, por ex.:

primnome=Jair&sobrenome=Leite&sexo=M

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando dados pelo método POST

POST /cgi-bin/programa1 HTTP/1.0Accept : text/plainAccept : apliation/x-htmlAccept : ...User-Agent: NSCA Mosaic for X Window System/2.4Content-type application/x-www-form-urlencodedContent-length: 58Nome=jair&sobrenome=Leite&sexo=M

Page 13: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando dados pelo método POST

POST /cgi-bin/programa1 HTTP/1.0Accept : text/plain...Content-length: 58primnome=Jair&sobrenome=Leite&sexo=M

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando dados pelo método GET

GET /cgi-bin/programa1?prinnome=Jair&sobrenome=Leite...

Accept : text/plain

Accept : apliation/x-htmlAccept :

.

.

.

User-Agent: NSCA Mosaic for X Window System/2.4(uma linha contendo apenas CRLF)

Page 14: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Arquiteturas alternativas de programação lado-servidor

z Programas + CGI (gateway)– Scripts– Programas compilados

z Scripts lado-servidor (SSS)– Interpretados no servidor Web

z Programas + APIs– Utiliza APIs do servidor Web

z Servidores HTTP integrados com Servidores de Banco de Dados (SGBDs)– Servidores, Interpretadores/Compiladores e SGBD num

único pacote – mesmo fabricante.

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Ilustração

ProgramaGatewayProgramaGateway

Browser(cliente) Servidor como Base de Dados

Base deDados

Base de Dados

APIAPI

Base deDadosSSSSSS

Page 15: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Conexão com banco de dados

z ODBC – Open DataBase Connectivity– Interface de padrão de conexão a banco de dados– Principais fabricantes fornecem drivers ODBC– Portabilidade

z SQL – Structured Query Language– Linguagem padrão de consulta a banco de dados

relacionais– Desenvolvida pela IBM– Interpretada pelos principais banco de dados

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

SQL – Structured Query Langu age

z Exemplos de comandos SQLSELECT primnome, sobrenome FROM clientes

WHERE sexo=MORDER BY primnome, sobrenome ;

INSERT INTO clientes (primnome, sobrenome )VALUES (Jair', ‘Leite’);

DELETE FROM clientes WHERE sexo=F

Page 16: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Programas Gateway

z Programas Gateway são aqueles que podem ser ativados pelo servidor

z A Common Gateway Interface (CGI) define mecanismos pelo qual servidores HTTP comunicam com programas gateway

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Transações com programas gateway

Browser(cliente) Página HTML

Query String

Solicitação HTTP

Resultados+Código HTML

ServidorHTTP

ProgramasGateway

Servidor de Bancode DadosCGI

Arquivos de dados

Arquivos HTML,GIF,

Page 17: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

A CGI

z Interface para troca de dados servidor- programa gateway

z No sentido servidor-programa– Variáveis de ambiente– Argumentos de linha de comando– Entrada padrão

z No sentido programa-servidor– Saída padrão

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando dados pela entrada padrão

z Quando o browser utiliza o método POST o servidor coloca a query string na entrada padrão

z O programa deve ler estes dados e processa-los

ServidorHTTP

ProgramasGatewayprimnome=Jair&sobrenome=Leite&sexo=M

Entrada padrãoArquivos de dados

Page 18: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Decodificando os dados

z O programa CGI deve decodificar os dadosz Separar cada par nome=valor identificando o “&”z Identificar os nomes e valoresz Processar os valores adequadamente

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando dados CGI-Servidor

z Usa-se a saída padrãoz O programa deve colocar na saída padrão o

documento HTML junto com os dados que foram processados

ServidorHTTP

ProgramasGateway

<HTML><HEAD><TITLE>....

Saída padrão

Arquivos de dados

Jair

Page 19: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Enviando do cumentos ao servidor

z O programa CGI pode enviar ao cliente, através do servidor diversos tipos de documentos– Documentos HTML– Arquivos texto, imagens, áudio, etc.

z Qualquer que seja o tipo do arquivo, o programa deve enviar uma seqüência de bytes através da saída padrão

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Informando o tipo do conteúdo

z O programa CGI deve especificar qual o tipo do conteúdo que está sendo enviado

z O documento ou referência deve ser especificado através de um pequeno cabeçalho antes do conteúdo

Content-type: text/htmlLinha em branco (CRLF)

<HTML><HEAD><TITLE>Documento HTML</TITLE>...

Page 20: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de resposta do servidor

HTTP/1.0 200 OKDate: Friday, 18-aug-99 21:45:00 GTMServer: NCSA/1.3MIME-version: 1.0Last-modified: Friday, 10-jul-99 20:44:00 GTMContent-length: 106Content-type: text/html(CRLF)

<html><head><title>Teste HTML</title></head><body><h1>Olá Jair!</h1></body></html>

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Conectividade baseada em CGI

ProgramaGatewayProgramaGateway

Base de Dados

HTML

HTTP

•Gera comandos SQL•Ler resultados do BD•Gera doc HTML incluindo os resultados

CGI

Dados

HTML

QuerySQL

Resultadoda Query

Page 21: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo: Usando Apache, Perl e MySQL

Arquivo PerlArquivo Perl

MySQL

QuerySQL

Servidor Apache Resultado

da Query

Entrada/Saída padrão

CGI

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Conectividade usando Perl e SQL

#!/usr/bin/perl...print “<h1> Doc HTML </h1><p>”foreach $key (keys(%FORM)) {

print "$key = $FORM{$key}<br>";print “INSERT INTO Students (lastname, firstname) VALUES ($nome, &sobrenome)”;

}

Page 22: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Características da conectividade com CGI

z Grande portabilidade e flexibilidadez Baixo custoz Maior esforço de programaçãoz Difícil manutençãoz Baixo desempenho

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Scripts do lado servidor (SSS)

z Documentos HTML contém um scriptz O servidor possui interpretador de scripts

z Script é executado antes de ser enviadoz Podem interagir com base de dados, sistema de

arquivos, etc.z São dependentes da plataforma e do servidor

Page 23: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Interpretação de SS Scripts

InternetCliente

ServidorHTTP

Arquivos HTML,GIF,+ SCRIPTS

InterpretadorScript

BDScripts

PáginaHTML

Solicitação HTTP

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Scripts mais comuns (1/2)

z Server-Side JavaScript– Utilizado com a ferramenta LiveWire para servidores

Netscape– Integração com componentes Java

z Active Server Pages (ASP)– Extensão do Internet Information Server (IIS) da

Microsoft para programas do lado servidor e execução de scripts

– Independente da linguagem script – Permite o desenvolvimento de Componentes

ActiveX/COM

Page 24: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Scripts mais comuns (1/2)

z Java Servlets– Programa Java no lado-servidor– Utiliza browsers específicos: Tomcat, Sun Java Web

Server, Allaire JRun, etc. – JavaServer Web Development Kit

z Java Server Pages (JSP) – Versão Java para a ASP. – Scripts são traduzidos em Java Servlets– Mais fácil de programar do que servlets

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Tecnologia ASP - Active Server Pages

Base de Dados

InterpretadorVBScript

InterpretadorVBScript

VBScript

ASP = Doc HTML

+ VBScript

ComponentesActiveX

HTML

InternetInformation

Server

Browser

HTTP

SQLHTML

Page 25: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo ASP – conectando com um banco de dados

<%@ LANGUAGE="VBScript" %><%Option ExplicitDim ConnectionDim RSDim SQLStmtDim SSN, Firstname, LastnameSet Connection =

Server.CreateObject("ADODB.Connection")Connection.Open "DSN=Clientes; UID=sa“

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo ASP – solicitando d ados com SQL

SQLStmt = "SELECT SSN, primnome, sobrenome "SQLStmt = SQLStmt & "FROM Clientes"SQLStmt = SQLStmt & "ORDER BY primnome "Set RS = Connection.Execute(SQLStmt)%><html><head>...</head><body><h1>Oi RS.Fields(“primnome") </h1></body></html>

Page 26: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Java Servlets

z Programas Java do lado servidorz Solução Java para programas gatewayz Equivalentes aos Appletsz Funcionamento semelhante às API’sz Programa “compilado”z Geração de código HTML trabalhosa

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de Java Servlet -1

package hall;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class HelloWWW extends HttpServlet {public void doGet(HttpServletRequest request,

HttpServletResponse response)throws ServletException, IOException {

response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<HTML>\n" +

"<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" +"<BODY>\n" +"<H1>Hello WWW</H1>\n" +"</BODY></HTML>");

}}

Page 27: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de Java Servlet -2

String title = “Exemplo com três parâmetros de formulário";out.println(ServletUtilities.headWithTitle(title) +

"<BODY>\n" +"<H1 ALIGN=CENTER>" + title + "</H1>\n" +"<UL>\n" +" <LI>param1: "+ request.getParameter(“ primnome") + "\n" +" <LI>param2: "+ request.getParameter(“ sobrenome") + "\n" +" <LI>param3: "+ request.getParameter(“ sexo") + "\n" +"</UL>\n" +"</BODY></HTML>");

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Java Server Pages

z Tecnologia que permite incluir num mesmo arquivo comandos HTML com construtores JSP

z Os construtores JSP são:– Elementos script – código Java– Diretivas – estrutura o servlet resultande– Ações – especificação de componentes existentes

z O JSP é traduzido em Servlets na primeira vez que é requisitado pelo servidor

Page 28: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de JSP -1

<HTML><HEAD><TITLE>Banco de Negócios</TITLE></HEAD><BODY><H1>Banco de Negócios</H1><P>Olá,<!– Se UserName for vazio, escreve “Novo usuário” --> <% out.println(Utils.getUserNameFromCookie(request)); %>Para acessar sua conta, clique<A HREF="Account-Settings.html">aqui.</A></P><P>Aqui segue o restante do código HTML da página do banco.</BODY></HTML>

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Exemplo de JSP - 2

<P><jsp:useBean id="test" class="hall.SimpleBean" /><jsp:setProperty name="test"

property="message" value="Hello WWW" />

<H1>Mensagem: <I><jsp:getProperty name="test" property="message" /></I></H1><P> <jsp:include page="news/Item1.html" flush="true"/></P>

package hall;pub lic class SimpleBean {

private String message = “ Vazio" ;public String getMessage() {

return(message);}public void setMessage(String message) {

this.message = message;}

} SimpleBean.java

Page 29: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Servidores com API’s

z Interfaces de Programação de Aplicações (Applications Programming Interface – API)

z NSAPI – proposta Netscape

z ISAPI – proposta Microsoft para desenvolvedoresWindows NT

z São análogos aos plug-ins do lado clientez Melhor desempenho que as CGIs

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

API’s em servidores HTTP

InternetCliente

ServidorHTTP Arquivos

HTML,GIF,

API BD

Programa compilado

PáginaHTML

Solicitação HTTP

Page 30: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Usando a ISAPI

HTML

InternetInformation

Server

Browser

HTTP

Arquivo.dll

•GetExtensionVersion( )•HttpExtensionProc( )•Extension_Control_Block

ISAPI

•GetServerVariable( )•ReadClient ( )•WriteClient ( )•ServerSupportFunction ( )

BD

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Integração de servidor Web e banco de dados

z Alguns fabricantes oferecem produtos que integram o servidor HTTP com um servidor de banco de dados

z Solução da Oracle: Oracle Internet Platformz Solução da Sybase: web.sqlz Solução da Informix: Informix Internet

Foundation.2000

Page 31: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Oracle Internet Platform

z Possui três componentes básicos– Browsers de clientes– Servidores de aplicação– Banco de dados Oracle 8i

z Browser– Responsável pela apresentação

z Servidor da aplicação e banco de dados– Funcionalidade da aplicação– Armazenamento de dados

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Oracle Internet Platform – visão geral

Page 32: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Oracle Internet Platform – arquitetura

•Java Servlets•EnterpriseJavaBeans

Gerencia usuários,

aplicações eplataforma

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Sybase web.sql

z Oferece acesso a BD relacionaisz Gera um documento HTML final de forma

dinâmica e personalizada

z Comando SQL e scripts Perl podem ser introduzidos no documento HTML

z Elimina a necessidade de CGIz Processa dois tipos de arquivos

– .hts – hypertext sybase– .pl – programas Perl

Page 33: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Sybase web.sql - arquitetura

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Conectividade com web.sql

Web.sqlWeb.sqlHTML

HTTP Req. HTS

HTML

Arquivo HTSou Perl

BD1

SQL

CGI ou NSAPI

BD2

SQL

Page 34: Desenvolvimento de Sistemas Web Módulo II: Programação ...jair/webprog/fundamentos.pdf · z Dados podem ser enviados pelo cliente através de dois métodos HTTP z O método GET

����������� � ������� � ���� ����������� � � � � ���!���"��#$� ����� � �� %&� ' ( ) ��*+��� � ��,-� �� � �"�� . ����� � � "����

Informix Internet Foundation.2000

z Plataforma integrada– Informix Dynamic Server.2000 – maquina básica– Informix J/Foundation – implementa a JVM– Informix Office Connect – conexão com produtos

MSOficce– Informix Web DataBlade – consultas SQL a BD– Excalibur Text Data Blade Module – pesquisa

z Integra dados e conteúdosz Suporte a HTML, XML e Java