plataforma para desenvolvimento de software em ambiente web prof. dr. sérgio donizetti zorzo ufscar...
TRANSCRIPT
Plataforma para Desenvolvimento de Software
em Ambiente WEB
Prof. Dr. Sérgio Donizetti Zorzo
UFSCar –junho/2001
Ambiente de Trabalho
Cliente/Browse r
ServidorW eb
Processam ento
Banco deDados
L inuxW indow s
JA V AC ++ / C
D elph i(não v isua l)
N etscapeE xp lorer
O rac leM yS Q LdB ase
Páginas
HTML
Scripts
HTML
JS PS erv le tsP H PA S P
Est
Din
Tecnologia Cliente-Servidor
appletclienteServidor
Parâmetros
REQUEST
Resultados
RESPONSE
Servlet
CSB SSB
Tecnologia Cliente-Servidor
CLIENTE – CSB/ Client Side Building Processamento no cliente. Consome tempo de carregamento.
Limitação de processamento do cliente. Linguagem dependente de browser. Linguagens disponíveis: JavaScript, Applets.
SERVIDOR – SSB/ Server Side Building
Processamento no servidor. Retorna ao cliente páginas HTML. Capacidade maior para armazenamento e processamento. Segurança para manipulação de informações (no servidor). Linguagens disponíveis: JSP, Servlets, PHP, PERL-CGI, ASP.
Arquitetura de Sistemas na WEB
Desenvolvimento de Sistemas em 3 Camadas:
Camada de apresentação
recebe informações do usuário, envia aos componentes de negócio para o processamento, recebe os resultados fornecidos pelos componentes de negócio, e apresenta-os ao usuário.
Camada de lógica de negócio
O processamento é especificado e as regras de negócios mantidas. Regras de negócios realiza a validação de dados, verificação de logins, busca em banco de dados e diversos algoritmos de transformação. Une a camada de apresentação com as camadas de dados.
Camada de acesso a dados
permite o acesso a uma variedade de fontes de informações, incluindo dados relacionais e não relacionais, e uma interface de programação fácil de usar que é independente de ferramenta e de linguagem.
Configurações da Máquina
Sistema Operacional
Linux Windows
CompiladoresJDK PHP 4
Servidor Web APACHE (jakarta-tomcat)
SGBD (SQL) MySQL ORACLE MS ACCESS
Formulários – comunicação entre cliente e servidor
<FORM name=“” action=“” method=“” enctype=“”>
conteúdo do formulário...
</FORM>
name: identificador do formulário –
action: nome do script que receberá os dados do formulário no servidor
method: método de envio dos dados – get ou post
Enctype: formato envio dos dados – default é urlencoded
Existem vários tipos de campos de entrada no formulário, como:
campos de entrada de texto
menus de múltipla escolha ou escolha única
botões sim-ou-não
botões para submissão ou limpeza de formulário
Formulários – métodos de comunicação: GET e POST
GET - As informações do formulário são enviadas junto e ao final da URL ativada.
POST - As informações são enviadas após a ativação da URL, ou seja, o servidor entende que novas informações serão enviadas pelo cliente.
As informações do formulário serão tratadas na URL referenciada pelo tag ACTION, que será responsável por responder a solicitação do formulário.
ACTION="/cgi-bin/post-query" para um script no seu servidor ACTION="http://www.comp.ufscar.br/~zorzo/resp.php"
para o tratamento do formulário no servidor.
O formulário terá a seguinte estrutura: <FORM ACTION=“exemplo.php“ METHOD="POST" > Marcações de campos de entrada e HTML em geral </FORM>
Formulário
<FORM METHOD = “POST” ACTION= “RESP.PHP” >Nome: <input type=“TEXT” name=“NOME” size=40> <p>Sexo: <input type=“RADIO” name=“SEXO” value=“MASC”> masc
<input type=“RADIO” name=“SEXO” value=“FEM”> fem<p> Esportes de Interesse:<input type=“CHECKBOX” name=“fut” value=“X”> FUTEBOL<input type=“CHECKBOX” name=“vol” value=“X”> VOLEIBOL<input type=“CHECKBOX” name=“bas” value=“X”> BASQUETEBOL<p><TEXTAREA name=“sugestoes” rows=4 cols=64>
Digite as suas sugestoes</ TEXTAREA><p>Sistema Utilizado<SELECT name=“SISTEMA” size=1>
<option value=“w98”> Windows 98<option value=“unx”> Unix
</SELECT> <input type=“RESET” value=“Limpar Campos”>
<input type=“SUBMIT” value=“Enviar Formulario”></FORM>
Formulário
PHP – “Personal Home Pages”
1994 - criada por Rasmus Lerdorf - uso pessoal 1995 - foi disponibilizada para outros programadores “Personal Home Page Tools” 1997 – PHP/FI – incorporado o Form Interpreter1999 – passou a ser desenvolvido por um grupo de profissionaisem 1999 – mais de 1 000 000 usuários
PHP versão 4.0.4 – www.php.net - 11 / janeiro / 2001
Sintaxe Básica de PHP
O Código PHP fica junto com o código html, ficando com o interpretador a responsabilidade de diferenciá-los. Usa-se as tags: <? comandos ?>
<?php comandos ?>
<% comandos
%>
<script language=“php”>comandos
</script>
// primeiro exemplo – Teste1.php
<html>
<body>
<?php
print "Exemplo de código PHP";
?>
</body>
</html>
Sintaxe Básica de PHP
<html>
<head><title>TESTE 2</title></head>
<body bgcolor=yellow>
<center> <font size="4">Aprendendo PHP- formulario </font><br></center>
<form action="resp.php" method=post>
<input type="text" name="entrada" value="0" size="10“ maxlength="8">
<input type="submit" name="enviar" value="ENVIAR">
</form>
</body>
</html>
<html>
<head><title>TESTE 2- resposta</title></head
<body bgcolor=green>
<center> <font size="4">Resposta de PHP </font> <br> </center>
<? print “Resposta: ”; print $entrada ; ?>
</body> </html>
PHP
Tipos de Dados• Inteiro
• Ponto Flutuante
• String
• Array
• Objeto
Operadores• Aritméticos (+ - * / % )• Concatenação de Strings ( . )• Atribuição (como na linguagem C++) ( = += -= *= /= %= .=)• Bit a Bit ( & | ^ ~ << >>)• Lógicos ( and or xor ! (não) && (e) || )• Comparação ( == != < <= > >= )• Expressão Condicional (Expressão1) ? (Expressão2) : (Expressão3)• de incremento e de decremento ++ --
PHP – Estruturas de Comando
Blocos { }Comandos de Seleção if (expressão) if (expressão) if (expressão) comando; comando; comando;
elseif (expr2) else comando; comando; ...else comando; comando; endif;
Comandos de Repetição while (expressão) while (expressão) do { comando; comando;....comando; comando; .... comando;
endwhile; } while ( expressão ); for ( inicialização ; condição ; incremento ) comando; Comando breakComando continue
PHP –Classes e Objetos
class conta { var $saldo ; function saldo () { return $this->$saldo; } function credito ( $valor) { $this->$saldo += $valor; } function conta() { $this->$saldo =10; }}$contacorrente = new conta;$contacorrente - > saldo ( ); // retorna 10$contacorrente - > credito (50); $contacorrente - > saldo ( ); //retorna 60O construtor pode conter argumentos – que são opcionais
PHP +Mysql (Exemplo de Consulta)
<?php $conexao = mysql_connect ("localhost",“usuarioaluno",“senhapct2001"); mysql_select_db (“bancodedados",$conexao);
$consulta = "SELECT * FROM tabzorzo WHERE numero=$entrada1";
$resultado = mysql_query ($consulta, $conexao);
$entrada1 = mysql_fetch_array ($resultado);
$nome = $entrada1[nome];
print $nome;
echo "<br> <br>";
$numreg = mysql_num_rows ($resultado) + 1 ;
echo ("Numero de Registros: ");
print $numreg;?>
PHP +Mysql (Exemplo de Inserção)
<?php$conexao = mysql_connect ("localhost",“usuarioaluno",“senhapct2001");mysql_select_db (“bancodedados",$conexao);
$INSERT="insert into tabzorzo (numero,nome,telefone) values (\“$numero\",“\$nome\“, \”$telefone\“ )";$resp=mysql_query($INSERT,$conexao);
echo "<br> <br>";if($resp){ echo " Aluno cadastrado corretamente.";}else{ echo " Cadastro nao efetuado.";}?>
Java - Aplicativos ou Programas
Um programa em Java é a definição de uma classe que tem o método estático main( ), o qual será executado assim que for criado esta classe, e que ao ser executado poderá criar novas instâncias desta ou de outras classes.
public class AloPessoal { public static void main(String args[]) { System.out.println("Primeiro Programa em Java!"); }}
• Para compilar o programa Java: >javac AloPessoal.java
• Para executar o interpretador Java que interpreta os bytecodes, da Java Virtual Machine. >java AloPessoal , e será exibido na tela:
Primeiro Programa em Java!
Java – Applets
• e’ um programa em java, que é executado por um browser , quando é carregada a página que contém o applet.
• É um programa que será transportado pela internet, como os documentos html.
• São construídos para serem pequenos.
• por questões de segurança, obedecem critérios rígidos para que sua execução seja possível pelos browsers.
import java.applet.Applet;import java.awt.Graphics;public class alo extends Applet { public void paint (Graphics g) { g.drawString (“Alo a todos, Exercitanda Java”, 25,25); g.drawString (“Lembre-se de que o arquivo tem que ter o nome do applet”, 25,50); }} <html>
<applet code="alo.class" width=300 height=80> </applet></html>
• public void init() - esse método é chamado uma vez pelo appletviewer ou pelo browser quando um applet é carregado para execução - Ações Típicas: Inicializações de varíaveis, carregamento de sons para reproduzir ou imagens a exibir.
public void start() - esse método é chamado assim que o init termina, e a cada vez que o usuário do navegador retorna para a página HTML em que o applet reside.
public void paint(Graphics g) - esse método é chamado toda vez que o applet necessita atualizar sua exibição, que ocorre na primeira vez depois da execução do start ou quando a tela foi movimentada ou redimensionada e ai precisa ser redesenhado.
public void stop() - esse método é chamado toda vez que o applet deixa de ser visível, ou seja, quando ocorre um rolamento da tela ou quando o applet fica encoberto por outra tela. (start e stop podem ocorrer inúmeras vezes no ciclo de vida dos applets)
public void destroy() - esse método é chamado toda vez que o applet está sendo descarregado da página - para que seja realizada a liberação final de todos os recursos utilizados durante a sua execução. É acionado quando o browser troca de páginas.
Linguagem Java – Funcionamento dos Applets
• // ex2.java - contagem de numero de execucao de um appletimport java.awt.Graphics; // import class Graphics e Appletimport java.applet.Applet;
public class ex2 extends Applet { private int nroinits=0; private int nrostarts=0; private int nropaints=0; private int nrostops=0; public void init( ) { nroinits ++; } public void start( ) { nrostarts ++; } public void stop( ) { nrostops ++; }
public void paint( Graphics g )
{ nropaints++; g.drawString( "Init: "+ nroinits, 5, 15 ); g.drawString( "Start: "+ nrostarts, 5, 30 ); g.drawString( "Paint: "+ nropaints, 5, 45 ); g.drawString( "Stop: "+ nrostops, 5, 60 ); }
Linguagem Java – Funcionamento dos Applets
• é um componente que pode estender a funcionalidade dos servidores.
• Por serem escritos em Java, são independentes de plataforma podendo ser criados, compilados e executados em plataformas diferentes.
• É uma API Java que compilada atende requisições de páginas HTML e compatível com a plataforma Java.
• Trabalha com o Servidor por multi-thread.
• Trata coockies com muita segurança.
• Implementa manipulador de sessão.
• Possui estrutura orientada a objetos, o que aumenta a modularização do Sistema.
Java – Servlets
Applets x Servlets
• Navegador (browser) deve suportar Java e na versão correta da Applet;
• Demandam tempo de carregamento da página que contém o Applet;
• Difícil comunicação com outro aplicativo Java ou Banco de Dados;
CGI x Servlets
• Sobrecarrega o servidor;
• Tem funções limitadas;
• Difícil programação;
Java – Servlets
PHP x Servlets
• São limitados ao ambiente da página HTML;
• Tipos de dados são variantes (complicador para a corretude);
• Diferentes comandos para cada SGBD;
ASP x Servlets• São limitadas à plataforma Windows;• Estrutura de código diferente da filosofia C++;• Difícil portabilidade para outros ambientes;• Dependência de plataforma
Os servlets podem rodar em qualquer plataforma sem serem reescritos ou até mesmo compilados novamente.
Java – Servlets
Funcionamento de Servlets
RecebeSolic itação
EnviaResposta
Criação deEncadeam ento
Servidor HTTP
Container de Servlet
GeraResposta
Servlet
Estrutura Básica de um Servlet
• Importa os pacotes necessários
• Declara a classe– cria o método init();
– cria o método doGet() e/ou doPost() - são chamados pelo método service()
– cria o método destroy()
Exemplo 1
package leilao;
import javax.servlet.*;import javax.servlet.http.*;import java.io.*;
public class Leilao extends HttpServlet{ int valor; // método para inicializar o servlet public void init(ServletConfig ConfInicial) throws ServletException { super.init(ConfInicial); valor = 10; }
Exemplo 1 - cont.
// método chamado para atender uma solicitação de HTTP POSTpublic void doPost(HttpServletRequest solicitacao, HttpServletResponse resposta) throws ServletException, IOException { int numero1 = Integer.parseInt(solicitacao.getParameter("numero")); PrintWriter saida = resposta.getWriter(); if (numero1 > valor) { valor = numero1; saida.println(“Você deu o maior lance até o momento!!!"); } else saida.println("Sinto muito, alguém deu um lance maior..."); }
JSP- JavaServer Pages
• Tecnologia baseada em Java para desenvolvimento de sites da Web dinâmicos
• JSP é implementada através de servlets
• JSP permite que você separe a parte dinâmica das páginas do HTML estático
• JSP são arquivos de texto (.jsp) que substituem as páginas HTML tradicionais
• Integração de Java com HTML
Vantagens de JSP
• Modelo de programação que enfatiza o design de aplicações centradas em componentes– JavaBeans é um exemplo de um modelo de programação de
componentes escrito em Java
– Um componente é um objeto independente que representa uma coleção de propriedades e comportamento
– JSP possui tags especiais do tipo HTML para acessar JavaBeans em uma página, bem como para exibir e modificar suas propriedades
– Design centrado em componentes favorece a reusabilidade
Funcionamento de JSP
RecebeSolicitação
Servlet JSPCarregado?
GeraResposta
ServletJSP Atual?
Analisa JSP
Gera Fonte deServlet JSP
Com pilaServlet JSP
EnviaResposta
CarregaServlet
Servlet de Página JSP
Não
Sim
NãoSim
Servidor HTTP
Container JSP
Servlet Com pilador de Página
TAGs JSP
• Quatro principais categorias de tags de marcação fornecidas por JSP:
– Diretivas
– Elementos de criação de scripts
– Comentários
– Ações
Exemplo 1 Usando Beans(Arquivo.java)
public class AloBean
{
String nome;
public HelloBean()
{ nome = “Mundo”; }
public String getNome()
{ return nome; }
public void setNome(String nome1)
{ nome = nome1; }
}
Exemplo 1 Usando Beans (Arquivo.jsp)
<HTML>
<BODY>
<jsp:useBean id=“hello” class=“AloBean” />
<jsp:setProperty name=“hello” property=“nome” value=“pessoal de computação” />
Alô, <jsp:getProperty name=“hello” property=“nome1” />
</BODY>
</HTML>
Sérgio Donizetti Zorzo
Universidade Federal de São Carlos
Departamento de Computação