Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação p/ Web. Material III-Bimestre Introdução Programação na Linguagem ASP Active Server Page Site : http://www1.univap.br/~wagner Prof. Responsável Wagner Santos C. de Jesus Introdução a Programação Distribuída • Tem como objetivo desenvolver ferramentas para aquisição e envio de dados em fontes remotas. Dados (HTML,Arquivo de Imagens, XML, Dados Relacionais) Aplicação Java 2 O que faz uma aplicação distribuída? • Obtém dados de fontes remotas Páginas HTML, arquivos de imagens, dados relacionais e semiestruturados (XML), etc • Acessa continuamente informações de conteúdo dinâmico. • Cotação de ações, notícias, monitoramento remoto de sistemas • Envia dados para fontes remotas Servidores de arquivos, computação massivamente paralela. 3 Servidor de HTTP • Servidor web: Servidor responsável pelo armazenamento de páginas de um determinado site, requisitados pelos clientes através de browsers. 4 O protocolo HTTP • (HyperText Transfer protocol) é o protocolo de rede utilizado para entrega virtualmente de todos os arquivos e outros dados sejam eles arquivos HTML, arquivos de imagens, resultados de consulta a banco de dados, arquivo de texto, ou qualquer outro tipo de recurso. 5 Sistema de comunicação Arquitetura Camadas 4 Aplicação HTTP 3 TCP Transporte 2 IP Protocolo de Internet 1 REDE 6 Transações HTTP Uma transação consiste em: • • • • Estabelecimento da conexão; Requisição (pelo cliente); Resposta (pelo servidor); Fechamento da conexão. 7 Linha inicial de requisição Método de envio de dados Método SP URL SP Versão ] Cabeçalho : Parâmetro CR LF Cabeçalho : Parâmetro CR LF CRLF CR LF Linha de Requisição Linhas de cabeçalho Linhas em banco Mensagem Indica o fim do cabeçalho URL – (User Resource locator) 8 Linha de resposta (linha de status) Linha de status Versão SP Status SP Motivo CR LF Cabeçalho : Parâmetro CR LF Cabeçalho : Parâmetro CR LF CRLF Corpo da Entidade (Mensagem) Linhas de Cabeçalhos Linha em branco (HTML) 9 O código de status • 1xx – Indica uma mensagem de informação apenas. • 2xx – indica operação de algum tipo bem sucedida. • 3xx – Redireciona o cliente para uma outra URL. • 4xx – Indica um erro por parte do cliente • 5xx – Indica um erro por parte do servidor 10 Conceitos para um código em ASP (Active Server Page - Página de Servidor Ativa) Um código escrito na linguagem ASP roda sempre no servidor nunca no cliente. ASP- vem a ser um aplicativo que roda com a linguagem Vbscript. Embutida na estrutura de um código em HTML. Servidor de HTTP (IIS) Para executarmos uma aplicação em ASP precisamos Ter instalado na máquina um aplicativo denominado IIS (Internet Information Server). Esse aplicativo permite que a máquina seja transformada em um servidor web para execução de scripts e acesso a banco de dados. Diagrama de Funcionamento (Página com ASP - PWS) Obs : Todo programa ASP tem como saída um código HTML. Procedimento para gravação e execução de páginas com ASP. Observação : Todos os programas em ASP devem ser colocados no diretório criado pelo servidor que tem como padrão o nome c:\Inetpub\wwwrot. Para executar uma página devemos usar o mesmo procedimento que usarmos para uma página contida no servidor exemplo http://localhost/nome.asp ou HTML. Operadores da Linguagem ASP Comandos Básico da linguagem ASP. <% - %>- Vem a ser um comando fundamental para se escrever um código de script em ASP, permite que o servidor consiga diferenciar o código HTML do código ASP. Obs : Todo código Asp deve ser delimitado pelos símbolos de Menor porcentagem e maior porcentagem Atenção !!!! Importante : Todo Programa em ASP deve possuir a extensão ( .asp ), caso contrário não será identificado na sua execução. Estrutura de um programa em ASP. <HTML> <HEAD> <TITLE>Estrutura-ASP</TITLE> </HEAD> <BODY> : : <% <Código de Programa> %> : : </BODY> </HTML> Estruturas Básicas de controle. •Atribuição • Condição • Repetição Criando variáveis Sintaxe : Dim <NomeVariável> Exemplo : Criação e atribuição de valores : : <% dim a a = 10 %> : : & - O operador e comercial concatena duas String (Juntando as duas para serem usadas). Exemplo : Dim K,Z,Resposta K = "Aba" Z = "caxi" Reposta = K&Z Saída será a variável resposta = “Abacaxi”. If /then/else : Comando que permite testar se uma condição é verdadeiro ou falsa. Sintaxe : If <condição> then <Bloco de Instrução-1> else <Bloco de Instruções-2> end if Exemplo if/then/else Exemplo : <% dim x x = "S" %> <% if x = "S" or x = "N" then %> <H1> Valor de x válido !!!! </H1> <% else %> <H1> Valor de x Inválido !!!! </H1> <% End if %> Saida seria Valor de x Válido escrito em tamanho grande na tela do browser Select Case : Permite verificar uma lista de expressões. Sintaxe : Select Case <VarM> Case <ListaExp> <Bloco-Instruções-1> Case <ListaExp> <Bloco-Instruções-2> : : Case Else <Bloco-Instruções> End Select Exemplo Select Case <% dim a a = 0 Select Case a Case 0 A saída seria Desligado em tamanho 10 escrito em vermelho. %> <font size = 10 Face = "Times new Roman" color= "#ff000"> Desligado !!! </font> <% Case 1 %> <font size = 10 Face = "Times new Roman" color= "#000ff"> Ligado !!! </font> <% Case Else %> <B> Não é um digito Binário </B> <% End Select %> For/Next : Permite criar uma repetição sequencial. Sintaxe : For <VarM> = <ExpN1> to <ExpN2> [Step +/- <ExpN3>] : : <Bloco-Instruções> Next Exemplo : For/Next Exemplo : <B>Você quer Aprender Asp? : </B> <% dim b for b = 1 to 100 %> <B>Sim !!!!,</B> <% Next %> A saída seria Você quer Aprender Asp: Sim !!!!, Sim !!!!, Sim !!!!, ............. While/Loop : Cria uma repetição condicional para determinado número de instruções. Sintaxe : Do While <Condição> : : <Bloco-Instruções> Loop Exemplo : While/Loop Exemplo : : : <B>As poderosas dizem : </B> <% dim b b = 1 do while b <= 3 %> <B>Oi !!!!,</B> <% b = b + 1%> <% Loop %> : : A saída seria As poderosas Dizem : Oi !!!!, Oi !!!!, Oi !!!! Do Until : Cria repetição condicional baseada em uma expressão contrária ao While. Sintaxe : Do Until <Condição> : : <Bloco-Instruções> Loop Exemplo : Do Until Exemplo : <B>Os pokemons dizem : </B> <% dim b b = 1 do Until b > 3 %> <B>Oláá !!!!,</B> <% b = b + 1%> <% Loop%> A saída seria Os pokemons Dizem : Oláá !!!!, Oláá !!!!, Oláá !!!! Criando saída de dados no video (Browser). Response.Write() Para mostrar a saída de um processamento de um programa no vídeo devemos usar o objeto do ASP Response, acompanhado do método Write. Envia a resposta escrevendo o resultado no vídeo. Sintaxe Response.Write. Sintaxe : Response.Write <String> Exemplo : Response.Write Exemplo : <% dim i,cor for i = 1 to 3 if i = 1 then cor = "#ff0000" end if if i = 2 then cor = "#00ff00" end if if i = 3 then cor = "#0000ff" end if Response.Write "<font Color="&cor&">Treinamento - Asp </Font><br>" next %> Funções da linguagem ASP. • Cstr() -Converte um número em String. • Cint() - Converte um número com casas decimal em um número inteiro. • Len() - Retorna com a quantidade de caracteres encontrada em uma String. • Mid() - Retorna com a parte da String Especificada. Exemplo : CStr() Dim x,y x = 34 y = Cstr(x) O resultado de Y será = "34" como String. Exemplo : Cint() Dim x,y x = 34.5 y = Cint(x) O resultado de y será = "34" como String. Obs : Grande parte de conversões de dados de variáveis e seus tipos o Asp irá fazer automaticamente sem a necessidade de funções. Exemplo : Len() Dim k,a a = "Abacaxi" K = Len(a) O resultado de K será = 7. Exemplo : Mid() Dim k,a a = "Abacaxi" K = mid(a,1,3) O resultado de K será = “Aba”. Enviando dados de um Formulário para um programa. <Form Name = <NomeForm> Method=<Nome-Método> Action= <Nome-Script> > Method : Clausula que especifica que método será usado para o envio de dados. Action : Clausula que especifica para que Script irá os dados do formulário. Método Get : Envia dados de um formulário para o Script do Servidor. Exibindo os dados a serem enviados. Obs : Usando o método Get os dados iram aparecer no location de seu Navegador. Sintaxe : < Form Name = <NomeForm> Method="Get" Action=<Nome-Script> > Exemplo do Método Get Exemplo : <form Name = "form1" Method="Get" Action="Cadastro.asp"> Obs : Os dados enviados pelo método Get irão aparecer da seguinte maneira Location do Navegador http://localhost/formul.html?Nome=Tamara&Endereco=Rua+das+Cove Significado dos Símbolos : ? - Separa o endereço web do nome dos campos do formulário. = - Indica os dados que foram escritos pelo usuário no campo. & - Separação de termino de um campo inicio de outro. + - Indica a separação dos dados escritos por espaços em branco. Exemplo de dados Enviados pelo método Get : Obs : A declaração do método deverá ser feita sempre em um formulário. Exemplo do Código representado pelo desenho anterior. <HTML> <HEAD> <TITLE>Envia Dados</TITLE> </HEAD> <BODY> <form Name = "form1" Method="Get” Action="Cadastro.asp"> Nome: <input type="text" Name="Nome"><br> Endereco: <input type="text" Name="Endereco"><br> Enviar <input type="SUBMIT" value="Enviar"><br> </form> </BODY> </HTML> Obs : Para Enviar dados de um formulário é necessário que troquemos a propriedade Button da clausula type do comando <Input> por Submit. Método Post : Envia dados de um formulário para o Script do Servidor. Não exibindo os dados a serem enviados. Obs : Usando o método Post os dados não iram aparecer no location de seu Navegador. Sintaxe : < Form Name = <NomeForm> Method=“Post” Action=<Nome-Script> > Exemplo do Método Post Exemplo : <form Name = "form1" Method="Post" Action="Cadastro.asp"> Variáveis do Padrão CGI CGI - Vem a ser um padrão de especificação de programas para web cujo significado da sigla é (Common Gateway Interface ) Interface Comum entre os portais(Comunicação). Uma especificação de um CGI é padrão para qualquer servidor web, para isso existem variáveis para podermos pegar informações vindas de um servidor em tempo de execução de um programa. Exemplo das variáveis CGI. Request.ServerVariables() - Capturando os valores das variáveis CGI. Para Captura as informações enviadas pelas variáveis CGI por intermédio de um servidor HTTP usamos o objeto Request seguido pelo método ServerVariables(). Request.ServerVariables(). Capturando os valores das variáveis CGI. Sintaxe : <varm> = Request.ServerVariables(<Nome-Variável>). Exemplo : Request.ServerVariables() Exemplo : <% dim resposta resposta = Request.ServerVariables("SCRIPT_NAME") Response.Write resposta & "<BR>" %> O resultado desse programa será o nome do programa(ASP) que estará sendo executado com script acima. Request.Form() : Captura dados enviados para o script pelo formulário. Sintaxe : <Varm> = Request.Form(<Nome-campo-Formulário>) Exemplo : Request.Form() Exemplo : <% Dim Lnome,LEndereco Lnome = Request.form("Nome") Lendereco = Request.form("Endereco") Response.Write Lnome & "<br>" Response.Write Lendereco %> Código do formulário (Teste.html) <HTML> <HEAD> <TITLE>Exemplo-ASP</TITLE> </HEAD> <BODY> <form Name = "form1" Method="Post" Action="Tabuada.asp"> Valor : <input type="text" Name="valor"><br> <input type="SUBMIT" value="Calcular"><br> </Form> </BODY> </HTML Código do Script em ASP (Tabuada.asp) <HTML> <HEAD> <TITLE>Exemplo-Código-ASP</TITLE> </HEAD> <BODY> <% dim lvalor lvalor = Request.form("valor") for i = 1 to 10 t = lvalor * i Response.Write lvalor &"*"& i & "="& t&"<br>" next %> </BODY> </HTML> Estrutura de Banco de Dados (ASP) Conceito : Um banco de dados é uma coleção de informações relacionadas a um determinado assunto ou finalidade. GERENCIADOR DE BANCO DE DADOS Tem como base o processo de classificar, relatar, adquirir e modificar os dados concebidos em seu interior. Alguns Gerenciadores de Banco de Dados ( SQL-Server, Informix, Fox-pro, Oracle, Paradox, Access......). FUNDAMENTOS BÁSICOS DA ESTRUTURA DE UM (BANCO DE DADOS). Um Banco de Dados é constituído por um formato padrão que deve ser respeitado como um conceito de Tabela e Registros. Estrutura Básica de Banco de Dados. - Os Conjunto de Dados formam os Campos - Os Conjuntos de Campos Formam Registros - Os Conjuntos de Registros Formam as Tabelas ou (Arquivos). - Os Conjuntos de Tabelas (Arquivos) formam os Bancos de Dados. Exemplo de Tabela Usando a Linguagem de Manipulação de Dados. (SQL) A linguagem SQL (Structure Query Language) Linguagem de Estrutura de Consulta. Possibilita uma estrutura única de comandos que podem ser usados em qualquer Banco de Dados do Mercado com maior rapidez e eficiência na escrita de códigos de operações básicas de manipulação de dados. Comando Básicos da Linguagem SQL. • • • • Select - Pesquisa dados de uma Tabela. Update - Modifica dados de uma Tabela. Insert - Insere dados em uma Tabela. Delete - Apaga dados de uma Tabela. Sintaxe : Select [*/All/Distinct][<Campos-Tabela>] From [<Nome-Tabela>] Where [<Condição>] Exemplo : Select Nome,Endereco From Cadastro Where nome = ‘Jorge Mauro’ Sintaxe : Update <Nome da Tabela> set <nome-do-campo> = <Constante> [Where <Condição>] Exemplo : Update CadAlunos set nomeAluno = ‘Maria da Coves’ Where Codigo = ‘001’ Sintaxe : Insert into <Nome-Tabela>[( <Nome-dos-Campos> )] Values(<Lista de Campos>) Exemplo : Insert Into CadAlunos (Nome,Endereco) Values( 'Marta Cunha','Rua Siqueira Campos,3' ) Sintaxe : Delete From <Nome-da-Tabela> [Where <Condição>] Exemplo : Delete From CadAlunos Where nome = ‘Maria das Coves’ Criando uma Tabela no Gerenciador de Banco de Dados do Access. Observação : Ao criar uma tabela em um banco de dados é necessário que se crie no diretório onde esta o banco de dados do servidor. (c:\Inetpub\wwwroot\CadAlunos.mdb) Diagrama que demonstra Conexão do servidor de banco de dados com a linguagem ASP. Siglas de Objetos de acesso B.D. ADO - (ActiveX Data Objects) é quem fornece a interface entre o banco de dados e o ASP. OLE-DB - (Object Linking and Embedding Database) - Permite que qualquer Banco de dados possa ser conectado com ASP. ODBC - (Open DataBase Connectivity) - Permite que os dados possam ser reconhecidos pelo servidor e o cliente. Acessando um Banco de Dados em ASP (Usando Access) Para isso é necessário fazer uma conexão ADO em seguida a ligação do drive de ODBC com banco de dados. Isso se da por intermédio do comando set. Sintaxe : set <Variável ADO> = Server.CreateObject(<Tipo de Conexão>) Exemplo : Set Db = Server.CreateObject("ADODB.Connection") Abrindo um Banco de Dados através de uma conexão ODBC. Método : Open Sintaxe : <Variável ADO>.Open <Especificação Caminho;Driver> Exemplo : Db.Open "DBQ=C:\inetpub\wwwroot\Banco.mdb;Driver={Driver para o Microsoft Access (*.mdb)};" Obs : Desse momento em diante qualquer tabela desse banco de dados poderá ser acessada via programa ASP. Atenção : O procedimento de se montar uma instrução SQL para qualquer tipo de operação em uma tabela de um Banco de Dados é denominado (Query) Consulta. Criando uma consulta em um programa ASP. Uso do SELECT. Exemplo : ....... Dim Query Query = "Select * from teste where numero = 'Maria das Coves'" ...... Manipulação de Arquivo. Método Execute() : Permite executar um comando SQL colocado na variável String determinada. Método Execute() Sinatxe : Set <Variável-de-Registro> = <Objeto-Dados>.Execute(<String>) Exemplo : Set RecSet = Db.Execute(Query) Métodos de Deslocamento do Ponteiro em um Arquivo e Localização de Fim de Arquivo. • EOF - Final do Arquivo • MoveNext - Próximo Registro • MoveFirst - Primeiro Registro Método Eof - Retorna True se caso o ponteiro estiver no final do arquivo e False caso contrário Exemplo : <% if RecSet.Eof then %> <Script Language = JavaScript> alert("Final de Arquivo Encontrado !!!") </Script> <%End If %> Método MoveFirst - Move o ponteiro para o primeiro registro. Sintaxe : <Objeto>.MoveFirst Exemplo : RecSet.MoveFirst Método MoveNext - Move o ponteiro para o próximo registro. Sinatxe : <Objeto>.MoveNext Exemplo : RecSet.MoveNext Método Close : Fecha a tabela SQL aberta. Sintaxe : <Objeto>.Close Exemplo : RecSet.Close Inserindo dados em uma tabela por intermédio do comando Insert. Exemplo : <% Set Db = Server.CreateObject("ADODB.Connection") Db.Open "DBQ=C:\inetpub\wwwroot\Banco.mdb;Driver={Driver para o Microsoft Access (*.mdb)};" Query = "Insert Into Tabela1(nome) Values('Carlos Henrique')" Set RecSet = Db.Execute(Query) %> Consultando dados em uma tabela comando Select. Exemplo : <% Set Db = Server.CreateObject("ADODB.Connection") Db.Open "DBQ=C:\inetpub\wwwroot\Banco.mdb;Driver={Driver para o Microsoft Access (*.mdb)};" Query = "Select * from teste Where nome= 'Roberta Silva'" Set RecSet = Db.Execute(Query) If RecSet.Eof then %> <Script language = "JavaScript"> alert("Nome não Encontrado !!!") </Script> <% Else Response.Write RecSet("Nome") End if RecSet.Close %> Obs : Para se fazer referencia a um determinado campo de uma tabela pegando seus dados, use aplicação da seguinte sintaxe. Exemplo : RecSet(<String-Campo>) <String-Campo> - Deve ser o nome do campo da tabela que se deseja pegar seus dados. Alterando dados de uma Tabela Update. Exemplo : <% Set Db = Server.CreateObject("ADODB.Connection") Db.Open "DBQ=C:\inetpub\wwwroot\Banco.mdb;Driver={Driver para o Microsoft Access (*.mdb)};" Query="Update CadTeste set nome = 'Maria das Coves' Where Codigo = '001' " Set RecSet = Db.Execute(Query) %> Obs : No exemplo abaixo o registro cujo código é 0001 os dados do campo nome serão alterados para (Maria das Coves).