Baixe o app para aproveitar ainda mais
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
Compartilhar