Plataforma para
Desenvolvimento de Software
em Ambiente WEB
Prof. Dr. Sérgio Donizetti Zorzo
UFSCar –junho/2001
Ambiente de Trabalho
Servidor
Web
Páginas
HTML
Est
JSP
Servlets
PHP
ASP
Cliente/
Browser
Scripts
Din
Processamento
JAVA
C++ / C
Delphi
(não visual)
Linux
Windows
HTML
Netscape
Explorer
Banco de
Dados
Oracle
MySQL
dBase
Tecnologia Cliente-Servidor
Parâmetros
REQUEST
cliente
CSB
applet
Servidor
Servlet
RESPONSE
Resultados
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
Compiladores
JDK
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 Interpreter
1999 – passou a ser desenvolvido por um grupo de profissionais
em 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
// primeiro exemplo – Teste1.php
?>
<html>
<?php
<body>
comandos
?>
<?php
print "Exemplo de código PHP";
<%
comandos
%>
<script language=“php”>
comandos
</script>
?>
</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)
comando;
if (expressão)
comando;
elseif (expr2)
comando;
else
comando;
if (expressão)
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 break
Comando 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 60
O 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
•
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.
•
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.
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>
Linguagem Java – Funcionamento dos Applets
•
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 applet
import java.awt.Graphics; // import class Graphics e Applet
import 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 );
}
Java – Servlets
• é 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.
Funcionamento de Servlets
Servidor HTTP
Recebe
Solicitação
Container de Servlet
Criação de
Encadeamento
Servlet
Gera
Resposta
Envia
Resposta
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 POST
public 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
Servidor HTTP
Recebe
Solicitação
Container JSP
Servlet Compilador de Página
Servlet
JSP Atual?
Não
Analisa JSP
Sim
Servlet JSP
Carregado?
Sim
Gera Fonte de
Servlet JSP
Não
Carrega
Servlet
Compila
Servlet JSP
Servlet de Página JSP
Gera
Resposta
Envia
Resposta
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
[email protected]
Download

PHP