Buscar

Aula01 - Arquitetura e Tecnologias Server-Side ( Servlet)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas 
Cliente-Servidor
Arquiteturas e Tecnologias
Server-Side
Servlet – Parte 1
Aula 02 e Aula 03
Prof. Amilton Souza Martha
Prof. Alexander Gobbato
Sistemas stand-alone
Sistemas cliente-servidor
Sistemas distribuídos
Visão geral das arquiteturas
Arquiteturas stand-alone
O que é uma Arquitetura Stand-alone?
Caracteriza-se pelo uso de uma 
única estação de trabalho auto-
suficiente, na qual se centraliza a 
interface com o usuário, o 
processamento e o 
armazenamento de dados. Não há 
utilização de rede de 
comunicação.
Arquitetura muito popular até meados dos anos 
1980, na era pré-Web.
Arquiteturas cliente-servidor
• O ponto principal em uma 
arquitetura Cliente-
Servidor está na 
presença de elementos 
centralizadores de dados 
ou de processamento 
(servidores), em geral 
bem mais robustos que 
os outros elementos que 
são deles dependentes 
(clientes). 
O que é uma Arquitetura Cliente-Servidor?
O que é uma Arquitetura Distribuída?
“Sistema com múltiplos processadores 
autônomos, possivelmente de 
diferentes tipos, que estão 
interconectados por uma sub-rede de 
comunicação de forma a interagir 
cooperativamente de forma a atingir 
um objetivo específico”
Ananda & Srivasan
“Conjunto de computadores independentes que, para os 
usuários é como se fosse um só.”
Tanenbaum
Máquinas autônomas Sistemas transparentes
Arquiteturas distribuídas
Um sistema pode ser considerado “distribuído” se ao 
menos um de seus quatro componentes físicos o for:
Claramente, esta é uma definição bastante “pobre” por ter seus itens 
fortemente acoplados entre si, uma vez que fica difícil imaginar 
sistemas que baseiam-se somente na distribuição de hardware, sem 
distribuírem o processamento, e assim por diante...
Dados Hardware Processamento S. O.
Quando um sistema pode ser considerado distribuído? 
Distribuição – quando?
Centralizar, distribuir...
Centralização x Distribuição
Sistemas cliente-servidor tendem a ser centralizadores de dados e 
processamento, do lado servidor, deixando a interface do lado cliente.
Sistemas baseados na Web em geral seguem essa arquitetura, 
comumente denominada fat server, thin client (servidor “gordo”, 
cliente “magro”).
Algumas aplicações Web, por exemplo as que utilizam applets, 
transferem parte do processamento para o lado cliente.
Linux
Arquiteturas Cliente-Servidor e distribuídas
x 
Sistemas Stand-alone
Compartilhamento de dados
Compartilhamento de dispositivos
Comunicação
Flexibilidade
Prós & Contras
Prós & Contras
Arquiteturas Cliente-Servidor x Distribuídas
Arquiteturas 
cliente/servidor 
costumam ser mais 
fáceis de gerenciar 
que arquiteturas 
distribuídas, uma 
vez que são 
centralizadas. 
Também são mais fáceis de se 
implementar, pela variedade de 
tecnologias existentes
Arquiteturas Distribuídas x Cliente-Servidor
Arquiteturas distribuídas costumam 
apresentar melhor relação 
custo/benefício, e maior escalabilidade. 
A velocidade depende das conexões 
entre os elementos da arquitetura.
$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$
Prós & Contras
Prós & Contras
Algumas possíveis soluções... 
Mesclar arquiteturas cliente-servidor com 
arquiteturas distribuídas. 
Cliente/servidor
Pool de servidores 
(distribuídos)
Tecnologias Server-Side
Visão geral das tecnologias:
– ASP
– Cold Fusion
– PHP
– Perl
– Python
– ASP.NET
– Servlet e JSP
ASP (Active Server Pages)
• Linguagem anterior ao ASP.NET (chamado ASP 3.0)
• Tecnologia da Microsoft que suporta múltiplas
linguagens de criação de scripts, como Perlscript
(baseada em Perl), Jscript (baseada em JavaScript) e
VBScript (linguagem padrão para o ASP).
• O código é inserido dentro de páginas HTML usando
tags especiais.
• Os seus arquivos tem a extensão “asp”.
• O servidor executa o código entre as tags antes de
enviar o resultado (HTML) para o browser.
• É nativamente suportada pelo IIS (Internet Information
Server) Web server da Microsoft.
ASP
• ASP é otimizado para gerar pequenas partes de
conteúdo dinâmico e utiliza componentes COM
(Component Object Model) para criar scripts mais
especializados, como por exemplo, criação de
diretórios virtuais, o acesso a banco de dados e
manipulação de arquivos
• Um ponto a considerar é que páginas ASP sendo
executadas em plataforma não-Windows podem ter
problemas ao executar tarefas avançadas sem a
biblioteca COM do Windows.
• Grandes aplicações web utilizando somente ASP
frequentemente tem problemas de escalabilidade
(eficiência no processamento de grandes conjuntos
de dados).
ASP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<%@ LANGUAGE=“VBSCRIPT” %>
<% option explicit %>
<html><body>
<% Dim hello
i = 0
hello = “Hello, world!<br>”
Do while i < 20
Response.write(hello)
i = i + 2
Loop
%>
</body></html>
ColdFusion
• Linguagem interpretada do lado do servidor.
• Tecnologia da Allaire, adquirida pela
Macromedia e depois pela Adobe, que fornece
um conjunto de tags embutidas em páginas
HTML possibilitando a geração dinâmica de
conteúdo para a web.
• Um aspecto interessante é que páginas HTML
também são constituídas de tags possibilitando
um único estilo consistente de sintaxe ao longo
da página.
• Os seus arquivos tem a extensão “cfm”.
ColdFusion
• As tags do Cold Fusion são fáceis de distinguir
das tags do HTML porque todas começam com
as letras “cf”, por exemplo: <cfoutput>, <cfif>,
<cfset>, <cfabort>.
• Quando um usuário acessa uma página Cold
Fusion, o servidor a analisa, encontra e traduz
as tags cf e escreve o código HTML puro.
• Cold Fusion é suportado tanto em plataformas
Windows como Linux
ColdFusion (Exemplo)
Escreve “Hello, world!” 10 vezes.
<html><body>
<cfset hello = “Hello, world!” >
<cfset i=0>
<cfloop condition=“i LT TO 20”> 
<cfoutput>#Hello, world#</cfoutput><br>
<cfset i = i + 2>
</cfloop>
</body></html>
PHP (PHP Hypertext Preprocessor)
• Tecnologia de código aberto e free, criada
originalmente por Rasmus Lerdorf para
atender, a princípio, suas necessidades
pessoais.
• PHP é uma outra linguagem script, como
ASP, projetada para processar código inserido
dentro de páginas HTML.
• O servidor analisa e transforma seu código
para HTML antes de mandar o resultado para
o browser.
• Emprega uma sintaxe similar à da linguagem
C com forte suporte para acesso a banco de
dados e e-mail.
PHP
• Seus comandos são finalizados com ; e as suas
variáveis são iniciadas com o símbolo $.
• Seus arquivos tem a extensão “php”.
• Tem suporte em várias plataformas
operacionais: Windows, Linux, MacOs, UNIX,
etc. e em diversos servidores de HTTP, como
Apache, IIS (Internet Information Server) da
Microsoft e Netscape Enterprise Server da
Netscape.
PHP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<html><body>
<script language=“php”> 
$i = 0;
$hello = “Hello, world!<br>”;
while ($i < 20) {
echo $hello;
$i = $i + 2;
}
</script>
</body></html>
Obs.: Pode-se substituir <script...>...</script> por 
<?php...?> ou simplesmente <? ... ?>
Perl
• É uma linguagem interpretada e muito popular
para escrever scripts CGI (Common Gateway
Interface).
• Possui recursos para manipulação de texto,
expressões regulares, leitura e escrita de dados,
utilizando entrada e saída padrão
• Através dos programas conectados a essa
interface CGI é possível, por exemplo, conectar
uma base de dados à web ou gerar
dinamicamente o conteúdo de uma página
HTML.
Perl
• Seus arquivos tem a extensão “pl”.
• Perl é free e está disponível para múltiplas
plataformas, como Windows, Unix e Linux. É um
componente padrão para algumas plataformas
operacionais como FreeBSD, IRIX, Mac OS X,
RedHat, Slackware e Solaris.
• Seus comandos são finalizados com ; e as suas
variáveis são iniciadas com o símbolo $.
Perl (Exemplo)
Escreve “Hello, world!” 10 vezes.
print "Content-type: text/html\n\n"; 
$hello = “Hello, world!”;
$i = 0;
while ($i < 20) {
print $hello;
$i = $i + 2;
}
Obs.: A primeira linha é necessáriapara que a mensagem seja exibida 
pelo browser.
Python
• É uma linguagem interpretada onde não há
declaração de variáveis, e possui tipos de
variáveis dinâmicos.
• O controle de bloco é feito apenas por
indentação; não há instruções do tipo BEGIN e
END ou { e }.
• Possui tipos de variáveis de alto nível: strings,
listas, dicionários, classes. É orientada a
objetos; aliás, em Python, tudo é um objeto.
• Seu arquivo possui extensão “py”.
Python
• Python permite que o programa funcione em
múltiplas plataformas; em outras palavras, a sua
aplicação feita para Linux pode rodar sem
problemas em Windows e em outros sistemas.
• Tem vários módulos já desenvolvidos, como o
HTMLgen que é uma biblioteca de classes que
gera documentos HTML conforme alguns
padrões pré-definidos. Oferece classes para
manipular tabelas, listas, e outros elementos de
formatação.
• Pode-se também escrever scripts CGI.
Python (Exemplo)
Escreve “Hello, world!” 10 vezes.
print ‘Content-Type: text/html\n\n’
i = 0
hello = “Hello, world!<br>”
while i < 20:
print hello
i = i + 2 
Obs.: A primeira linha é necessária para que a mensagem seja exibida 
pelo browser.
ASP.NET (VB, C#)
• É um ambiente de desenvolvimento, criado pela
Microsoft, totalmente integrado a plataforma que
permite criar aplicações Windows ou Web.
• Pode-se criar qualquer tipo de código nos
formulários, componentes, Web Services, XML,
etc., e utiliza-lo dentro do próprio ambiente.
• Para que uma aplicação funcione em uma
plataforma basta instalar o run-time do .NET
para que as aplicações criadas para o .NET
sejam compiladas e executadas nesta
plataforma.
Servlets e JSP (Java Server Pages)
• Eles não fazem parte da API básica de Java, J2SE
(Java 2 Standard Edition), estando disponíveis na
plataforma J2EE (Java 2 Enterprise Edition) que permite
a geração de páginas dinâmicas para a web.
• Pode-se dizer que um servlet é uma classe Java que
pode ser carregada dinamicamente para expandir a
funcionalidade do servidor.
• JSP é híbrido, pois suporta dois estilos diferentes para
adicionar conteúdo dinâmico às páginas HTML, através
de códigos Java e tags incorporadas nas próprias
páginas.
Servlets e JSP
• Vantagem dos servlets e JSP é que, por serem
escritos em Java, aproveitam todas as
vantagens da plataforma Java básica.
• Os programas são executados em cima de uma
JVM (Java Virtual Machine).
• Este fato permite uma independência de
plataforma operacional. Bastando, para isto,
possuir uma JVM para esta plataforma.
• A extensão dos arquivos é “java” para Servlets e
“jsp” para as páginas JSP.
JSP (Exemplo)
Escreve “Hello, world!” 10 vezes.
<html><body>
<% 
String hello=“Hello, world!<br>”;
for(int i=0;i<20;i+=2) 
out.println(hello);
%>
</body></html>
Obs.: Vale observar que o código é compilado no 
servidor antes de enviar a página HTML ao 
browser.
Servlet (Exemplo)
Escreve “Hello, world!” 10 vezes.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String hello = "Hello, world!<br>";
out.println("<html><body>");
for(int i=0; i<20;i+=2) out.println(hello);
out.println("</html></body>");
}
}
Sistemas 
Cliente-Servidor
Servlets – Parte 1
Aula 03
Prof. Amilton Souza Martha
Prof. Alexander Gobbato
Programação Java para Web
Objetivos
• Apresentar o conceito aplicações orientada a serviços 
via web 
• Apresentar o papel dos conteiners Java 
• Capacitar para a construção de Aplicações Web simples 
Programação Java para Web
Programação Java para Web
Arquitetura Web e Serviços 
Quem é responsável por gerar a request? 
O computador cliente 
–Navegador 
–Outro programa qualquer 
Quem é responsável por gerar a response? 
O computador servidor 
–Programa servidor 
O servidor presta um serviço ao cliente 
Programação Java para Web
Arquitetura Web e Serviços 
O cliente: navegador (browser)
Requisições são geradas quando 
 Digitamos uma nova URL / Clicamos em um link 
 Enviamos um formulário 
 Enviamos uma consulta AJAX 
Programação Java para Web
Arquitetura Web e Serviços 
O servidor: aplicativo em computador 24/7/365 
Este aplicativo é composto de serviços 
Serviço recebe requests e devolve responses
– Apenas quando uma requisição chega ele atua 
É este tipo de aplicativo, baseado em serviços, que 
iremos desenvolver! 
Programação Java para Web
Arquitetura Web e Serviços 
Faz sentido um servidor dedicado a um único serviço simples? 
A resposta é: depende! 
Depende de quê? 
 Da demanda sobre estes serviços 
 Do processamento exigido pelos serviços 
 Dos requisitos de segurança e qualidade (SLA) 
É comum ter servidores web e servidores de banco de dados 
dedicados 
Se a demanda de um serviço não é grande, em geral não faz sentido 
ter infra exclusiva... 
Service Level
Agreement
Programação Java para Web
Arquitetura Web e Serviços 
Vários serviços web na mesma máquina 
– Comum 
No caso do Java, estes pequenos serviços são chamados de 
servlets
Agora... que tal centralizar funções comuns? 
– Ex.: Gerenciamento de Conexões 
Esse é o papel dos Containers Java
Container Java
O Container Java 
• O conteiner Java também é conhecido como servidor de 
aplicações Java 
• Gerencia a execução de serviços web Java 
• Disponibilizar infra-estrutura necessária para estes serviços 
• Permite a comunicação com outros componentes Java e 
aplicações 
O Container Java 
Servidor de Aplicações - Funcionamento básico: 
1. Aguarda pelas requests
2. Repassa a request para o servlet correto 
3. Recebe a response do servlet
4. Devolve a response para o cliente que enviou a request
Ou seja, ele é responsável por gerenciar as conexões (dentre 
outras coisas) 
Container Java
O Container Java
Container Java
O Container Java
O servidor de aplicativos não faz só isso... 
Dentre outras coisas... 
Ele também cuida do ciclo de vida do servlet
1. Quando necessário, inicia o Servlet
2. Coloca este Servlet no estado “ativo” 
3. Finaliza o Servlet quando não é mais necessário 
Container Java
Ciclo de Vida da Servlet
Container Java
Arquitetura Web e Serviços 
Existem vários conteiners Java 
– GlassFish
– TomCat
– TomCat + JBoss
– WebLogic, BEA
– WebSphere, IBM
– Dentre outros... 
Container Java
Programação Java para Web
Entendendo os Servlets
Servlet no Netbeans
Iniciaremos criando um projeto 
Servlet no Netbeans
Escolha o tipo: Java Web e Aplicação Web 
Servlet no Netbeans
Dê um nome ao seu projeto: ex.: WExemplo01
Servlet no Netbeans
Dê um nome ao seu projeto: ex.: WExemplo01
Servlet no Netbeans
Selecione o contentor: GlassFish Server 
Servlet no Netbeans
Este é o endereço da aplicação: /WExemplo01
Servlet no Netbeans
Aqui por enquanto não utilizaremos nenhum framework, selecione Finalizar
Servlet no Netbeans
Nesta tela teremos o projeto criado e a estrutura do projeto. 
Por padrão, o index é executado 
Servlet no Netbeans
Criando uma Servlet
Servlet no Netbeans
Criando uma Servlet
Servlet no Netbeans
Criando uma Servlet
MARQUE a opção Adiciona informação ao descritor 
Nomes para 
acesso ao 
Servlet
Servlet no Netbeans
Criando uma Servlet
Isso vai criar uma série de arquivos e abrir o servlet na área de edição... 
Servlet no Netbeans
Executando o projeto
Execute o projeto e perceba que irá aparece o conteúdo da página index.html
Para executar a servlet, iremos chamá-la na url do browser:
http://localhost:8080/WExemplo01/PrimeiroServlet
Servlet no Netbeans
Configurando o Servlet
O arquivo de configuração é chamado web.xml. 
Algumas vezes existem vários deles 
O que nos interessa está na pasta WEB-INF
Clique duas vezes neste arquivo.
Servlet no Netbeans
Configurando o Servlet
A aba Geral serve para indicar a descriçãodo SISTEMA, além de indicar o 
timeout (veremos isso quando falarmos de sessão) 
Servlet no Netbeans
Configurando o Servlet
A aba Servlets configura itens importantes 
A ordem de 
inicialização 
Nome da Servlet. 
Vamos trocar para 
TesteServlet
A classe do Servlet
(pode ser trocada!) 
E o nome de acesso do Servlet
Trocar para
/Teste/TesteServlet
Servlet no Netbeans
Configurando o Servlet
Essas e outras configurações podem ser feitas diretamente pela aba XML. 
Mas pelo NetBeans é mais conveniente! 
Servlet no Netbeans
Executando o projeto com as novas configurações.
Perceba que agora para executar a servlet, devemos digitar o caminho completo
no qual foi configurado no arquivo web.xml.
Apesar de não termos o pacote “Teste” no projeto, isso é permitido configurar através
da Servlet.
http://localhost:8080/WExemplo01/Teste/TesteServlet
Perceba também que a URL é case sensitive.
http://localhost:8080/WExemplo01/Teste/TesteServlet
Servlet no Netbeans
Utilizando html e Servlet
Crie um novo projeto com o nome WCalculadora.
Vamos adotar a mesma configuração do primeiro projeto. Portanto não 
mude nada e selecione Próximo e no final Finalizar.
Servlet no Netbeans
Utilizando html e Servlet
Vamos construir um formulário, alterando o arquivo index.html
Servlet no Netbeans
Utilizando html e Servlet
Atenção!!!
Isso irá gerar uma 
request para um 
aplicativo web 
chamado Calc. 
Precisamos criá-lo! 
Servlet no Netbeans
Utilizando html e Servlet
Para estruturar melhor nosso projeto, iremos separar as classes em pacotes 
separados dos arquivos html. 
Servlet no Netbeans
Utilizando html e Servlet
Portanto criaremos um pacote com nome calculadora
Nomes de PACOTES devem 
a) Começar com letra minúscula 
b) Não ter espaços 
c) Não usar acentos ou 
caracteres especiais 
d) Ex.: calculadora
Servlet no Netbeans
Utilizando html e Servlet
Agora clique com o botão direito no pacote calculadora e selecione Novo > 
Servlet
Servlet no Netbeans
Utilizando html e Servlet
O nome ao servlet será Calc, lembrando que esse
foi o nome que demos na tag “action” do form no 
arquivo index.html
Uma Servlet é uma classe, então:
a) Começar com letra maiúscula
b) Não ter espaços 
c) Não usar acentos ou caracteres 
especiais 
d) Ex.: Calc
Servlet no Netbeans
Utilizando html e Servlet
MARQUE a opção Adiciona informação ao descritor 
Nome para acesso 
a Servlet
Servlet no Netbeans
Utilizando html e Servlet
Perceba que foi criado a Servlet Calc.java
Código gerado
Servlet no Netbeans
Utilizando html e Servlet
Vamos apagar os comentários do NetBeans
Servlet no Netbeans
Utilizando html e Servlet
Vamos esconder código “desnecessário” 
Servlet no Netbeans
Utilizando html e Servlet
Observe que o Servlet extends HttpServlet
Pacote javax.servlet.HttpServlet
Servlet no Netbeans
Utilizando html e Servlet
Vamos entender a estrutura 
Este é o trecho 
que mais nos 
interessa
Por enquanto não 
mexa aqui!!!!
Servlet no Netbeans
Utilizando html e Servlet
Vamos entender o funcionamento 
Quando uma request chega ao 
contentor, ela é repassada para 
esse método, juntamente com uma 
response, onde armazenaremos a 
saída.
A primeira coisa feita é a 
configuração do objeto out, 
que usaremos para imprimir 
a saída.
Servlet no Netbeans
Utilizando html e Servlet
Aqui é onde 
escreveremos o nosso 
código com a lógica da 
calculadora, e teremos 
que utilizar html
Servlet no Netbeans
request.getParameter(<nome>);
Recebe o campo da requisição
(request) do cliente sempre no 
formato String
Exercício
Elaborar um formulário de 
compra de 
eletrodomésticos on-line. 
Ao clicar no botão 
“Comprar” chamar a 
servlet ComprarProduto
que calcula e exibe os 
produtos selecionados e o 
valor Total da Compra.
www.cruzeirodosul.edu.br

Continue navegando