Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Sistema Servidor 
Cliente
Introdução a Cliente/Servidor
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Marcio Funes
Revisão Técnica: 
Prof. Ms. Luiz Carlos Reis
Revisão Textual:
Profa. Ms. Luciene Oliveira da Costa Santos 
5
• Introdução
• Arquitetura de Sistemas
• Arquiteturas Centralizadas
O primeiro material a ser lido, que se encontra em Material Didático, é a Contextualização. 
Você deverá ler o conteúdo disponibilizado nesse link, cujo objetivo é apresentar um texto 
sobre o assunto que irá aprender, vinculando-o a situações cotidianas. 
Depois, você deverá ler o Conteúdo Teórico. Nesse material, você encontrará assuntos, como 
a definição de sistemas distribuídos para que você tenha uma visão geral da disciplina. Assim, 
poderá entender como as arquiteturas nos sistemas distribuídos estão presentes em nosso dia 
a dia. É importante que leia atentamente o conteúdo e consiga identificar a diferença entre 
arquiteturas centralizadas e descentralizadas e como elas aparecem em diversas situações.
Após estudar o texto, você deverá analisar o slide disponível. Nele, você poderá estudar os 
pontos relevantes sobre o assunto desta primeira aula.
Com esses conceitos já estudados, você estará pronto para participar do fórum e realizar as 
atividades. Primeiramente, você irá fazer a Atividade de Sistematização, depois a Atividade 
de Reflexão.
 · Nesta unidade, trabalharemos o seguinte tópico de conteúdo: 
 · Conceitos Iniciais: visão geral sobre o tema de Cliente/
Servidor; a importância de sistemas distribuídos e o papel das 
arquiteturas de sistemas distribuídos em nosso dia a dia.
Introdução a Cliente/Servidor
• Arquiteturas Descentralizadas
• Conclusão
6
Unidade: Introdução a Cliente Servidor
Contextualização
Em 1977, Ken Olsen presidente da Digital Equipment Corporation, segunda maior 
distribuidora de computadores do mundo na época (a primeira era a IBM), deu uma das mais 
interessantes respostas ligadas à tecnologia, que nos faz ter ideia da evolução e da mudança do 
pensamento de lá para cá.
Quando lhe foi perguntado por que a Digital Corporation não estava investindo em produzir 
computadores para o uso pessoal, a resposta foi enfática: “Não há razão alguma para qualquer 
individuo ter um computador em casa”.
Você já comprou algum computador da Digital Corporation? Já viu suas propagandas 
na televisão? Seria muito difícil, já que ela faliu há algum tempo. Nesse simples exemplo, 
podemos ver como o pensamento mudou. Para muitos, ter um computador em casa parecia 
absurdo, quanto mais produzir algum tipo de serviço ligado à tecnologia para pessoas comuns 
em suas casas.
Figura 1 – Computador doméstico TRS-80, 1977
Fonte: Wikimedia Commons
 Como exemplo dessa época, temos na Figura 1 o TRS-80 fabricado pela da Radio Sha-
ck, lançado em agosto de 1977 nos Estados Unidos. Ele tinha 4 quilobytes de memória, 
expansível para 12 quilobytes. Os dados eram armazenados numa fita cassete. Custava US$ 
600, com monitor.
Sabemos que isso mudou. Podemos, de nossas casas, comprar produtos, pagar contas, nos 
comunicar, ler, assistir a filmes e diversas outras atividades devido ao fato de, hoje, termos um 
computador em casa. Porém, apenas ter um computador em casa não basta, o sucesso de 
muitos serviços se dá pelo fato de podermos interligar computadores em rede, constituindo 
assim a Internet!
Porém, quais são os bastidores da Internet? O que existe por trás de apenas um simples clique 
de compra e de meu pedido processado no servidor da loja que estou comprando? Convidamos 
você a conhecer o Sistema Cliente / Servidor, que especificamente atua na interligação de 
computadores, permitindo que eles possam prover ou utilizar recursos e serviços entre si.
7
Introdução
Para que você entenda a importância de Sistemas Cliente/Servidor, é necessário entender em 
qual contexto ele está inserido. Isso é o que iremos ver neste capítulo.
Segundo Coulouris et al. (2007, p.15), um sistema distribuído é aquele no qual os 
componentes localizados em computadores interligados em rede se comunicam e coordenam 
suas ações apenas passando mensagens.
Figura 2 – Analogia sobre Sistemas Distribuídos
Por meio dessa definição, podemos entender que, para existir um sistema completo e 
distribuído à chave, isto é, interligação, quando conectamos componentes localizados em um 
computador, com o qual entendemos os softwares e hardwares, temos a possibilidade de realizar 
diversas ações. Como analogia a esse conceito, podemos ver na Figuras 2 como pequenas 
partes interligadas podem fazer grandes feitos.
A razão que move os Sistemas Distribuídos é o desejo por compartilhar recursos, desde 
compartilhar a mesma impressora que está ligada em rede a um escritório de uma empresa e 
possibilita que todos usufruam dela impressora, até compartilhar documentos, informações, 
serviços e dados.
Redes permitem interligar computadores não tendo como empecilho suas localizações 
geográficas. Atualmente, podemos conversar com um amigo que está na Rússia sem problema 
algum. Esse simples ato de comunicação com alguém que está a milhares de quilômetros 
exemplifica o maior sistema distribuído no mundo, a Internet.
Glossário
Sistemas Cliente/Servidor fazem parte de uma grande área de conhecimento que permite a 
todos nós benefícios com os serviços que as redes de computador podem fornecer. A essa 
grande área de conhecimento chamamos de Sistemas Distribuídos.
Sistemas Cliente/Servidor fazem parte de uma grande área de conhecimento que permite a 
8
Unidade: Introdução a Cliente Servidor
O maior sistema distribuído no mundo
A Internet é considerada o maior sistema distribuído no mundo, pois contêm diversos outros 
Sistemas Distribuídos em sua constituição. Permite que usuários compartilhem recursos da 
World Wide Web, e-mail, transferência de arquivos etc.
Abaixo, temos a explicação da Webopedia, sobre a diferença entre Internet e Web, disponível 
em <https://goo.gl/RO4gYX>. Podemos ver que, diferentemente do que muitas pessoas 
consideram, existem relevantes diferenças entre Internet e Web. Leia, abaixo, alguns pontos 
relevantes.
Muita gente usa os termos Internet e World Wide Web (ou apenas 
Web) indistintamente, mas de fato os dois termos não são sinônimos. A 
Internet e a Web são duas coisas separadas, embora relacionadas.
A Internet é uma gigantesca rede de redes, uma infraestrutura em rede. 
Ela conecta milhões de computadores globalmente, formando uma 
rede em que qualquer computador pode comunicar-se com qualquer 
outro computador desde que ambos estejam conectados à Internet. A 
informação que viaja pela Internet é feita por meio de uma variedade 
de linguagens conhecidas por protocolos.
A World Wide Web, ou simplesmente Web, é uma maneira de acessar 
informação por meio da Internet. É um modelo de compartilhamento 
de informações construído sobre a Internet. A Web usa o protocolo 
HTTP, que é apenas uma das linguagens utilizadas na Internet, para 
transmitir informações, e serve-se de browsers, como Internet Explorer, 
para acessar documentos chamados páginas (homepages), que estão 
ligados uns a outros por meio de hyperlinks. Documentos Web também 
contêm gráficos, sons, textos e vídeos.
A Web é apenas uma das maneiras pelas quais a informação pode ser 
disseminada pela Internet. A Internet, não a Web, é utilizada ainda para 
e-mail, Newsgroups, Instant Messaging e FTP. Portanto a Web é apenas 
uma parte da Internet, embora uma grande parte, mas os dois termos 
não são sinônimos e não devem ser confundidos.
9
Arquitetura de Sistemas
Quando pensamos em Sistemas Distribuídos, entendemos que o sucesso disso está em 
distribuir recursos, sendo essa a principal característica. Entendemos também que esses recursos 
estão distribuídos em diversos e diversos computadores, tornando assim, muitas vezes, complexa 
a sua organização.
Para que esse controle seja eficaz, há diferentes modos de organização de Sistemas 
Distribuídos, e a essa organização tão necessária damos o nomede Arquitetura de Sistemas. 
Uma das primeiras considerações que fazemos quanto à organização de Sistemas Distribuídos 
é diferenciar a organização lógica do conjunto de componentes de software e, por outro lado, a 
realização física propriamente dita. (TANENBAUM & VAN STEEN, 2007).
Veremos sua organização lógica abaixo e como podemos aplicá-la a um sistema através 
de camadas.
Estilo arquitetônico em camadas
Neste estilo, temos os componentes que fazem parte do Sistema Distribuído, organizados em 
camadas, criando assim uma comunicação linear.
Para que ela ocorra, temos a necessidade de três camadas básicas, que são: 
Figura 3 – Esquema de camadas
 · Camada de Apresentação: esta camada interage diretamente com o usuário ou 
outras aplicações; aqui pode destacar usuário acessando interfaces em navegadores, 
celulares, caixas eletrônicos e demais interfaces de comunicação. Figura 3 destaque na 
cor vermelha.
 · Camada de Negócio: aqui encontramos as regras que regem o sistema, as permissões 
que serão concedidas, como os dados devem ser tratados; enfim, aqui está a inteligência 
do sistema. Figura 3 destaque na cor verde.
 · Camada de Persistência: também conhecida como Camada de Dados, aqui 
encontramos os elementos responsáveis por armazenar as informações geradas na 
camada de negócios; quando invertemos o fluxo inicial das camadas, ela tem a função 
de fonte de dados para as demais camadas.
10
Unidade: Introdução a Cliente Servidor
Exemplo de Sistema Distribuído em camada
Ao analisar o simples acesso de um usuário ao site de e-commerce, por exemplo, do ponto 
de vista do estilo arquitetônico de camadas, temos:
1 - Usuário interage com o sistema distribuído através da Camada de Apresentação através 
de um navegador onde ele encontra os elementos gráficos do site (botões, cores, telas, 
menus etc).
2 - Ao escolher um produto para compra, entra em ação a Camada de Negócio que 
apresenta ao usuário as condições de compra do produto, forma de pagamento, valor 
do produto e demais informações pertinentes.
3 - Supondo que foi efetivada a compra, a Camada de Persistência armazena os dados 
gerados da compra, finalizando assim a interação entre as camadas.
Arquiteturas Centralizadas
Esse tipo de arquitetura existe quando temos a interação de dois elementos, os clientes e os 
servidores, objeto central de estudo desta disciplina:
 · Clientes: são processos que solicitam informações e serviços de um Servidor, enviando 
requisições dos mais variados tipos, logo em seguida, à espera da resposta do Servidor.
 · Servidor: são processos que fornecem algum tipo de informação ou serviço aos Clientes. 
Algumas vezes, um servidor poderá exercer o papel de um Cliente fazendo requisições 
a um Servidor.
Vejamos um exemplo:
Client Server 2
Client
Result Result
Invocation Invocation
Server 1
Process
Key:
Computer
 Figura 4 – Os clientes realizam pedidos aos servidores
Na Figura 4, temos um esquema gráfico dos clientes realizando pedidos ao servidor. Veja que 
a interação ocorre quando temos o envido de uma Invocation e a resposta pelo Result.
 · Invocation: a invocação acontece, por exemplo, quando um usuário abre um 
gerenciador de e-mail em sua máquina e realiza o pedido para ler seus e-mails; nesse 
momento, o processo cliente invoca os e-mails do servidor de e-mail.
 · Result: o resultado é a resposta do servidor à solicitação do processo cliente; utilizando 
o exemplo anterior, quando o servidor de e-mail recebe então a solicitação de acesso a 
uma conta de e-mail, pode enviar como resposta o pedido de autenticação de login e 
senha e, assim, dar sequência ao serviço solicitado pelo cliente.
11
Outro item interessante quando se trata de Cliente/Servidor é a utilização de camadas. Como 
vimos na Introdução, podemos dividir a arquitetura em camadas. Vimos que a utilização de 
três camadas (apresentação, negócio e persistência ou dados) pode ser muito interessante, pois, 
definimos o que cada camada deverá realizar. Cada camada segue sua função.
Aplicando agora a arquitetura em camada no conceito de Cliente/Servidor entendemos 
que a primeira camada Apresentação está no Cliente e por meio dela o usuário interage 
com o sistema.
Quando pensamos nas camadas de Negócio e Persistência, podemos atribuir sua função 
ao Servidor, que é a função de cuidar para que as duas camadas processem as Invocações do 
Cliente e forneçam uma Resposta ao usuário.
O ideal é utilizar três camadas para que o sistema Cliente/Servidor seja funcional, mas existe 
outra maneira de criar um sistema Cliente/Servidor apenas com 2 camadas, aplicando o conceito 
de cliente gordo e cliente magro.
 · Cliente Magro: quando o processo Cliente só possui uma obrigação, mostra as informações 
ao usuário e mais nada (toda a carga de processamento se encontra no Servidor).
 · Cliente Gordo: quando não temos o papel do Servidor para processar os dados, mostra 
as informações e as processa no Cliente / Servidor; apenas tem a função de armazenar 
os dados gerados no Cliente.
Arquitetura Descentralizada
Para quem viveu em 1999 e possuía um computador doméstico e uma conexão com a Internet, 
fazer download de uma simples música não era trabalho fácil, era necessário conhecimento em 
informática, domínio de algumas ferramentas (sim no plural) e bastante paciência.
Foi quando Shawn Fanning e Sean Parker tiveram a ideia de criar um sistema que facilitaria 
aos usuários conseguir suas músicas favoritas.
Como vimos até agora, sabemos que para que um sistema de download de música funcionasse 
era necessário então disponibilizar um servidor de arquivos para que os clientes pudessem fazer 
requisições de download. O hardware naquela época era mais caro que nos tempos atuais e a 
velocidade de conexão com a Internet não ajudava muito, seria necessário desembolsar muito 
dinheiro e mesmo assim os downloads corriam o risco de deixar um servidor lento devido à 
quantidade de downloads.
Qual solução poderia ser criada? Se pensarmos que, ao invés de centralizar esses arquivos 
de música em apenas um servidor, podemos aproveitar o fato que vários usuários têm 
músicas em seus computadores, assim teríamos vários e vários “mini servidores” espalhados 
por toda a rede, criando um sistema descentralizado no qual cada usuário disponibiliza as 
músicas que quiser.
12
Unidade: Introdução a Cliente Servidor
Surgiu assim o programa Napster, que facilitou e popularizou o 
download de músicas pela Internet e em 2001 e contava com 8 
milhões de usuários, gerando uma média de tráfego de 20 milhões 
por dia. Devido a várias ações legais de companhias da indústria 
fonográfica, fechou suas portas.
Esse exemplo demonstra a arquitetura descentralizada chamada Peer 
– to – peer ou apenas P2P, diferente do modelo Cliente / Servidor 
onde centralizamos a informação, o P2P espalha a informação e os 
todos os clientes têm o papel de cliente e servidores ao mesmo tempo.
Conclusão
Para melhor aproveitamento do capítulo, vejamos abaixo uma síntese do que foi visto até aqui:
• Entendemos que Sistemas Cliente/Servidor fazem parte de uma grande área de 
conhecimento chamada Sistemas Distribuídos e através dela podemos enviar e receber 
informações e serviços por uma rede de computadores.
• Vimos também que para organizar o modo como os Sistemas Distribuídos funcionam 
temos a Arquitetura de Sistemas que provê a maneira que os sistemas devem agir.
• Dentro das definições da Arquitetura de Sistemas temos a possibilidade de criar estilos 
arquitetônicos para Sistemas Distribuídos. Dentre esses estilos, temos um chamado Estilo 
Arquitetônico em Camadas, possuindo três camadas básicas:
◊ Camada de Apresentação
◊ Camada de Negócio
◊ Camada de Persistência (dados)
• Voltando ao tema central, além de estilos arquitetônicos, temos as arquiteturas que se 
utilizam dos estilos para se estruturarem. Dentre essas arquiteturas, temos a Arquitetura 
Centralizada que trata do tema Cliente/Servidor.
• No conceito de Arquitetura Centralizada temos a presençado Cliente e do Servidor, que 
podemos entender da seguinte forma:
◊ Cliente: solicita informações e serviços de um Servidor.
◊ Servidor: fornece informações e serviços aos Clientes.
• Além do conceito de Arquitetura Centralizada, temos a Arquitetura Descentralizada, 
que diferente do conceito de centralizar serviços e informações em um Servidor fazendo 
com que vários Clientes acessem um servidor realizando requisições, a Arquitetura 
Descentralizada prevê que um Cliente pode assumir o papel de Cliente e Servidor 
simultaneamente fazendo com que a informação fique espalhada pela rede.
Não é possível dizer qual arquitetura é melhor. Como cada arquitetura possui um modo de 
trabalho diferente, cada uma possui uma utilização diferente em situações diferentes. Ambas 
possuem suas vantagens e devem ser utilizadas para melhor eficiência de um Sistema Distribuído.
13
Material Complementar
Sugiro, também, a leitura completa do capitulo II do livro:
TANENBAUM, A.S.; VAN STEEN, M. Sistemas Distribuídos: Princípios 
e Paradigmas 2/E, Prentice Hall, 2007.
14
Unidade: Introdução a Cliente Servidor
Referências
TANENBAUM, A.S.; VAN STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas 
2/E. Prentice Hall, 2007.
COULORIS, G.; DOLLIMORE, J. AND KINDBERG, T. Sistemas Distribuídos: Conceitos e 
Projeto 4/E. Bookman, 2007.
15
Anotações
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvão Bueno, 868
CEP 01506-000
São Paulo SP Brasil 
Tel: (55 11) 3385-3000
www.cruzeirodosulvirtual.com.br
Rua Galvão Bueno, 868
Tel: (55 11) 3385-3000
Sistema Servidor 
Cliente
Ambiente de programação distribuída
Material Teórico
Responsável pelo Conteúdo:
Prof Esp Marcio Funes
Revisão Técnica:
Prof. Ms. Luiz Carlos Reis
Revisão Textual:
Profa Ms. Luciene Oliveira da Costa Santos
5
• Sockets
• Corba
• Dcom
Nesta segunda unidade, você irá estudar os principais conceitos que ambientam a programação 
distribuída como sockets, corba, dcom, soap, Java RMI e Web Services. 
O primeiro material a ser lido, que se encontra no material didático, é a Contextualização. Você 
deverá ler o conteúdo disponibilizado nesse link, cujo objetivo é apresentar um texto, situando o 
assunto que irá aprender e vinculando-o a situações cotidianas. 
Depois, você deverá ler o conteúdo teórico. Nele, você encontrará os assuntos citados no parágrafo 
acima, com os quais serão definidos o conceito de cada tema e o modo de funcionamento geral 
de cada item. É importante que leia atentamente o conteúdo e consiga identificar a diferença entre 
cada ambiente de programação e seus aspectos de uso.
Após estudar o texto, você deverá analisar o slide disponível. Também por meio dele, você poderá 
estudar os pontos relevantes sobre o assunto desta primeira aula.
Com os conceitos já estudados, você estará pronto para participar do fórum e realizar as atividades. 
Primeiramente, você irá fazer a Atividade de Sistematização, depois, a Atividade de Reflexão.
Nesta unidade, falaremos sobre o ambiente necessário para a 
programação distribuída. Vamos entender quais são os conceitos 
relacionados ao ambiente que possibilitam desenvolvedores 
utilizarem os benefícios da computação distribuída. Isso é muito 
importante, pois você poderá utilizar tais conceitos em sua carreira.
Também é importante ver como as soluções de programação 
são criadas para um serviço, envolvendo máquinas que troquem 
informações e consigam manter um link e, principalmente, 
desenvolver a relação de Cliente e Servidor de forma confiável.
Ambiente de programação distribuída
• Soap
• Java RMI
• Web Service
6
Unidade: Ambiente de programação distribuída
Contextualização
Agora que já vimos os conceitos iniciais da tecnologia de sistemas cliente / servidor, podemos 
avançar e entender como os ambientes de programação distribuída funcionam. A compreensão 
de como a tecnologia distribuída em cliente / servidor acontece através das arquiteturas lhe 
permitirá agora entender como aplicamos esses conceitos dentro de ambientes de programação 
distribuída.
Para obter um bom aproveitamento com o estudo desta unidade, vamos conferir sua estrutura:
• Conteúdo Teórico: neste link, você encontrará o material principal de estudos na forma de 
texto escrito.
• Atividade de Sistematização: os exercícios disponibilizados são de autocorreção e visam 
a que você pratique o que aprendeu na disciplina e que identifique os pontos aos quais 
precisa prestar mais atenção, ou sobre os quais necessita pedir esclarecimentos a seu tutor. 
Além disso, as notas atribuídas aos exercícios serão parte de sua média final na disciplina.
• Atividade de Aprofundamento: é uma atividade dissertativa.
• Material Complementar: nestes links, você poderá ampliar seus conhecimentos.
• Vídeo-aula: nestes links, serão apresentadas algumas ferramentas na prática e também a 
resolução de alguns exercícios. 
Fique atento(a) à importância de realizar todas as atividades propostas dentro do prazo 
estabelecido para cada unidade, pois, dessa forma, você evitará que o conteúdo se acumule e 
problemas ao final do semestre.
Uma última recomendação: caso tenha problemas para acessar algum item da disciplina, 
ou dúvidas em relação ao conteúdo, não deixe de entrar em contato com seu professor tutor 
através do botão mensagens.
7
Sockets
Você já participou de algum bate papo na Internet? 
Provavelmente, a resposta será sim. Uma aplicação desse tipo é muito comum entre usuários 
de internet. Se você é mais veterano, deve se lembrar do ICQ, em 1996 (caso sinta saudades, 
aproveite, pois ele ainda está disponível para download), ou pelo Windows Messenger em 2008 
ou somente MSN para os íntimos. Exemplos atuais de bate-papo nos trazem ao Facebook ou 
através de aplicativo como o WhatsApp para aplicativos móveis.
Sabemos que comunicação de forma instantânea na internet é uma das suas maiores 
vantagens e essa possibilidade não irá desaparecer. O que pode ocorrer é a mudança do 
aplicativo ou serviço que utilizamos para comunicação.
Quero convidá-lo(a) a conhecer o que existe por trás do aplicativo que nos permite bater um 
papo e combinar uma festa no final de semana. Como programadores conseguem fazer com 
que mensagens saiam do meu aplicativo e cheguem ao seu destino?
A resposta será sockets, sim, sockets! E essas belezinhas não são usadas apenas em bate-
papo. Sockets são usados quando existe a necessidade de comunicar dois pontos e necessitam 
de estabilidade, rapidez e desempenho.
O que é um Socket?
É um serviço de transporte que permite a comunicação através do protocolo TCP entre 
clientes e servidores. Cada cliente e servidor possuem seu socket que irá possibilitar uma 
conexão fim a fim.
Podemos entender que sockets são terminais em uma conexão bidirecional, a mensagem sai 
de um computador ou aplicativo A e chega ao seu fim em um computador ou aplicativo B. Todo 
socket possui dois tipos de endereçamento:
Endereço Local: Endereço da porta de comunicação para a camada de transporte.
Endereço Global: Endereço do computador na rede.
Vamos entender como os sockets funcionam. Primeiro, vamos analisar a visão do servidor.
 
Servidor
Porta #
Soquete
Figura 1 – Socket associado a uma Porta
8
Unidade: Ambiente de programação distribuída
Temos, na Figura 1, um servidor que oferece algum serviço através de uma de suas portas. O 
socket associado a essa porta ficará “escutando” a porta, esperando que algum cliente ansioso 
faça sua solicitação.
Cliente
Porta #Servidor
Porta #
Soquete
Figura 2 – Cliente e suas requisições
O cliente então deve saber identificar o servidor e o número da porta em que o servidor 
aguarda comunicação. Para facilitar, imagine a ação de enviar um e-mail, quando abrimos o 
Gmail, por exemplo, o servidor fica atento que algum cliente solicite conexão; por sua vez, o 
servidor através de uma porta e um socket responde à solicitação, exigindo login e senha para 
poder fornecer os e-mails contidos em seu repositório.
Assim, ocorre uma ligaçãobidirecional, por meio de portas e sockets, se estabelece uma 
conexão e ambos podem se comunicar, como mostra a Figura 2.
Quando um servidor está disponível para receber solicitações e um cliente aceita a conexão 
oferecida são criados sockets em ambas as pontas, estabelecendo a comunicação e definindo as 
diretrizes que podem ser lidas e escritas em ambos os sockets, como podemos ver na Figura 3.
 
Cliente
Porta #Servidor
Porta #
Soquete
Soquete
Soquete
Figura 3 – Sockets conectados em ambas as pontas
9
Servidor
Po
rta
 #
Soquete
Soquete
Soquete
Soquete
...
Cliente
Porta #
Soquete
Cliente
Porta #
Soquete
Cliente
Porta #
Soquete
Cliente
Porta #
Soquete
Figura 4 – Exemplo de sockets em um bate-papo
Voltando ao exemplo do bate-papo, quando vários clientes necessitam acessar o mesmo 
servidor, são criados vários sockets para estabelecer uma conexão única e estável com cada 
cliente, como demonstrado na Figura 4.
Acesse: https://goo.gl/xzGmD
Esse tutorial disponibilizado pela Oracle, além de trazer várias informações sobre 
sockets, traz um tutorial passo a passo de programação de sockets em Java.
CORBA
Em meados de 1990, a tecnologia de comunicações e serviços via rede cada vez mais se 
expandiam, novos serviços se espalhavam, fazendo com que a procura por soluções distribuídas 
aumentasse cada vez mais.
Porém, havia um empecilho que poderia comprometer o crescimento dessas soluções. 
Não havia uma padronização única que permitisse que diversos tipos de sistemas distribuídos 
pudessem se comunicar. Muitas vezes, uma solução era implementada em uma determinada 
linguagem diferente de outra solução, impedindo ambas de não se comunicarem.
10
Unidade: Ambiente de programação distribuída
Em 1991, um grupo de empresas estabelece uma especificação de uma arquitetura chamada 
CORBA (Common Object Request Broker Architecture) que define padrões, permitindo que 
aplicações feitas por diferentes desenvolvedores se comunicassem sem nenhum problema. 
Desde então, ela é patrocinada pelo OMG (Object Management Group) grupo formado em 
1989, com o objetivo de estimular a adoção de sistemas de objetos distribuídos para usufruir das 
vantagens da programação orientada a objeto no desenvolvimento de softwares para sistemas 
distribuídos (COULOURIS et al., 2007, p.711).
Qual o segredo do CORBA?
Vimos acima que o grande sucesso do CORBA é possibilitar a diferentes soluções a 
comunicação em uma rede entre si. Mas como ele faz isso?
 
Cliente
Programa IDL ORB
Servidor
ORB POA Servente
Es
qu
el
et
oRequisições
Respostas
Requisições
Figura 5 – Principais componentes CORBA.
Analisando a Figura 5, podemos entender que o objetivo principal é permitir que o programa 
que está sendo executado na máquina do cliente possa solicitar requisições do servidor e usufruir 
de seus serviços como é característico do modelo Cliente / Servidor. Porém, tanto o programa 
quanto o servidor são diferentes em termos de desenvolvimento. Nesse contexto, temos que 
criar um Middleware, ou seja, um conjunto de elementos que irão mediar a comunicação entre 
o cliente e o servidor.
Vamos analisar agora cada elemento que compõe o CORBA.
• Programa: é a aplicação que o usuário tem acesso, ou seja, a aplicação que o usuário 
deseja utilizar.
• IDL (Interface Definition Language): uma linguagem para definição de interface que 
permite padronizar as chamadas aos métodos CORBA com o IDL não importando qual 
tecnologia seja executada, pois, quando ela passa pela IDL, é padronizada pelas definições 
CORBA.
• ORB (Object Request Broker): define as funções que um cliente irá utilizar e um 
servidor irá receber, ele terá a tarefa de interpretar aquilo que o cliente deseja e aquilo que 
é respondido pelo usuário, fazendo assim que servidor e cliente “falem” a mesma língua.
• POA (Portable Object Adapter): presente apenas no servidor, tem a função de ajudar o 
11
ORB na tarefa de entregar as requisições ao servente. Permite que sejam criadas aplicações 
e servidores portáveis internos para atender a qualquer tipo de requisição do ORB.
• Esqueletos: segundo Coulouris et al. (2007), esqueletos são classes geradas na linguagem 
do servidor por um compilador de IDL, que tem por função desempacotar os argumentos 
nas mensagens de requisições (vindas dos clientes) e empacotar exceções e resultados 
nas mensagens de respostas geradas por um servente. Nesse desempacotar e empacotar, 
consegue estipular qual o tipo da requisição e enviá-la a um servente correto, ou estabelecer 
a qual cliente a resposta deverá ser enviada pelo ORB.
• Servente: implementa as operações que o servidor possui através de chamada de 
métodos, permitindo ao servidor entender a requisição do cliente e responder aquilo que 
lhe foi pedido.
DCOM
Entendendo as tecnologias ligadas aos sistemas distribuídos e os benefícios que ela pode 
trazer, a Microsoft percebe que deve investir recursos voltados a esse tema e, em 1996, lança 
no mercado seu modelo de ambiente de programação distribuído chamada DCOM (Distributed 
Component Object Model).
Muito semelhante ao modo de trabalho do CORBA, o DCOM também permite que objetos 
se tornem acessíveis, possibilitando acesso a serviços localizados em servidores, caracterizando, 
assim, uma comunicação cliente/servidor.
Como principal ponto, a Microsoft fornece soluções transparentes dentro do DCOM. Vejamos 
abaixo alguns exemplos:
• Transparência de localização: através de ponteiros, os clientes conseguem localizar objetos 
que estão inseridos em servidores e, assim, eles podem utilizar os servidos disponíveis 
apenas invocando o método da interface como se essa invocação fosse local.
• Transparência de plataforma: sabemos que sistemas distribuídos operam em 
multiplataformas devido à gama de sistemas operacionais e hardwares que assumem 
papéis de cliente e servidores. Possibilitar que todos se comuniquem e troquem requisições 
e respostas é uma característica dos ambientes de programação distribuída, o DCOM 
implementa essa funcionalidade.
• Transparência de linguagem de programação: assim como plataformas podem ser 
diferentes, as linguagens de programação que estão presentes em clientes podem ser 
diferentes em servidores. Se clientes tivessem a obrigatoriedade de possuir a mesma 
codificação de servidores, os serviços fornecidos seriam muito restritos e, em muitos casos, 
a solução seria inviável.
12
Unidade: Ambiente de programação distribuída
SOAP
Como você já deve ter percebido até agora, o segredo dos sistemas cliente/ servidor e 
os sistemas distribuídos em geral está em seus bastidores, nas programações, protocolos e 
arquiteturas que são criadas para aperfeiçoar o modo de comunicação entre hardware e 
software distribuído.
Muitos desenvolvedores criam soluções fantásticas para clientes finais, ou seja, criam sites, 
sistemas, serviços e soluções que agradam ao usuário final e o fazem interagir com suas 
criações. Você se lembra de quando acessou sua primeira rede social? Ou quando usou algum 
serviço como compra, ou se comunicou com alguém pela internet e pensou “Uau, isso é 
realmente muito legal”?
Vamos ver agora um protocolo chamado SOAP que permite justamente a comunicação ao 
usar um sistema distribuído que você tanto gosta, mas talvez não saiba bem como ele funciona 
em sua parte mais técnica.
CONHEÇA O SIMPLE OBJECT ACESS PROTOCOL
O SOAP tem seu foco no envio de qualquer informação através de um sistema distribuído. 
Ele surgiu em meados de 1999 e inicialmente foi projetado apenas para o protocolo HTTP. 
Atualmente, define esquemas para outros protocolos de transporte e especialmente define 
meios de uso para o uso da linguagem XML.
Segundo Coulouris et al. (2007), para suportar comunicações entre cliente e servidores, o 
SOAP define como o método de envio da mensagem de requisição e da mensagem de resposta 
como deve se comportar.
Lembre-se de que o cliente e o servidor podem estar a quilômetros de distância um do outro. 
Uma requisição que parte do clienteem direção ao servidor passa por diversos middlewares 
pelo caminho e isso requer certa segurança. Afinal, não queremos que qualquer um possa ler 
nossas informações.
Uma mensagem SOAP é transportada em um envelope que, por usa vez, possui cabeçalho 
e um corpo em sua composição. Vejamos a função de cada elemento:
Cabeçalho: permite que intermediário entre cliente e servidor possam tomar ações sobre 
o que fazer com o envelope, analisando seu conteúdo e para onde o envelope deverá ser 
encaminhado. Assim como um carteiro lê o destinatário de uma carta e sabe onde deve entregá-
la, o cabeçalho de um envelope no protocolo SOAP funciona, a diferença é que os intermediários 
podem acrescentar e editar informações.
Corpo: o corpo contém informações sobre a validade do conteúdo da mensagem e garante 
que não existem erros e que o conteúdo está correto para ser entregue.
13
EXEMPLO
Abaixo, temos um exemplo de requisição de um cliente a um servidor apenas iniciando uma 
simples comunicação:
POST /EnviandoHelloWord/endpoint HTTP/1.1
Host: (aqui irá o endereço do destinatário)
Content-Type: text/XML; charset=”utf-8”
Content-Length: 322
Cabeçalho:
<soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/
 xmlns:xsd=http://www.w3.org/2001/XMLSchema
 xmlns:ns1=http://hello>
Corpo:
 <soapenv:Body>
 <ns1:sayHello>
 <ns1:name>Olá</ns1:name>
 </ns1:sayHello>
 </soapenv:Body> 
 </soapenv:Envelope>
Vejamos agora a resposta do Servidor:
HTTP/1.1 200 OK
Content-Type: text/XML; charset=”utf-8”
Content-Length: 367
Cabeçalho:
<soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/
 xmlns:xsd=http://www.w3.org/2001/XMLSchema
 xmlns:ns1=http://hello>
Corpo:
<soapenv:Body>
 <ns1:sayHelloResponse>
 <ns1:return>Olá, Tudo bem?</ns1:return>
 </ns1:sayHelloResponse>
 </soapenv:Body> 
</soapenv:Envelope>
14
Unidade: Ambiente de programação distribuída
Java RMI
Sabemos que, quando se trata de ambiente de desenvolvimento em Java, um dos conceitos 
fundamentais é a possibilidade de criação de objetos e manipulação dos mesmos de diversas 
formas. Porém, quando se trata de desenvolvimento Java em um ambiente distribuído, onde 
temos objetos em clientes e objetos em servidores?
Nesse caso, utilizamos o conceito de Java RMI (Remote Method Invocation), que possibilita 
invocar qualquer objeto localizado em um cliente ou servidor mesmo que esse cliente ou servidor 
não possua conhecimento do objeto que está invocando. Vamos ver como isso funciona:
Tudo começa entendendo a ligação de Máquinas Virtuais Java ou conhecidas como JVM 
(Java Virtual Machine). Perceba que um cliente pode possuir uma interface Java e deseja acessar 
algum serviço localizado em outra JVM que esteja, em um servidor, por exemplo. Através do 
RMI, a Máquina Virtual pode invocar um método que está armazenado em um cliente apenas 
esperando ser acessado via rede.
Os métodos que são invocados pelo cliente podem inclusive passar objetos localizados 
em servidores que nunca foram vistos pelo cliente antes, tirando assim a preocupação do 
desenvolvedor de implementar objetos em clientes. Podemos entender isso como carregamento 
dinâmico de classes e objetos.
Considere um desenvolvedor expandindo as funcionalidades de sua solução Java. Nesse 
cenário, imagine aplicadas a criação e a modificação de classes a todo o instante, adicione 
também um cliente que queira acessar essas funcionalidades, mas não tenha cópia dessas 
novas classes (sejam públicas ou privadas) no mesmo instante em que elas são atualizadas pelo 
desenvolvedor inicial. 
A solução nesse cenário é a utilização do cliente RMI que busca automaticamente as novas 
classes do servidor onde é compartilhada a classe e, consequentemente, a solução que ela traz. 
A nova classe é carregada na memória e o cliente RMI pode utilizá-la tranquilamente.
Vejamos um exemplo de código para a criação simples de um servidor em Java RMI. Note 
como é simples a criação do novo objeto e como podemos compilar o mesmo:
import java.rmi.Naming;
public class ServerTeste //considere a criação da classe ServerTeste anteriormente
 {
 public static void main(String[] args)
 {
 if (args.length != 1)
 {
 System.err.println(“\nUsage:\t java ServerTeste objname\n”);
 System.exit(1);
 }
15
 try
 {
 Teste ateste = new Teste();// criação do objeto servidor
 String objname = “//localhost/”+args[0];
 System.out.println(“Registrando” +objname+ “...”);
 Naming.rebind(objname, awalk);// Registro do RMI
 System.out.println(“Registrado”);
 }
 catch (Exception e) // catch caso ocorra erro no registro do RMI
 {
 System.err.println(“Erro em main()” + e);
 e.printStackTrace();
 System.exit(2);
 } 
System.out.println(“Esperando Objeto”);
}}
Para compilar o servidor acima utilizamos a expressão: 
servhost> javac ServerTeste.java
Web Service
Como último tópico, temos o conceito de Web Service que podemos entender como a solução 
final implementada, podendo utilizar vários ambientes de programação distribuída trabalhando 
em conjunto.
Ao entender o conceito de SOAP, Java RMI e diversos ambientes de programação distribuída, 
temos um olhar focado naquela solução que desejamos desenvolver. Porém, na integralização 
de sistemas, um olhar mais amplo, ou seja, ou olhar macro sobre a solução é necessária e é 
através deste olhar que podemos ver Web Service sendo criados.
Um WebService é um fragmento de lógica de negócio, localizado em algum lugar na Internet, 
que é acessível através de protocolos de Internet baseados em padrões, como HTTP ou SMTP. 
Usar um Web Service pode ser tão simples quanto efetuar um login em um site ou tão complexo 
quanto facilitar uma negociação multiorganizacional. (CHAPPELL, D. JEWELL, T., p. 01, 
tradução nossa).
16
Unidade: Ambiente de programação distribuída
Em tradução livre, David considera um Web Service como um pedaço da lógica de um 
negócio, que está localizada em algum lugar da internet e pode ser acessada por protocolos 
como HTTP ou SMTP. David também traça um paralelo, dizendo que Web Service pode ser 
visto desde um simples login em algum site, até a complexa negociação de multinacionais 
através de algumas tecnologias.
As principais tecnologias inseridas em Web Service são:
• SOAP: como víamos anteriormente, o SOAP se importa com a estrutura de 
empacotamento para transportar informações em XML através de protocolos de Internet 
(HTTP, SMTP, FTP).
• WSDL: tecnologia que padroniza a descrição da interface de um web service. Ele define 
como serão os parâmetros de entrada e saída de uma chamada externa.
• UDDI: repositório mundial de Web Services, permite consultar diversas soluções já 
criadas, mais informações em: http://uddi.xml.org/
17
Material Complementar
Como complemento desta unidade, sugiro a leitura completa do capítulo I do livro: 
• KALIN, M. Java Web Services: Implementando. Alta Books, 2009.
18
Unidade: Ambiente de programação distribuída
Referências
CHAPPELL, D.; JEWELL, T. Java Web Services. O’reilly, 2002.
COULORIS, G.; DOLLIMORE, J. AND KINDBERG, T. Sistemas Distribuídos: Conceitos e 
Projeto 4/E. Bookman, 2007.
HANSEN, M. D. Soa Using Java Web Services. New Jersey: Prentice Hall, 2007.
KOCHMER, C. Jsp And Xml: Integrating Xml And Web Services In Your Jsp Application. 
Boston: Addison-Wesley, 2002.
TANENBAUM, A.S.; VAN STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas 
2/E. Prentice Hall, 2007.
19
Anotações
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvão Bueno, 868
CEP 01506-000
São Paulo SP Brasil 
Tel: (55 11) 3385-3000
www.cruzeirodosulvirtual.com.br
Rua Galvão Bueno, 868
Tel: (55 11) 3385-3000
Sistema Servidor 
Cliente
Tecnologias Cliente / Servidor na Internet
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Marcio Funes
Revisão Técnica:
Prof. Ms. Luiz Carlos Reis
Revisão Textual:
Profa. Ms. Claudio Brites
5
• Introdução
• ASP
• PHP
Acada dia, novos conceitos, novas ferramentas e novas linguagens surgem no mercado 
voltado a soluções web. Isso se dá porque diversas empresas querem, ao oferecerem serviços, 
beneficiarem-se da praticidade e velocidade com que seus clientes podem acessar tais serviços 
on-line. Devido a essa grande demanda, cada vez mais profissionais são requisitados com 
propostas de salários atrativas e diversos benefícios.
Peço, inicialmente, que você leia o material disponibilizado para, depois, realizar os exercícios 
propostos. Essa prática vai auxiliá-lo a conhecer o conteúdo antes de partir para a aplicação 
da aprendizagem. Temos vários tipos de atividades nesta unidade, que deverão ser realizadas 
como parte obrigatória do conteúdo, para o domínio do conhecimento adquirido.
É importante também que você assista à apresentação em PowerPoint narrado desta unidade, 
pois ela sintetiza o conteúdo e será de grande auxílio para consolidação do que for visto no 
material teórico.
É fundamental a sua participação no debate com seus colegas sobre os temas propostos; 
afinal, os que trazem experiências poderão compartilhá-las com os que não a possuem ou 
que estão em início de carreira.
 · Nesta unidade, estudaremos as tecnologias envolvidas no 
desenvolvimento de soluções cliente/servidor na internet 
– conhecer quais delas estão disponíveis no mercado é 
fundamental para qualquer profissional que deseja seguir 
carreira na área de Web.
Tecnologias Cliente / Servidor na Internet
• .NET
6
Unidade: Tecnologias Cliente / Servidor na Internet
Contextualização
Em 1995, Rasmus Lerdorf, um desenvolvedor canadiano-dinamarquês, queria implementar 
funcionalidades de consulta de estatísticas baseadas em números de acesso a currículo on-line. 
Para isso, criou uma série de scripts no formato CGI na linguagem C, batizando-os de Personal 
Home Page Tools. Era o início da linguagem que conhecemos hoje como PHP, que está presente 
em diversas e diversas páginas da Internet, permitindo funcionalidades inúmeras a todas elas.
Assim como o PHP, outras soluções que tragam novas possibilidades a sistemas cliente/
servidor na internet são muito procuradas por empresas que querem seus produtos e serviços 
acessíveis de um modo fácil, rápido e confiável na web, criando um nicho de mercado enorme 
para empresas de tecnologia e desenvolvedores.
Seguindo essa tendência de busca por novas soluções, em 1989, um holandês chamado 
Guido van Rossum decidiu criar uma linguagem diferente de tudo o que já se tinha visto. Ele 
queria uma linguagem que fosse aberta e comunitária, e que trouxesse ao desenvolvedor 
novas possibilidades. Em 1991, Guido lançou essa linguagem, chamada Python, que tem 
ganhado cada vez mais adeptos – principalmente quando temos uma solução Python 
aliada ao framework Django, muito procurada por desenvolvedores web que desejam criar 
soluções cliente/servidor em web.
Independentemente da linguagem ou solução escolhida, o papel de novas tecnologias 
aplicadas a esses contextos é muito importante e cresce cada vez mais, ampliando a demanda de 
novos profissionais. Portanto, seja bem-vindo, ou bem-vinda, a esse novo cenário de soluções, 
escolha uma tecnologia que mais se encaixa em seu perfil e siga em frente, pois a nossa área 
necessita de seus talentos.
7
Introdução
Ao fazermos uma rápida busca pela internet a procura de tecnologias e linguagens que 
podemos utilizar no contexto de Web, perceberemos a quantidade e diversidade de soluções que 
o mercado oferece aos profissionais de tecnologia. Dentre essas soluções, algumas se destacam 
e é muito importante que você as conheça e saiba suas aplicabilidades e exemplos. 
Nesse capitulo, você encontrará algumas dessas tecnologias, que podemos utilizar na 
internet para criar possibilidades em sistemas cliente/servidor. Como cada tecnologia e 
linguagem possuem muitas informações, modos de utilização, declaração de variáveis e 
detalhes particulares, abaixo você encontra o essencial de cada uma dessas tecnologias para 
auxiliar na busca e formação de seu conhecimento.
ASP
 Em 1996, durante a Site Builders Conference and the Professional Developers Conference, a 
Microsoft apresentou ao mundo sua nova solução para ambientes de programação focados em 
servidores web: o ASP – abreviação de Active Server Pages ou, em tradução livre, Páginas de 
Servidor Ativas. Ele possui a função de criar páginas dinâmicas, interativas e possibilitar novos 
recursos aos clientes que já utilizavam soluções Microsoft aplicadas à Internet (LOTAR, 2010).
 O ASP foi criado exclusivamente para servidores Microsoft que utilizavam o IIS (Internet 
Information Service) para hospedar páginas e prover acesso a elas – por isso era exclusivo para 
desenvolvedores e empresas que já utilizavam soluções Microsoft. O IIS permitia hospedar 
páginas em HTML e, como complemento, permitia incluir scripts ASP nas funcionalidades 
das páginas hospedadas.
Primeiros passos em ASP
Ao abrir uma página com extensão .asp, podemos observar que ela irá possuir códigos em 
HTML e scripts contendo instruções em ASP, que permitem o dinamismo das páginas e a interação 
com os usuários. Outro fato importante é que os scripts ASP não são executados diretamente na 
máquina do cliente, cabe ao servidor que hospeda a página processar as instruções e entregar 
a seu cliente a funcionalidade, esse fator permite que diversos navegadores possam acessar 
páginas ASP sem problemas.
Vejamos agora um exemplo simples de aplicação de um script ASP em uma página HTML, 
trazendo assim algum dinamismo a essa página. Um fator muito importante é que os scripts 
ASP não podem ser visualizados pelo cliente, pois ficam apenas implementados no servidor, 
deixando o cliente apenas visualizar o código HTML puro.
8
Unidade: Tecnologias Cliente / Servidor na Internet
Abaixo, temos um código simples em HTML:
<HTML>
 <HEAD>
 <TITLE> Minha página em ASP </TITLE>
 </HEAD>
 <BODY>
 A hora atual é 19:24:31 e estamos no dia 14
 </BODY>
</HTML>
Perceba que a página deseja mostrar ao cliente a hora atual e o dia, porém, essa função não 
é possível apenas com o código HTML. Vamos implementar um script ASP para isso:
<HTML>
 <HEAD>
 <TITLE> Minha página em ASP </TITLE>
 </HEAD>
 <BODY>
 A hora atual é <%=time%> e estamos no dia <%=day(now)%>
 </BODY>
</HTML>
Vejamos um exemplo mais elaborado, no qual temos uma página simples em HTML solicitando 
informações a um cliente e, logo após, uma página ASP que exibe os valores recebidos.
Considere o formulário HTML abaixo, solicitando o Nome e o Telefone do cliente:
Figura 1 – Exemplo de Formulário
9
 Vejamos abaixo o código HTML utilizado para criar o formulário acima:
• Meusdados.html
<HTML> 
 <HEAD> 
 <TITLE>Meus Dados</TITLE> 
 </HEAD> 
 <BODY>
 <FORM name=”Form” action=”request.asp” method=”get”> 
 Nome
 <INPUT type=”text” name=”NomeCompleto” size=”30”><p>
 Telefone:
 <INPUT type=”text” name=”Telefone” size=”15”><p>
 <INPUT type=”submit” value=”Enviar formulário”> 
 </FORM> 
</HTML>
Veja no código que a tag <Form> possui o action=”request.asp”, enviando os dados pelo 
método get (method=”get”) para a página request.asp.
Vejamos agora como deverá ser o código da página resquest.asp e como utilizar as informações 
da página Meusdados.html
<HTML>
 <HEAD><TITLE>Minha página ASP</TITLE>
 <%
 NomeCompleto = request.querystring(“NomeCompleto”)
 Telefone = request.querystring(“Telefone”)
 %>
 </HEAD>
 <BODY>
 Seus Dados:
 Nome: <% response.write(NomeCompleto)%><BR>
 Telefone: <% response.write(Telefone)%></P>
 </BODY>
</HTML>
Veja que conseguimos a informação digitada no formulário da página Meusdados.html 
através do resquest.querytring. Perceba também que utilizamos o mesmo nome dado no tag 
<INPUT> NomeCompleto. Conseguimos, assim, exibir para o cliente a informação através do 
<% response.write(NomeCompleto)%>.10
Unidade: Tecnologias Cliente / Servidor na Internet
ASP.NET
Como toda tecnologia sempre está em constante mudança e melhoramento, não seria diferente 
com o ASP. O ASP.NET é considerado a próxima geração do ASP, e é muito utilizado em sites 
comercias. Como principal vantagem, permite orientação a objetos e pode ser implementado 
no Visual Studio .NET.
Acesse: http://www.asp.net/get-started
Esse é o site oficial da Microsoft, que permite fazer download do Visual Studio e 
começar a desenvolver soluções ASP.NET – acesso obrigatório para programadores!
PHP
Responsável por grande parte da evolução tecnológica voltada a desenvolvimento web, o 
PHP é uma linguagem para páginas dinâmicas e possibilita muitas funções em uma ambiente 
Cliente/Servidor. Uma grande vantagem do PHP é seu código ser livre e gratuito, possibilitando a 
qualquer um utilizar sua estrutura sem preocupações de diretos. Além de gratuito, o PHP possui 
alto nível de segurança e é totalmente compatível com o Linux, principalmente em soluções web 
do tipo LAMP: Linux + Apache + MySQL + PHP.
Estrutura da Linguagem
O PHP pode ser utilizado em e-commerce, paginas pessoais, sistemas de intranet e em 
gerenciamento de banco de dados. Assim como outras soluções, a estrutura da linguagem se inicia 
com a requisição de página do cliente, o servidor por sua vez procura a página solicitada e interpreta 
o código PHP contido nela, retornando o resultado da função ali contida (MILANI, 2010).
Vejamos um exemplo de uma página PHP:
<HTML> 
 <HEAD> 
 <TITLE>Insira seus Dados</TITLE> 
 </HEAD> 
 <BODY> 
 <?
 echo “Esse script é PHP”;
 ?>
 </BODY> 
<?HTML>
11
Perceba que assim como em outras linguagens, também utilizamos o HTML como linguagem 
base, codificando o PHP entre suas tags. Para diferenciar o PHP, utilizamos o <?.
Vejamos outro exemplo:
<HTML><BODY>
 <?
 $texto1 = “PHP”;
 $texto2 = “Esse é um exemplo simples de $texto1”; 
 $echo $texto2;
 ?>
</BODY></HTML>
O código acima exibiria no navegador a seguinte frase: 
Esse é um exemplo simples de PHP. 
Perceba que foi criado uma variável chamada $texto1, que armazenou o valor “PHP”, e 
outra chamada $texto2, que armazenou a frase. Podemos exibir no navegador a frase completa 
através do $echo.
Vejamos outro exemplo, agora utilizando alguma funcionalidade:
<HTML>
 <BODY>
 <?
 function soma($valor1, $valor2){
 return ($valor1+$valor2)/2;;
 }
 $media = soma(10, 20);
 echo “A media é $media”;
 ?>
 </BODY>
</HTML>
O código acima possui a função de calcular uma simples média, veja que foi criada uma 
função chamada soma através do function, e reservada duas variáveis: $valor1 e $valor2. Essa 
função retorna essas duas variáveis, sendo divididas por 2, caracterizando uma média. Logo 
após, temos outra variável chamada $media, recebendo o retorno da função media com os 
valores das variáveis definidos como 10 e 20. Para finalizar, exibimos no navegador através do 
echo o resultado da média.
12
Unidade: Tecnologias Cliente / Servidor na Internet
A linguagem permite utilizar funções como de IF:
<?
$num1 = 10;
IF ($num == 10){
echo “Essa linha será exibida”;
}
?>
E também funções de repetição do o Do WHILE:
?>
$var = 10;
do{
echo “Repetindo”;
}while ($var < 10);
?>
Acima, pudemos ver alguns exemplos de como é estruturada a linguagem PHP, esperamos 
que tenha se sentido incentivado a buscar conhecimento sobre essa linguagem. O PHP não 
se resume a essas funções, portanto, se você estava a procura de uma linguagem web que 
possibilita criar soluções Cliente/Servidor, acima estão os primeiros passos.
Para que você se aprofunde no PHP, sugerimos visitar os sites abaixo:
 » Site oficial do PHP para downloads: http://www.php.net/
 » Manual que descreve as funções do PHP: http://www.php.net/manual/pt_BR/
 » No site do W3schools temos diversos tutoriais: http://www.w3schools.com/PHP/
 » Grupo dos Desenvolvedores de PHP do Estado de São Paulo: http://phpsp.org.br/
.NET
Ainda na temática Microsoft, temos a plataforma .NET, lançada na virada do milênio e que 
possui dois objetivos principais: o primeiro é facilitar o trabalho do desenvolvedor, tornando a 
construção do projeto prática e atendendo a qualquer necessidade do cliente; a segunda é o de 
se estabelecer como uma solução viável no ambiente de Web Services, tendo como principal 
concorrente as soluções Java.
.NET (lê-se dotNet) é uma tecnologia focada em atender os padrões que estão incorporados 
na internet porém sem deixar de lado as características que são estabelecidas pela Microsoft, 
o desenvolvedor pode então se beneficiar com a facilidades de desenvolvimento presentes 
no produtos Microsoft sem se fechar aos padrões da internet e assim comunicar com outras 
tecnologias. (LOTAR 2010)
13
.NET Framework
Para que você possa construir seus projetos em .NET, a Microsoft oferece o .NET Framework 
como um ambiente de programação para aplicações Web e Web Service de modo simplificado. 
Ele suporta linguagens como C++, C#, Visual Basic, ASP.NET, dentre outras.
Como pacote de programas principal voltado a .NET Framework, a Microsoft disponibiliza 
o Microsoft Visual Studio, que é atualizado constantemente, fornecendo meios para se 
desenvolver nas linguagens suportadas pela .NET Framework. A seguir, alguns exemplos de 
codificação nesse ambiente.
Vejamos abaixo um exemplo da linguagem C#:
using System;
class HelloWorld
{
 static void Main()
 {
 Console.WriteLine(“Hello World”);
 }
}
Veja que o programa começa com o using System, no qual indicamos que o programa 
abaixo pede as classes e funções presentes no System. Logo após, temos a classe HelloWorld e, 
como toda classe, com ela podemos criar objetos e com eles atributos e métodos. Porém, nessa 
classe, apenas utilizamos a classe Console, possível de ser utilizada devido a termos usado o 
System no começo do código e utilizar o WriteLine, que está presente dentro da classe Console 
– podemos ver essa relação pelo “.” entre o Console e o WriteLine para, assim, esse código 
mostrar ao usuário a frase Hello World.
Vejamos outro exemplo:
using System;
using System.Collections.Generic;
using System.Text;
Public class Cliente{
 private long id;
 private double renda;
 private DateTime nascimento;
 private string nome; 
Public Cliente(long id, double renda, DateTime nascimento, string nome){
 this.id = id;
 this.renda = renda;
 this.nascimento = nascimento;
 this.nome = nome;
 } 
} 
14
Unidade: Tecnologias Cliente / Servidor na Internet
Para que você conheça mais sobre o .Net, sugiro os sites abaixo:
 » Revista .Net: http://www.devmedia.com.br/revista-easy-dotnet-magazine
 » Conteúdo Extra: http://www.devmedia.com.br/dotnet/
 » Site oficial da Microsoft .Net: http://www.microsoft.com/net
ColdFusion
Ao começar a estudar essa tecnologia, você perceberá que ColdFusion não se resume apenas 
a uma linguagem, mais do que isso, ela fornece soluções web para desenvolvimento de sites, 
portais, intranets e demais aplicações web. Como ela possui funções para auxiliar em sistemas 
Cliente/Servidor, é fundamental conhecê-la.
Seu funcionamento
Inicialmente chamado de Cold Fusion, foi criado em 1995 pelos irmãos Allaire. Logo depois 
foi comprado pela empresa Adobe. Atualmente, para se trabalhar com essa tecnologia, primeiro 
temos que entender que CF (ColdFusion) também é um servidor de aplicações web, ou seja, 
o ColdFusion é um ambiente de desenvolvimento de aplicações web dinâmicas com suporte 
à linguagem CFML – abreviação de ColdFusion Markup Language. Nesse ambiente, podemos 
utilizar banco de dados, recursos de e-mail e aplicações Java, o que torna o CF atraente a 
diversos desenvolvedores (BRADLEY, 2000).
Você pode desenvolver páginas utilizando a linguagem CFML, que é baseada em tags, assim 
como o HTML, porém irá necessitar configurar um servidor CF para interpretar a linguagem. 
Primeiramente,o servidor realiza a leitura das páginas à procura de tags, que são iniciadas por 
CF, além de ler variáveis ou funções que contenham o sinal #.
Cliente Rede
Internet ou
Intranet
Servidor
Cold Fusion
Servidor
Página
Web
Página
CFML
Servidor
Web
Página
Web
Navegador
1
5
4
2
3
Requisição
HTTP
Bco. Dados
E - mail
Diretórios
Arq. Sistema
COM/CORBA
Servidores Web
Figura 2 – Esquema ColdFusion
 
1. Quando o usuário faz alguma ação em um site, o navegador envia uma requisição HTTP 
para o servidor Web;
2. O servidor Web, recebendo a requisição, envia os dados para um servidor ColdFusion 
através de API;
15
3. O servidor de ColdFusion, por sua vez, interpreta os códigos de CFML que estão programadas 
dentro das páginas. Dependendo da programação CFML da página, o servidor então faz 
interações com servidores de e-mail, banco de dados, diretórios e demais serviços;
4. Após processar a programação CFML e acessar os serviços que ali estão implementados, 
o servidor ColdFusion gera dinamicamente uma página HTML que será enviada ao 
servidor Web;
5. Por último, o servidor Web retorna a página HTML para o usuário.
Veja um exemplo de CFML em uma página HTML:
<HTML>
 <HEAD>
 <TITLE>Olá Mundo</TITLE>
 </HEAD>
 <BODY> 
 <CFSET OLA=’Olá Mundo’>
 <CFOUTPUT>
 <FONT SIZE=”10”>#ola#</FONT>
 </CFOUTPUT>
 </BODY>
</HTML>
Veja outro exemplo, utilizando acesso a banco de dados, principalmente em aplicações no 
contexto de Cliente/Servidor.
<CFQUERY DATASOURSE=”AgendaContatos” NAME=”Agenda”>
 SELECT * FROM Contatos
 </CFQUERY>
<HTML>
 <HEAD><TITLE>Teste Banco</TITLE></HEAD>
 <BODY>
 <H1> Testando Agenda </H1>
 <CFOUTPUT QUERY=”Agenda”>
 #home#.#telefone#
 <CFOUTPUT>
 </BODY>
</HTML>
Iremos agora conhecer uma das tecnologias que vem ganhando cada vez mais espaço no 
mercado. Em 1991, um holandês chamado Guido Van Rossum lança ao mundo a linguagem 
Python em busca de novas possibilidades na programação interpretada. De código aberto e 
disponível para vários sistemas operacionais, Python tem a característica de ser interpretada 
pois não necessita ser compilada, ou seja, traduzida para a linguagem de máquina; ela apenas 
precisa ser “lida” por um interpretador (assim como HTML), que irá traduzir as instruções que 
ali estão presentes (BROOKS-BILSON, 2003).
16
Unidade: Tecnologias Cliente / Servidor na Internet
O nome Python foi dado em homenagem ao programa de TV britânico chamado Monty 
Python’s Flying Circus, e não em associação a cobra Python. Além de interpretação, Python 
não necessita que declaremos variáveis como pré-antecedente de programação; a declaração 
de variáveis ocorre de forma dinâmica e bem intuitiva ao programador. Por ser uma linguagem 
de alto nível, possui recursos com strings, listas, dicionários, classes e, como característica 
fundamental, Python é orientado a objetos (LABAKI, 2010).
Vejamos agora alguns exemplos de códigos em Python:
Começando com o simples Hello Word, podemos fazer da seguinte forma:
a = “Hello”
b = “World”
print a, b
Como Saída temos: Hello World
Em Python, não é necessário dizermos que a variável a é do tipo Char. Ao receber um valor, 
a definição do tipo de variável é dinâmica.
Veja outra opção quando se trata de listas, vamos às declarações:
numeros = [1, 2, 3]
opcoes = [“sim”, “não”]
listas = [números, opções]
Em nenhum momento foi necessário preparar a variável para receber vários valores em uma 
lista. Ao exibir essas listas, temos como saída:
print numeros[]
Saída: 1, 2, 3
Se quiser que seja exibido apenas o 3º número, podemos executar a seguinte saída:
print numeros[2]
Saída: 3 // entendendo que a contagem começa a partir do 0;
Ou ainda para exibir as duas listas podemos apenas gerar essa saída:
print listas
Saída: 1, 2, 3, sim, não
Ou ainda, podemos ver uma aplicação mais elaborada, uma rotina muito conhecida por 
estudantes de programação, descobrindo números primos, veja como podemos programar essa 
rotina facilmente no Python:
p = input(“Entre com um número natural: “)
primo = True
for i in range92, n):
17
 if n%i == 0:
 primo = False
if primo:
 print n, “numero primo”
else:
 print n, “não é numero primo”
 
Com os exemplos acima esperamos que tenha percebido que a linguagem Python é 
extremamente simples e intuitiva, e por isso muito indicada para quem está dando seus primeiros 
passos na programação. Veja na seção Material Complementar onde você pode encontrar mais 
conteúdos de Python.
18
Unidade: Tecnologias Cliente / Servidor na Internet
Material Complementar
Como complemento desta unidade, sugiro a leitura completa do capítulo I do livro: 
 » MENEZES, N N C. Introdução a programação com Python. São Paulo: Novatec, 2009.
Sugiro, também, a leitura completa do livro:
 » LOTAR, A. Como Programar com ASP.NET e C#. Novatec, 2010.
19
Referências
BROOKS-BILSON, R. Programming ColdFusion MX: Creating Dynamic Web Applications 
2/E, O’Reilly, 2003 
LABAKI, J. Introdução ao Python – Módula A, Grupo Python, UNESP – Ilha Solteira
HETLAND, M L. Beginning Python: from novice to Professional. Apress, 2005.
LOTAR, A. Como Programar com ASP.NET e C#. Novatec, 2010.
MILANI, André. Construindo Aplicações Web com PHP e MySQl. Novatec, 2010.
BRADLEY, M Z. ColdFusion – Guia rápido para Desenvolvimento na Web. Ciência 
Moderna, 2000.
20
Unidade: Tecnologias Cliente / Servidor na Internet
Anotações
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvão Bueno, 868
CEP 01506-000
São Paulo SP Brasil 
Tel: (55 11) 3385-3000
Sistema Servidor 
Cliente
Programação de aplicações cliente/servidor na WEB com JSP
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Marcio Funes
Revisão Técnica:
Prof. Ms. Luiz Carlos Reis
Revisão Textual:
Profa. Ms. Claudio Brites
5
• Introdução
• Utilizando Scriptlet em JSP
• Criando Scripts dinâmicos em JSP
Nesta unidade, veremos alguns assuntos introdutórios da nossa disciplina e aproveitaremos 
para apresentar a você alguns conceitos que utilizaremos na estrutura de todas as nossas 
unidades.
Lembramos você da importância de realizar todas as atividades propostas dentro do prazo 
estabelecido para cada unidade, pois, dessa forma, você evitará que o conteúdo se acumule 
e que você tenha problemas ao final do semestre.
Uma última recomendação: caso tenha problemas para acessar algum item da disciplina ou 
dúvidas em relação ao conteúdo, não deixe de entrar em contato com seu professor tutor 
através do campo de mensagens.
 · Nesta unidade, trabalharemos o seguinte tópico de conteúdo: 
Conceitos Iniciais: uma visão geral sobre a arquitetura Java 
sendo aplicada de forma dinâmica na Web. Veremos também 
o papel de Servelet e Servetlet para utilizarmos JavaServer 
Pages em busca de soluções Web.
Programação de aplicações cliente/
servidor na WEB com JSP
• Conclusão
6
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Contextualização
Seja em qualquer ramo, o mercado sempre está em busca de novidades – novos produtos, 
novos serviços, novos profissionais e novas tecnologias. A novidade sempre pode trazer uma 
oportunidade de negócio antes não vista. 
Pensando nisso, em meados de 1990, os primeiros passos para a tecnologia Java foram dados 
– porém, bem longe da Indonésia que, apesar de possuir a “Ilha de Java” em sua geografia e 
ter forte presença do Budismo (que poderia ajudar os programadores a ficarem mais tranquilos 
quando aquele código não queria compilar), não foi o berço dessa tecnologia.
Tudo aconteceu na Sun Microsystems, 
quando uma equipe tinha por intenção 
desenvolver um aplicativo portátil, que 
teria a capacidade de rodar em qualquer 
microchip – inicialmente usando como 
base a linguagem C/C++. Contudo, os 
desenvolvedores perceberam que algumas 
limitações da linguagem não permitiriam 
que o app se tornasse 100% portátil, como 
o projeto necessitava.
Perceba, nesse exemplo, que, quando o mercado deseja criar umaoportunidade de negócio, 
a limitação de uma tecnologia é solucionada com a inovação daquilo que já existe. Com isso, 
a Sun removeu algumas características e alterou outras, criando uma nova linguagem de 
programação, batizada como Oak (carvalho, em português).
Em 1995, a internet já se tornava popular e a busca de inovações nessa área também ocorria, 
como em muitas outras anteriores. Por conta disso, a linguagem Oak, por ter desde o início de 
sua concepção a possibilidade de rodar em várias plataformas, era perfeita, já que a internet 
também possuía essa característica (rodar em várias plataformas). 
Com o sucesso iminente, a Sun renomeou a linguagem para Java, alterou algumas 
características para se adaptar à realidade do mercado e lançou no mesmo ano sua nova solução.
Ainda na mesma ideia de inovação para trazer novidades para o mercado, viu-se a 
possibilidade de criar uma tecnologia que se relacionava com uma dificuldade na área de web: 
criar páginas dinâmicas e de fácil implementação sem abrir mão das funções essenciais que o 
Java podia oferecer a um site. Nesse contexto, surgi a tecnologia JSP (JavaServer Pages), que 
vem exatamente permitir esse dinamismo, podendo inserir trechos com implementações Java, 
trazendo assim as funções desejadas dentro de uma linguagem já conhecida e muito utilizada 
na internet: o HTML.
Podemos, então, ver que a tecnologia JSP tem por foco trazer inovação para mercado e é 
baseada em Java, que alguns anos antes de sua criação teve o mesmo foco: quebrar barreiras 
para trazer novas soluções tecnológicas antes não disponíveis.
Thinkstock/Getty Images
Figura 1 – Estátua de Buda presente na Ilha de Java na Indonésia.
7
Introdução
A evolução está presente na humanidade, temos evidências históricas de sua origem, o 
próprio conceito de evolução só é possível devido à inteligência adquirida por nós seres 
humanos até hoje para cunhá-lo. Sabemos que essa evolução nos trouxe a necessidade de 
criar ferramentas que aperfeiçoassem nosso trabalho – e otimizar os processos humanos é 
uma das bases da computação.
Ainda dentro da computação, vemos novos conceitos, ferramentas e técnicas que surgem 
para melhorar a interação que temos com o computador. Um dos conceitos criados para permitir 
maior dinamismo ao se criar soluções para a web é a tecnologia chamada JSP, abreviação de 
JavaServer Pages (KOLB 2000).
Como você pode notar, a palavra Java não está por coincidência no nome JavaServer 
Pages. JSP é baseada na tecnologia Java; mais que “apenas” baseada, o JSP tem por objetivo 
simplificar o processo de desenvolvimento para web sem deixar o dinamismo muito procurado 
em sites de internet de fora. As possibilidades que a tecnologia Java pode trazer são incríveis, 
por esse motivo surge a necessidade de inserir os recursos que o Java pode fornecer na estrutura 
de linguagens já conhecidas por programadores web (KOLB 2000).
Figura 1 – Comparando linguagens.
Fonte: vidadeprogramador.com.br
8
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Utilizando Scriptlet em JSP
Para entendermos melhor como a tecnologia JSP funciona, precisamos sempre ter em mente 
que JSP (JavaServer Page) utiliza a arquitetura Java como base e por isso trabalha utilizando 
seus conceitos. Dentro da arquitetura Java temos os Servlets, entender seu funcionamento nos 
ajuda a compreender melhor a função do JSP e como ambos trabalham juntos.
Servlets
Qualquer usuário da internet atual, depois de visitar algumas páginas, já percebe que a 
maioria delas fornece algum tipo de serviço; diferente do início dos anos 90, onde a maioria das 
páginas era simplesmente estática e não previa suporte à interação com o usuário. Hoje vemos 
a internet como fonte de negócio e, portanto, sinônimo de serviços.
Uma das ideias iniciais para transformar páginas estáticas em dinâmicas era prover o 
dinamismo por meio de um servidor que interpretaria a solicitação do usuário e devolveria a ele 
uma página resposta. Desse conceito surgiu uma tecnologia chamada CGI, na qual era possível 
escrever códigos que não rodariam em um navegador como C/C++, eles teriam o servidor 
como ponte interligando a função que o usuário desejasse com a funcionalidade contida no 
código que estava no servidor (TODD; SZOLKOWSKI 2003).
Em 1997, na tecnologia Java, esse conceito foi chamado se Servlet, que vem da ideia de um 
pequeno servidor que tem por objetivo interpretar e compilar as solicitações do usuário através 
de páginas web, procurar as funções solicitadas em suas classes e códigos Java e gerar uma 
página dinâmica de resposta ao usuário.
Agora que vimos que podemos usar um Servlet para interpretar solicitações, podemos 
entender melhor como o JSP se encaixa nessa arquitetura: como possuímos códigos HTML 
que podem ser interpretados em qualquer navegador e temos os códigos Java que podem ser 
implementados em um Servlet, podemos conectar ambos criando um código que possua os 
benefícios de ambos.
Scriptlet
Para que possamos utilizar o código Java dentro de uma JSP utilizamos essa sintaxe:
<% ... %>
Segundo Todd e Szolkowski, esse tipo de codificação é chamado de Scriptlet. É um nome 
que vem da palavra Script, que em inglês significa roteiro; adicionando o sufixo “let”, temos, em 
tradução livre, “scriptzinho”, ou seja, um pequeno script. 
Assim, deixamos a convencional estrutura HTML, que utiliza a tag < ... />, e acrescentamos 
o % para que nosso Servlet consiga diferenciar o que é código Java e o que é HTML. 
Vejamos um exemplo.
9
Vamos utilizar uma expressão Java muito comum para exibir texto, o out.println. Porém, 
vamos colocá-la em uma JSP:
Index_exemplo.jsp
<html> 
 <head> 
 <ti tle> Pagina JSP</ti tle> 
 </head> 
 <body> 
 <% out.println(“Ola Mundo”); %>
 </body> 
</html>
Perceba que utilizamos o HTML em nossa JSP e embutimos um código exclusivo Java 
dentro da página usando o Scriptlet <% ... %>, assim utilizamos o que cada linguagem tem 
de melhor a oferecer.
Declaração de variáveis
Uma das mais conhecidas funções de qualquer linguagem compilada é a possibilidade de criar 
variáveis. Como em HTML não temos essa possibilidade, podemos utilizar JSP e assim teremos a 
facilidade das tags HTML e as possibilidades da linguagem Java (KURNIAWAN, 2002). 
Vejamos um exemplo:
 Index_exemplo2.jsp
<html> 
 <head> 
 <ti tle> Pagina JSP</ti tle> 
 </head> 
 <body> 
 <% String texto = “Ola Mundo”; %>
<%-- Perceba que na linha acima colocamos “Ola Mundo” dentro da variável “texto” e 
a propósito eu sou um comentário --%>
 <% out.println(variavel); %>
<%-- Agora podemos exibir o conteúdo da variável texto como codifi cado na linha 
acima --%>
 </body> 
</html>
10
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Estruturas de programação
Assim como no exemplo anterior, podemos utilizar mais conceitos Java e criar estruturas de 
condição. 
Vejamos um exemplo no qual podemos utilizar o IF e o ELSE para exibir o nome do mês 
atual por extenso:
index_condicao.jsp
<html> 
 <head> 
 <ti tle> Pagina JSP</ti tle> 
 </head> 
 <body> 
 <% 
int dia = Integer.parseInt((new SimpleDateFormat(“dd”)).format(new Date())); 
int mes = Integer.parseInt((new SimpleDateFormat(“M”)).format(new Date())); 
int ano = Integer.parseInt((new SimpleDateFormat(“yyyy”)).format(new Date())); 
if(mes==1){ 
out.println(“Hoje é “ + dia + “ de Janeiro de “ + ano); 
}else if(mes==02){ 
out.println(“Hoje é “ + dia + “ de Fevereiro de “ + ano); 
}else if(mes==3){ 
out.println(“Hoje é “ + dia + “ de Março de “ + ano); 
}else if(mes==4){ 
out.println(“Hoje é “ + dia + “ de Abril de “ + ano); 
}else if(mes==5){ 
out.println(“Hoje é “ + dia + “ de Maio de “ + ano); 
}else if(mes==6){ 
out.println(“Hoje é “ + dia + “ de Junho de “ + ano); 
}else if(mes==7){ 
out.println(“Hoje é “ + dia + “ de Julho de “ + ano); 
}else if(mes==8){ 
out.println(“Hoje é “ + dia + “ de Agosto de “ + ano); 
}else if(mes==9){ 
out.println(“Hoje é “ + dia + “ de Setembrode “ + ano); 
}else if(mes==10){ 
11
out.println(“Hoje é “ + dia + “ de Outubro de “ + ano); 
}else if(mes==11){ 
out.println(“Hoje é “ + dia + “ de Novembro de “ + ano); 
}else if(mes==12){ 
out.println(“Hoje é “ + dia + “ de Dezembro de “ + ano); 
} %> 
 </body> 
</html>
Assim como utilizamos estruturas de condição, podemos utilizar qualquer outra estrutura 
presente em Java, basta apenas conhecer qual as características que ela possui, utilizar Scriptlet 
para embutir o código Java dentro da JSP e utilizar os códigos HTML para de forma fácil 
estruturar a sequência do que será exibido ao usuário (KURNIAWAN, 2002).
Para saber mais sobre as características do JSP, acesse:
http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro2.html
Esse tutorial criado pela Oracle mostra passa a passo exemplos de utilizações de 
Servetlet dentro de JSP.
Criando scripts dinâmicos em JSP
Como a palavra de ordem em JSP é o dinamismo, antes de ver os primeiros exemplos de 
codificação, devemos entender o funcionamento geral da tecnologia. 
Vejamos um exemplo:
Quando queremos criar uma página HTML simples, utilizamos tags para mostrar ao navegador 
o que queremos exibir ao usuário. No código abaixo, por exemplo:
<HTML>
 <BODY>
 <b>testando tags</b>
 </BODY>
</HTML>
Apenas mostrando a simples frase “testando tags” em negrito, porém, nosso objetivo é 
entender como inserir um código Java em meio ao HTML e assim criar JSP. Para isso, vamos 
inserir uma diretiva JSP.
12
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Diretivas de JSP
Segundo David (2010), diretivas são tags que fornecem informações ao servidor que irá 
interpretar o código Java contido no JSP. Elas direcionam o modo que o código será interpretado. 
Podemos utilizar três tipos de diretivas JSP: include, page e taglib.
Veja sua sintaxe:
<%@ nome_da_direti va atributo(s)_da_direti va %>
Veja que para caracterizar uma tag em JSP utilizamos o “<%@ ... %>”; diferente do modo 
de tag HTML, no qual utilizamos apenas “< ... />”.
Utilizando o include
A diretiva include dentro de JSP tem por objetivo inserir o conteúdo de outro arquivo em 
uma JSP. 
Vejamos um exemplo:
<%@ include fi le=”endereço_do_arquivo” %> ou 
<jsp:directi ve.include fi le=”endereço_do_arquivo/>
Vamos pensar em uma aplicação do cotidiano envolvendo a diretiva include: uma empresa 
deseja dar as boas vindas sempre que alguém faz o acesso a sua página, porém, ela possui 
várias páginas diferentes e existe a possibilidade de o conteúdo de boas-vindas ser alterado em 
datas festivas – como natal ou páscoa, por exemplo. Nesse caso uma solução seria criar uma 
página de boas-vindas separada do código original de cada página. Assim, as páginas que irão 
exibir as boas-vindas teriam como inclusão o arquivo de boas-vindas que, quando alterado, 
exibiria a alteração onde foi incluído.
index.jsp
boas_vindas.html
clientes.jsp
produtos.jsp
produtos.jsp
Figura 2 – Estruturas de páginas para include.
Fonte: Adaptado de iStock/Getty Images
Dessa forma, sempre teremos a possibilidade de mudar a página boas_vindas.html sempre 
que necessitamos sem nem precisar abrir o código de cada página, como podemos ver na figura 
2. Vejamos agora como seria o código para essa solução:
13
boas_vindas.html
<HTML>
 <BODY>
 <td align=”right” bgcolor=”#FFFF99”>
 <b>Seja bem vindo a nossa página</b>
 </td>
 </BODY>
</HTML>
Agora veja como podemos inserir o conteúdo do arquivo boas_vindas.html em nossa página 
index.html, como mostra a figura 2:
index.jsp
<HTML>
 <BODY>
 <%@ include fi le=”boas_vindas.html” %>
 Texto da página...
 </BODY>
</HTML>
Veja no exemplo que, ao utilizarmos a diretiva include, pudemos inserir todo o conteúdo que 
se encontrava dentro do arquivo boas_vindas.html em apenas uma linha de código por meio 
de uma tag, sendo assim, é como se o código de boas vindas estivesse presente no index.jsp. 
Com essa ação, podemos economizar linhas de código tornando a programação mais enxuta, 
criando um dinamismo entre as páginas de modo que, ao atualizarmos o arquivo boas_vindas.
html, todas as páginas automaticamente estarão atualizadas com a alteração.
Diretiva Page
Essa diretiva possui diversos atributos que dão informações variadas sobre a página em que 
está inserida (DAVID, 2010). Vejamos sua sintaxe:
 <%@ Page atributo1=”valor” atributo2=”valor2” atributo3=”valor3” ... %> 
Ou podemos também utilizar essa sintaxe: 
 <jsp:directi ve.page atributo1=”valor1” atributo2=”valor2” ... />
Vejamos alguns exemplos:
14
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Atributo Info
Por meio dele podemos inserir informações sumarizadas da página: 
</%@ Page info=”Programação cliente/servidor na Web com JSP” %>
Atributo isErrorPage
Usado para informar ao servidor que interpretará o código Java qual será a página para onde 
ele deve encaminhar o usuário – caso a página que esteja acessando possua algum erro –; ou 
seja, a página que conter essa diretiva se torna a página padrão de erro e sempre será exibida 
caso aconteça algum erro em outra página – esse atributo é do tipo booleano:
<%@ Page isErrorPage=”true”%>
Atributo Language
Atributo usado quando queremos especificar qual será a linguagem de criação de script. Em 
geral, utilizamos esse atributo para definir Java como linguagem geradora de scripts:
<@% Page language=”Java” %>
Atributo isThreadSafe
Uma página JSP em geral responde a muitas solicitações; porém, em alguns casos, queremos 
controlar quais páginas deverão responder a essas solicitações, pois foram programadas para 
isso, e quais não devem. Para isso, usamos esse atributo booleano, com o qual podemos criar 
essa definição (TODD; SZOLKOWSKI, 2003).
<%@ Page isThreadSafe=”false” %> ou <%@ Page isThreadSafe=”true” %>
A diretiva Page possui muitos atributos e permite, por meio das funcionalidades que cada 
atributo possui, criar páginas de modos diferentes e, mais importante, gerenciar esses atributos 
moldando e alterando a solução sempre que for necessário de modo fácil e dinâmico (TODD; 
SZOLKOWSKI, 2003).
Diretiva Taglib
Como podemos perceber através do “lib” de seu nome, a Taglib fornece um libraby de tags 
customizadas, que podemos utilizar em nossa JSP, ou seja, podemos criar nossas próprias tags 
em JSP – desenvolvimento, assim, nossa biblioteca de tags, que poderemos utilizar sempre que 
desejarmos e quando for necessário (TODD; SZOLKOWSKI, 2003). 
Veja sua sintaxe:
15
<%@ taglib uri=”endereço_da_bibliotecadetags” prefi x=”Prefi xodaTag” %> 
ou
<jsp:directi ve.taglib uri=” endereço_da_bibliotecadetags” prefi x=” Prefi xodaTag” />
Vejamos um exemplo da construção de uma solução JSP utilizando a diretiva Taglib para 
personalizar o formato de exibição da data atual no formato longo, e não abreviado como é de 
costume em páginas HTML.
1º Passo: Criar uma classe Java que faça a exibição de data no formato 
longo:
package minhastaglibs;
import java.io.IOExcepti on;
import java.text.SimpleDateFormat;
import java.uti l.Calendar;
import javax.servlet.jsp.JspExcepti on;
import javax.servlet.jsp.tagext.TagSupport;
@SuppressWarnings(“serial”)
public class NovaData extends TagSupport {
 public int doStartTag() throws JspExcepti on {
 try {
 String formatoLong = “EEEEEE’,’ dd ‘de’ MMMM ‘de’ yyyy”;
 SimpleDateFormat formatt er = new SimpleDateFormat(formatoLong);
 String dataAtual = formatt er.format(Calendar.getInstance().getTime());
 pageContext.getOut().print(horaAtual);
 } catch (IOExcepti on e) {
 throw new JspExcepti on(e.getMessage());
 }
 return SKIP_BODY;
 }
}
16
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
2º Passo: Criação do arquivo .TLD, que contém as descrição das tags 
que criamos:
<?xml version=”1.0” encoding=”iso-8859-1” ?> 
<!DOCTYPE taglib PUBLIC “-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN” 
“ htt p://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd”><taglib> 
 <tlibversion>1.0</tlibversion> 
 <jspversion>1.1</jspversion> 
 <shortname>Minhastaglibs</shortname> 
 <info>Minhas Tags</info>
 <tag> 
 <name>dataAtual</name> 
 <tagclass>minhastaglibs.NovaData</tagclass>
 <bodycontent>JSP</bodycontent> 
 <info>Uti lizada para informar a data atual em formato longo</info> 
 </tag> 
</taglib>
3º Passo: No arquivo web.xml, presente na sua aplicação web, adicione 
a taglib para sua configuração:
<taglib> 
 <taglib-uri>/tags/minhastaglibs</taglib-uri> 
 <taglib-locati on>/WEB-INF/tags/minhastaglibs.tld</taglib-locati on> 
</taglib>
4º Passo: Criarmos nossa página .jsp para testar nossa Tablib:
<%@ taglib uri=”/tags/minhastaglibs” prefi x=”novoformato”%>
<!-- perceba que na sintaxe acima indicamos a URL onde se encontra nossas Tags: “/tags/
minhastaglibs” e indicamos um prefi xo que será usado para chamar a Tag -->
<! -- agora iremos criar o código HTML e inserir a data modifi cada -->
<HTML>
 <HEAD>
 <meta HTTP-equiv=”Content-Type” content=”text/HTML; charset=ISSO-8859-1”>
17
 <TITLE>Minha Primeira Página JSP</TITLE>
 </HEAD>
 <BODY>
 A data atual: <novoformato:dataAtual></novoformato:dataAtual>
 <!-- veja que uti lizamos <prefi x:nome_da_tag> -->
 </BODY>
</HTML>
Todo esse trabalho para criar apenas a conversão de tempo para um formato diferente é um 
dos exemplos que podemos fazer, a vantagem de criar tags é a de que, na próxima vez em que 
precisar utilizar essa nova formatação de data, você não precisará criar novamente a tag – ela 
está guardada em sua biblioteca, basta apenas utilizar o código:
<%@ taglib uri=”/tags/minhastaglibs” prefi x=”novoformato”%>
Para indicar que você deseja utilizar um Taglib e também o caminho no qual se encontra a 
Tag e um prefix para ser utilizado no código, depois utilize:
<prefi x:nome_da_tage>
Para dizer qual das tags que ali estão em sua biblioteca você deseja utilizar, dessa forma, você 
terá o trabalho de criá-la apenas uma vez, depois apenas a utilize quando achar necessário.
 Perceba que sem essas diretivas, que são a base do JSP, não poderíamos utilizar as funções que o 
código Java possui – seja usando o include para inserir o conteúdo de outros arquivos em uma JSP, 
ou utilizando o page para prover informações importantes ao servidor que estará interpretando o 
código Java contido no JSP ou, ainda, criando nossas próprias funcionalidades por meio da Taglib.
Ainda existe muito a ser visto em JSP, mas com esses três exemplos de possibilidades já podemos 
observar o potencial para a criação de códigos mais dinâmicos, mesmo em páginas HTML simples.
Conclusão
Podemos concluir que o uso de JSP vem trazer o melhor de duas linguagens em uma só 
tecnologia. Se de um lado temos o HTML, que é a linguagem web mais conhecida – por ser 
uma das primeiras e por ter uma sintaxe simples com possibilidades de rodar em qualquer 
navegador, embora não tenha funções mais elaboradas –, do outro lado temos o Java, que 
possui diversas possibilidades e funcionalidades em sua arquitetura, permitindo a criação do 
dinamismo que as páginas atuais tanto buscam (HANSEN, 2007).
Ao entendermos o funcionamento de JSP, podemos expandir as possibilidades de criar, ao 
mesmo tempo, projetos simples por meio do HTML e com uma infraestrutura complexa com 
Servelets e código de Servetlets, embutindo código Java e tornando JavaServer Pages uma 
solução extremamente atrativa.
18
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Material Complementar
Como complemento desta unidade, sugerimos a leitura completa do capítulo I do livro: 
• TODD, N.; SZOLKOWSKI, M. Javaserver Pages: O Guia do Desenvolvedor. Rio de 
Janeiro: Elsevier, 2003.
Sugerimos, também, a leitura completa do livro:
• KURNIAWAN, B. Java Para a Web Com Servlets, Jsp e Ejb. Rio de Janeiro: Ciencia 
Moderna, 2002.
Boa leitura!
19
Referências
TODD, N.; SZOLKOWSKI, M. Javaserver Pages: O Guia do Desenvolvedor. Rio de Janeiro: 
Elsevier, 2003.
KOLB, M A. Desenvolvendo na Web com Java Server Pages. São Paulo: Editora Ciência 
Moderna, 2000.
KURNIAWAN, B. Java Para a Web Com Servlets, Jsp e Ejb. Rio de Janeiro: Ciencia 
Moderna, 2002.
HANSEN, M. D. Soa Using Java Web Services. New Jersey: Prentice Hall, 2007.
DAVID M, G. JavaServer Pages Avançados. São Paulo: Editora Ciência Moderna, 2010.
20
Unidade: Programação de aplicações cliente/servidor na WEB com JSP
Anotações
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvão Bueno, 868
CEP 01506-000
São Paulo SP Brasil 
Tel: (55 11) 3385-3000
www.cruzeirodosulvirtual.com.br
Rua Galvão Bueno, 868
Tel: (55 11) 3385-3000
Sistema Servidor 
Cliente
Programação de aplicações cliente/servidor na Web com JSP 2
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Marcio Funes
Revisão Técnica:
Prof. Ms. Luiz Carlos Reis
Revisão Textual:
Profa. Ms. Luciene Oliveira da Costa Santos
5
• Banco de Dados em JSP
• JavaBeans em JSP
• JavaScript em JSP
• XML em JSP
• Ajax em JSP
Atenção para a importância de realizar todas as atividades propostas dentro do prazo 
estabelecido para cada unidade, pois, assim, você evitará que o conteúdo se acumule e que 
você tenha problemas ao final do semestre.
Uma última recomendação: caso tenha problemas para acessar algum item da disciplina ou 
dúvidas com relação ao conteúdo, não deixe de entrar em contato com seu professor tutor 
através do botão mensagens
Nesta quinta unidade, você irá estudar como podemos interagir a 
acessibilidade e o dinamismo que a tecnologia JavaServer Pages 
possui com as vantagens que outras tecnologias ligadas a Sistemas 
Cliente / Servidor podem fornecer. Dessa forma, podemos criar 
uma solução de Sistemas Distribuídos completa e atender a 
qualquer demanda que o mercado crescente pode exigir.
Programação de aplicações cliente/
servidor na Web com JSP 2
6
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Contextualização
Você está em dia com a Receita Federal?
Parece uma pergunta estranha para um material ligado à tecnologia. Porém, o tema pode 
nos trazer um excelente exemplo do emprego da tecnologia para administração de declarações 
no Brasil.
Segundo o site da memória da Receita Federal (https://goo.gl/ZLqz25), a primeira disposição 
no Brasil sobre o imposto de renda ocorreu em outubro de 1843, em pleno início do segundo 
reinado. Foram estabelecidas quais seriam as porcentagens que deveriam ser pagas de acordo 
com os vencimentos dos cofres públicos recebidos por qualquer pessoa naquela época.
De 1843 para os tempos atuais, muitas coisas mudaram, por isso tente imaginar a dificuldade 
que o governo tem para administrar essa grande quantidade de informações que devem ser 
processadas, verificadas e acertadas quando necessário. Com a chegada da possibilidade de 
implantação de sistemas cliente / servidor, podemos ver o avanço que o Imposto de Renda 
obteve. Devido a essa tecnologia, a Receita consegue que cada contribuinte (cliente) possa 
enviar de seu computador as informações pertinentes às suas declarações diretamente para o 
servidor da Receita Federal.
Foi-se o tempo em que era necessário salvar suas declarações em um disquete e entregar 
diretamente na Receita Federal de sua cidade onde cada disquete seria lido e processado. A 
Receita criou o sistema chamado Receitanet que em sua ultima versão utiliza a tecnologia Java 
para estabelecer a conexão cliente / servidor com os servidores da receita.
Apesar de ainda serem muitas informações como no passado, a velocidade e as possibilidades 
que a receita tem de gestão e controle aumentaram muito desde o surgimento do Imposto de 
Renda no Brasil. Este é um assunto que está presente em nosso cotidiano e que nos mostra 
também o poder que existe na tecnologia quando bem empregada e administrada.
Fonte: https://goo.gl/ZLqz25
7
Banco de Dados em JSP
Muitos serviços disponíveis na Internet sósão possíveis devido à existência de meios para 
criar e gerenciar banco de dados e aplicá-los a soluções Web. Várias são essas possibilidades 
devido a diversas tecnologias que permitem a conexão com banco de dados. Vejamos uma 
solução muito utilizada atualmente que consiste em utilizar os conceitos do JSP.
Estrutura
Para conceber uma solução, seja ela qual for, uma boa estrutura é fundamental. Para conexão 
com banco de dados e JSP, temos algumas possibilidades. 
Para esse tópico, iremos utilizar a estrutura abaixo:
• NetBeans IDE: Pacote Java EE 7.2, 7.3, 7.4, 8.0
• JDK: Versão 7 ou 8
• Servidor de banco de dados MySQL: 5.x
• Driver MySQL Connector/ J JDBC: versão 5.x
• GlassFish Server Open Source Edition: 3.x ou 4.x
Vamos, agora, entender cada elemento que compõe essa estrutura:
NetBeans IDE
Primeiro, pensamos em qual será o ambiente de desenvolvimento que iremos utilizar, ou seja, 
escolhemos qual será a IDE (Integrated Development Environment) a ser utilizada. O escolhido 
será NetBeans IDE por ser altamente aceito no mercado.
Download: https://netbeans.org/downloads/
JDK – Java Development Kit
O JDK é o Kit de Desenvolvimento Java que contém um conjunto utilitário que permite criar 
sistemas para a plataforma Java; nele, podemos encontrar a máquina virtual Java (JVM), o 
compilador Java, APIS do Java e diversas ferramentas e utilitários necessários para programação 
em Java.
Download: https://goo.gl/pwI5tf
MySQL
O MySQL é um sistema de gerenciamento de banco de dados (SGBD) que usa a linguagem 
SQL como interface. Atualmente mantida pela Oracle, é amplamente utilizada pelo mundo todo 
tendo a Google e a Cisco como exemplo de clientes (TURNER, 2002).
Download: http://www.mysql.com/downloads/
Driver JDBC
O Driver JDBC (Java Database Connectivity) possibilita a conexão de uma aplicação Java a 
um banco de dados. Podemos escolher diferentes drivers jdbc, dependendo de qual banco de 
dados queremos conectar com nossa aplicação Java.
Download: http://dev.mysql.com/downloads/connector/j/5.1.html
8
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
GlassFish
Como estamos em um material que fala sobre conexões cliente/servidor era de se esperar 
que, para conceber soluções Web, utilizando Java, se faz necessário o uso de um servidor 
Web. O GlassFish é um servidor de aplicação para aplicações Java, ele é um software livre e 
atualmente mantido pela Sun Microsystems que faz parte da Oracle; por suportar o JDBC, é 
muito utilizado para conexão com banco de dados (TOOD, 2003).
Download: https://goo.gl/94xK5x
Testando a conexão com o Banco de Dados
Como o foco é a conexão do banco de dados com JSP, vamos considerar que o banco 
de dados em MySQL já esteja pronto com algumas tabelas, mas sem os dados, os mesmo 
virão do que o usuário irá digitar na página JSP. Para testarmos se existe a conexão entre 
a IDE NetBeans e o MySQL, começamos criando um arquivo chamado por exemplo de 
“testeBanco.jsp” no NetBeans.
Clique em Arquivo e Novo Projeto e a seguinte tela será exibida: 
Escolhemos a opção Java Web e na lateral direita escolhemos Aplicações Web e clicamos no 
botão Próximo:
Figura 1: Menu Arquivo no NetBeans.
Figura 2: Escolha do tipo de projeto.
9
Na tela abaixo, iremos colocar o nome do nosso projeto e clicar em Próximo:
Agora, podemos escolher qual será o servidor de nosso projeto, veja que neste caso podemos 
escolher entre os dois servidores mais utilizados, o Apache Tomcat e o GlassFish. Vamos 
selecionar o GlassFish, pois ele foi escolhido no início do projeto. Após a escolha do servidor, 
você poderá clicar em Finalizar.
Após alguns segundos, o projeto será criado e o NetBeans deverá exibir a tela abaixo 
(dependendo da versão do NetBeans que você estiver utilizando, o código HTML exibido 
poderá ser diferente, não se preocupe).
Figura 3: Nomeação do projeto.
Figura 4: Seleção do servidor Web.
10
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Dê um botão direito sobre o projeto, nosso primeiro JSP com BD, e vamos criar uma página 
JSP. Para testar nossa conexão com o Banco de Dados, escolha a opção Novo e depois JSP, a 
tela deverá ser como abaixo:
Escolha o nome da página JSP. No exemplo, iremos nomear como testeBanco. Clique em 
finalizar, após alguns segundos, ele irá exibir o conteúdo da página JSP criada que deverá ser 
semelhante à tela abaixo:
Figura 5: Esquema do projeto e index.html.
Figura 6: Criação da página JSP.
11
Perceba que agora podemos utilizar o <% ... %> característico do JSP em nossa página. 
Iremos agora testar a conexão:
Veja no código utilizado na Figura 8, temos o <%@ page ... import=”java.sql.*”> que diz 
ao JSP para realizar a importação necessária para conexão com o Banco de dados. Também 
podemos perceber no código selecionado em verde-claro como é feito o teste de conexão, 
temos um Try que recebe na variável “con” o DriverManager entre parênteses, há o endereço 
de URL que iremos utilizar para nosso Banco (localhost:3306/teste) e ainda colocamos o 
nome de usuário e senha (“root”,”root”) para que nosso projeto tenha acesso ao banco de 
dados livremente.
Figura 7: testeBanco.jsp.
Figura 8: Código de conexão com o Banco de Dados.
12
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Caso nossa conexão com o banco falhe, temos implementado após o Try o Catch que trata 
a exceção do teste; caso o teste não seja bem sucedido, o Catch entra em ação e exibe a 
mensagem “Não foi possível conectar ao banco”.
Este teste de conexão é apenas o primeiro passo para criar aplicações Web que envolvam 
Banco de Dados. Agora, podemos implementar consultar, inserções e edições de informações 
que estão em seu banco de dados.
Iremos agora conhecer mais um integrante da tecnologia Java presente em muitas 
soluções Web e que permite ganhar maior rapidez no desenvolvimento de soluções, iremos 
conhecer o JavaBeans.
O JavaBeans, conhecido às vezes apenas por Beans, é um modelo de componentes de 
software reutilizável de Java. Para que fiquem claros seus conceitos, iremos tomar como 
base um exemplo que pode ser encontrado no livro Java: Como Programar, no capítulo 25, 
escrito por Deitel e Deitel (2010), pois nele está descrita a seguinte ideia: imagine que estamos 
construindo uma solução Web que envolva animação e algumas pessoas estão envolvidas no 
projeto, imagine que para conceber tal solução precisamos criar dois métodos o startAnimation 
e o stopAnimation, o primeiro inicia a animação e o segundo a interrompe. Queremos agora 
associar um botão ao startAnimation e outro botão ao stopAnimation, controlando assim a 
nossa animação. Com o JavaBeans, a IDE de desenvolvimento faz todo o trabalho de associar 
um evento de pressionar o botão com o método que desejamos chamar.
Dessa forma, um programador poderá desenvolver o método startAnimation sem ter o 
conhecimento do que outro programador está desenvolvendo no método stopAnimation. 
Quando ambos desenvolverem seus códigos, poderemos então pedir que a IDE associe 
um botão para cada método, e mais, quando criarmos outra solução que também utilize o 
startAnimation ou stopAnimation não precisaremos programar esta solução novamente, basta 
“chamar” o arquivo JavaBeans que contém o startAnimation ou stopAnimation e pedir que 
associe também a algum botão deste novo projeto, assim vários arquivos JavaBeans poderão 
ser chamados de projetos diferentes.
Acesse:
https://netbeans.org/kb/docs/web/mysql-webapp_pt_BR.html#welcomePage
Nesse tutorial disponibilizado pela própria NetBeans em português, podemos 
encontrar um exemplo prático passo a passo para criação de uma aplicação JSP 
com banco de dados. Utilize os conhecimentos acima adquiridos e mãos à obra!
JavaBeans em JSP
13
Exemplo de JavaBeans
Dando sequência ao primeiro tópico em que conectamos o banco de dados, a nossa IDE, 
iremos criar um JavaBeans que faça a mesma conexão, porém, teremos a diferença de não 
implementar a conexão diretamente na páginaJSP como fizemos anteriormente, pois, agora, 
quando precisarmos fazer a conexão com o banco de dados que iremos utilizar, basta “chamar” 
esse JavaBeans e a conexão será feita. Assim, não repetimos os códigos necessários para 
conectar ao banco várias vezes. Outra vantagem de utilizar o JavaBeans, no caso de conexão 
com o banco, é a de que, se, por acaso, alterarmos a senha de nosso banco, basta alterar 
uma vez no JavaBeans e, assim, todos os projetos que o utilizam irão usufruir desta mudança. 
Quando não utilizamos JavaBeans, teremos que procurar os trechos de código que utilizamos 
várias vezes para conectar ao banco e alterar uma um a nova senha.
Primeiramente, clique com o botão direito sobre o projeto criado no primeiro tópico e escolha 
a opção Nova e depois Classe Java.
Na tela que segue, digite o nome dessa nova classe que será nosso JavaBeans, no exemplo 
abaixo, escolhi o nome ConexaoBDJavaBeans, depois clique em Finalizar.
Agora que temos uma nova classe criada, vamos implementar o código abaixo:
Figura 9: Criando uma Classe Java.
Figura 10: Nomeação da Calsse Java.
14
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
 
Veja no código que temos o package e o “import” característico de uma classe Java e depois 
o “public class ConexaoBDJavaBeans” que contém a conexão com o banco de dados. Foi 
criada uma variável chamada situação do tipo String para que saibamos qual é a situação de 
conexão com o banco.
Programamos o Try em que trazemos a utilização do driver de conexão ao banco e também 
dizemos o endereço, ao qual está o banco (você poderá utilizar o IP ao qual o banco está caso 
não estiver utilizando o localhost IP/Nome do banco) logo após o usuário e senha do banco.
No “Catch” do código tratamos a exceção, caso não aconteça a conexão com o banco, ele irá 
atribuir a variável “situacao” à frase “não foi possível realizar a conexão”. E por fim retornamos 
o valor da variável situação para sabermos se seu valor foi atribuído pelo “Try” ou “Catch”.
Este é apenas um simples exemplo de como podemos utilizar o JavaBeans ao longo do 
desenvolvimento de uma solução Web. Além de permitir mais rapidez e reaproveitamento de 
código, possibilita que várias pessoas trabalhem em um mesmo projeto sem necessariamente 
que cada programador só possa realizar seu trabalho após outro a concluir. Essa característica 
tem muito necessária no mercado atual onde uma equipe atua em um mesmo projeto, 
principalmente se ele tiver grandes proporções.
Figura 11: Classe Conexão.
15
XML do inglês eXtensible Markup Language ou algo como Linguagem de Marcação 
Extensível é uma linguagem de programação que permite organizar e estruturar dados de 
forma fácil e simples para o programador. Ele pode ser utilizado para fornecer dados a diversas 
aplicações e em diferentes computadores, da mesma forma que o HTML consegue organizar de 
forma hierárquica a estrutura de uma página de internet o XML consegue organizar de forma 
hierárquica informação como em um banco de dados (KOCHMER, 2002).
Vejamos um exemplo de criação de um arquivo XML utilizando a IDE NetBeans:
Dê um botão direito do mouse sobre o seu projeto e depois clique em Novo, e depois 
Documento XML.
Na tela a seguir, escreva o nome do arquivo XML que desejar:
Na tela a seguir, selecione a opção Documento Formado Corretamente e depois Finalizar.
Vejamos um exemplo de XML criado pela própria W3C (http://www.w3schools.com/xml/
xml_examples.asp) que mantém e atualiza a linguagem XML:
XML em JSP
Figura 12: Criação de um arquivo XML.
Figura 13: Nomeação do arquivo XML.
16
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Vamos entender alguns elementos que compõem o código da Figura 14, perceba que 
utilizamos a tag <breakfast_menu> para iniciar nossa programação, por ser organizado de 
forma hierárquica a IDE sabe que todas as informações abaixo até fecharmos a tag </breakfast_
menu> pertencem a “breakfast_menu” e assim podemos referenciá-las facilmente quando 
precisamos fornecer alguma informação deste menu a outra aplicação.
Veja que dentro da tag <food> organizamos as informações que desejamos armazenar 
como: <name> (nome), <price> (preço), <description> (descrição), <calories> (calorias), 
qualquer aplicação de desejarmos ler nesse arquivo XML e a informação que precisarmos.
Vejamos agora um exemplo de como podemos integrar a linguagem XML a JSP extraído do 
site tutorialspoint.com; este e outros tutoriais fáceis e educativos você pode encontrar neste link: 
http://www.tutorialspoint.com/jsp/jsp_xml_data.htm
Primeiro, vamos criar nosso arquivo XML que contém os dados que serão lidos e alterados:
Perceba no código acima que temos a tag <book> indicando o início da hierarquia que 
contém as informações: Nome, Autor e Preço de um livro.
Vamos agora visualizar o código da página JSP:
Figura 14: Exemplo de linguagem XML.
Figura 15: Código da página books.xml.
17
Na página JSP da Figura 16, temos o uso de duas Tags Libs definindo o “c” e o “x” como 
prefixo das definições da java.sun que serão utilizado no <body>.
Perceba que, após o título “Book Info:”, temos o “c:import” definindo uma variável “bookinfo” 
que servirá de referência ao arquivo book.xml que criamos inicialmente, perceba que a url dessa 
mesma Tag faz referência ao localhost:8080/book.xml; caso esteja utilizando outro endereço ou 
outra porta, você deve alterar neste local.
Definido a referência “bookInfo”, agora podemos ler o arquivo XML e trazer apenas as 
informações que necessitamos. Veja que na tag “x:parse” definimos o XML como sendo a 
referência bookInfo e criamos uma variável de saída chamada “output”. Agora vamos à leitura 
do XML.
Na tag “x:out”, selecionamos exatamente a informação no arquivo XML que queremos, 
“$output/books/book[1]/name”, através do “book[1], selecionamos a primeira tag <book> 
que o arquivo XML possui e trazemos dela a informação contida dentro da tag <Name>, 
o mesmo ocorre quando queremos extrair apenas o preço do segundo livro “$output/books/
book[2]/price”, a saída deste código será esta:
BOOKS INFO:
• The title of the first book is: Padam History 
• The price of the second book: 2000
Devido à facilidade que encontramos em criar um arquivo XML, pois é muito similar a forma 
que o HTML estrutura suas tags, podemos entender por que muitos programadores o utilizam 
em suas aplicações. Apesar de fazer o papel de banco de dados, não é aconselhável quando 
temos uma grande quantidade de dados pois os SGBS (Sistema Gerenciador de Banco de 
Dados) atuais podem fornecer melhor a forma de armazenar e buscar informações.
Figura 16: Código da página index.jsp.
18
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Outra linguagem muito utilizada como integração com o JSP é o JavaScript. Ele permite a 
inserção de diversas funções diretamente em nossas páginas JSP ou HTML ou, se preferir, a 
criação de um arquivo separado que contenha funções e recursos que podem ser acessados 
diversas vezes (KURNIAWAN, 2002).
Vejamos uma aplicação bem simples de como podemos criar uma página de Login utilizada 
amplamente em diversas soluções Web. Criaremos páginas para essa solução, criaremos uma 
página chamada index.jsp, criaremos também uma página chamada principal.html e por último 
nosso arquivo em JavaScript, scrip.jp.
Index.jsp
Crie um novo projeto no NetBeans do tipo Java Web, Aplicação Web, coloque o nome que 
desejar; após a criação, crie uma nova página chamada índex.jsp, clicando com o botão direito 
sobre seu projeto e depois Novo, JSP.
Nossa tela de Login será simples esteticamente, pois o foco é entender a integração de JSP 
com JavaScript, porém, será base para que construa seus projetos mais elaborados. Nossa 
página terá esta aparência:
Agora, vejamos o código da página index.jsp que foi utilizado para criar a tela acima:
JavaScript em JSP
Figura 17: Tela de Login exibida ao usuário (índex.jsp).
Figura 18: Código da página índex.jsp.
19
Vamos analisaro código acima, perceba que dentro da tag <head> temos a tag <scrip> e 
nela definimos a propriedade LANGUAGE como JavaScript e apontamos através da propriedade 
“src” o nome do arquivo que contém a programação em JavaScript que será necessária neste 
código. Neste caso, o arquivo chama-se Login.js.
Mais abaixo, temos a tag <form>, na qual definimos que o nome do formulário será “login”, 
esse nome será importante para que consigamos no arquivo Login.js saber onde encontrar os 
elementos desse formulário. Dentro desse, formulário temos três elementos principais:
• Uma caixa de texto Usuário: <input type=”text” name=”username” size=”20”>.
• Uma caixa de texto Senha: <input type=”text” name=”password” size=”20”>.
• Um botão Entrar: <input type=”button” value=”Entrar” onClick=”Login()”>.
Perceba que na tag <input>, que é usada para criar o “button”, utilizamos um propriedade 
chamada “onClick”, que é necessária para dizer ao código que quando o usuário pressionar 
esse botão ele deverá chamar a função Login(). Por termos definido no início do código que 
o arquivo que contém as funções JavaScript estão no arquivo Login.js, ao usuário clicar neste 
botão, o código irá procurar a função Login() dentro do arquivo Login.js.
Login.js
Agora iremos criar o arquivo JavaScript. Dê um botão direito sobre o projeto criado, escolha 
a opção Novo e depois Arquivo JavaScript, veja o código abaixo:
Começamos definindo o nome da função através do “function Login()”, assim “ligamos” 
a ação do botão da página index.jp com esse arquivo JavaScript; dentro da função, criamos 
uma variável chamada “username” que irá receber como valor o que o usuário digitou na 
página dentro do campo “username” criado no formulário da página index.jsp. Veja agora 
como atribuir valor à variável username.
Figura 19: Código da página script.js.
20
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
document.login.username.value;
O comando document define que iremos fazer referência a uma página. O login que vem logo 
depois é o nome do formulário e o username é o nome da caixa de texto (<input type=”text”>) 
que está dentro do formulário login e, por fim, colocamos o “value” para dizer ao código que 
queremos o valor que foi digitado na página pelo usuário, o mesmo fazemos com o campo de 
texto senha.
Também criaremos uma variável chamada “done” para nosso controle de teste no IF. Veja 
que abaixo criamos dois IFs, no primeiro temos:
If(username == “teste” && senha == “12345”){
window.location = ‘Principal.html’;
done = 1;
}
Neste IF, definimos que, se a variável “username” for igual a “teste” e a variável senha 
for igual a “12345”, então executamos a linha window.location = ‘principal.html’; que tem a 
função de chamar a página principal.html sem abrir uma nova aba no navegador, assim criamos 
um teste simples de login. Veja que ainda dentro deste IF atribuímos a variável done com valor 
1; dessa forma, impedimos que o Segundo IF que informa erro no login seja ativado.
Principal.html
Por último, crie uma simples página HTML, chamada principal,html, clicando com o botão 
direito em nosso projeto e depois Novo e HTML; coloque apenas um simples texto para que, 
quando você testar seu projeto, e no Login colocar a palavra “teste” e no campo senha “12345”, 
permitir que a página principal.html seja aberta na mesma página.
Este é um simples exemplo de utilização para que você entenda como o mecanismo de 
chamada de um arquivo JavaScript funciona dentro de uma página JSP. Agora é só realizar os 
teste e melhorar o projeto.
Agora que vimos como podemos integrar a linguagem XML e a linguagem JavaScript em 
nossa solução em JSP, podemos entender melhor como funciona outra tecnologia Web que 
também é integrável a JSP, o AJAX.
Ajax em JSP
21
AJAX é o acrônimo de Asynchroous Javascript and XML, ou seja, é uma tecnologia que utiliza 
o JavaScript e o XML para desenvolver aplicações Web que tenham funcionalidade similares a 
uma aplicação de desktop, ou seja, local (HANSEN, 2007). 
Muitas vezes, necessitamos de soluções que se aplicam apenas a uma determinada parte 
de nossa página. Imagine que, ao cadastrar um usuário, em cada novo campo de texto que 
ele preenche toda a página, necessitasse ser carregada para validar aquele campo. Isso seria 
muito ruim.
Outro exemplo é quando estamos realizando uma busca no Google e antes mesmo de 
terminar a palavra o Google já nos traz sugestões daquilo que talvez você queira buscar. Nisso, 
temos a sensação de que estamos executando alguma função local, apenas em nossa máquina 
pela rapidez com que a sugestão nos é trazida. Eis o exemplo de chamada assíncrona, ou seja, 
o AJAX irá fazer chamadas ao servidor sem uma determinada sincronia, ela fará chamadas ao 
servidor apenas em certas ocasiões.
Para que você tenha mais conhecimento sobre o AJAX, acesse os tutoriais abaixo 
que, além de gratuitos, permitem o entendimento passo a passo de uma construção 
integrada entre AJAX e JSP:
http://www.programming-free.com/2012/08/ajax-with-jsp-and-servlet-using-jquery.html
https://www.udemy.com/blog/jsp-ajax/
22
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Material Complementar
Como complemento desta unidade, sugerimos a leitura completa do capítulo 25 do livro: 
Sugerimos, também, a leitura completa do livro:
Boa leitura a todos!
DEITEL, H. M.; DEITEL, P. J. Java. Como Programar. 8 ed. São Paulo: Prentice Hall, 2010.
TODD, N.; SZOLKOWSKI, M. Javaserver Pages. O Guia do Desenvolvedor. Rio de Janeiro: 
Elsevier, 2003.
23
Referências
DEITEL. H. M.; DEITEL, P. J. Java. Como Programar. 8 ed. São Paulo: Prentice Hall, 2010.
HANSEN, M. D. Soa Using Java Web Services. New Jersey: Prentice Hall, 2007.
KOCHMER, C. Jsp And Xml. Integrating Xml And Web Services In Your Jsp Application. 
Boston: Addison-Wesley, 2002.
KURNIAWAN, B. Java Para a Web Com Servlets, Jsp e Ejb. Rio de Janeiro: Ciência 
Moderna, 2002.
TODD, N.; SZOLKOWSKI, M. Javaserver Pages. O Guia do Desenvolvedor. Rio de Janeiro: 
Elsevier, 2003.
TURNER, J. Mysql And Jsp Web Applications. Usa: Sams, 2002.
24
Unidade: Programação de aplicações cliente/servidor na Web com JSP 2
Anotações
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvão Bueno, 868
CEP 01506-000
São Paulo SP Brasil 
Tel: (55 11) 3385-3000
www.cruzeirodosulvirtual.com.br
Rua Galvão Bueno, 868
Tel: (55 11) 3385-3000

Mais conteúdos dessa disciplina