Slides - DIMAp
Transcrição
Slides - DIMAp
ASP Active Server Page Lirisnei Gomes de Sousa [email protected] Jair C Leite [email protected] Scripts • ASP teoricamente suportaria qualquer linguagem de script, mas na prática os aceitados são – VBScript – MS JScript 1 VBScript Características da linguagem • Permite a utilização de todos os comandos do Visual Basic, porém não permite a manipulação de banco de dados e acesso aos periféricos • A manipulação de banco de dados é feita através do objeto ADO, o VBScript apenas cria instâncias deste objeto, a partir daí, você pode utilizar os métodos deste objeto para manipular os dados • O código é processado pelo IIS (servidor) 2 Tipos de tags • Código a ser executado no servidor <% %> • Código a ser executado no servidor ou no cliente <SCRIPT LANGUAGE = VBScript RUNAT=Server> ... </SCRIPT> Exemplo (lado-servidor) <HTML> <BODY> <% if Hour(Now) < 12 then %> <CENTER> Bom dia! </CENTER><BR> <% else %> <CENTER> Olá! </CENTER> <BR> <% end if %> </BODY> </HTML> 3 exemplo com Date <html> <head> <title>ASP </title> </head> <body bgcolor="#FFFFFF"> Hoje <% = Date %>. </body> </html> Processamento lado-cliente • É necessário que o seu navegador seja o Internet Explorer 4.0 ou superior • A programação deve ser baseada nos eventos dos objetos do formulário e do próprio formulário – ONCLICK, CHANGE, GOTFOCUS 4 Exemplo (lado-cliente) <html> <script language="VBScript"> SUB BOTAO1_ONCLICK() form1.BOTAO1.Value=“Novo Botao1" END SUB </script> <body bgcolor="#FFFFFF"> <form NAME=form1 method="POST"> <p><input type="button" name="BOTAO1" value=“Botao1"></p> </form> </body> </html> Linha de Comando • Erradas – <% a = 2 b = a*2 %> – <% texto = “string”+ “string” %> • Corretas – <% a = 2 : – <% a = 2 b = a*2 b = a*2 %> %> – <% texto = “string1”+ _ “string2” %> 5 Variáveis (tipagem dinâmica) • Suporta apenas o tipo variant , este tipo suporta – integer, double, string, date e currency <% Dim var1 Dim var2 var1 = 10 ... %> Escopo • Global – Declaração fora de blocos de comando • Local – Declaração dentro de blocos de comando – Tempo de vida (quase sempre) restrito a execução do bloco de comandos 6 Declarações • Implicitas – <% a = 2 %> • Explícitas <% Dim a a = 2 %> – As declarações explícitas passam a ser obrigatórias com o uso de: <% Option Explicit %> Tipos de dados • • • • • • • • Subtipos Integer, Long, Single, Double Date String Boolean Null Empty Object 7 Array • A declaração deve ser explícita • A indexação começa em 0 • O valor informado na declaração é o índice máximo alcançado <% Dim array1(1) array1(0)=20 array1(1)=“str“ %> Array com n dimensões • O número máximo de dimensões suportado é 60 • A dimensão pode ser redefinida <% Dim array2 (1,1) Dim array3(1) ReDim array3(2) %> 8 Constantes • É similar à variável, a diferença é que neste caso não é permitido a troca de valor <% Const pi=3.1415 %> Operadores • Aritméticos – + , - , * , / , %, ^ • Atribuição –= • Comparação – = , != , < , > , <= , > = – Is (de Igualdade entre dois Objetos) 9 Operador de exponenciação • O cálculo é feito da esquerda pra direita <%Dim var1 = 2^2^3 %> 2^2^3 4^3 64 Funções Conversoras de Tipo • • • • • • • • CStr Cint CLng Cbool Cbyte Cdate CDbl CSng 10 SubRotinas • Melhoram a estrutura do código • Existem dois tipos: – Sub (sem retorno) – Function (com retorno) [Sub | Function] <SubRotina>([{<Par>}]) [{<comando>}] End Sub Função • O valor de retorno da função deve ser atribuído ao seu nome <% Function Div(a,b) Dim Resultado Resultado = a / b Soma = Resultado end Function %> 11 Include • Reutilização remota de código <!-- #INCLUDE VIRTUAL=”Path_Virtual/Arquivo” --> <!-- #INCLUDE FILE=”Path_FÍSICO/Arquivo” --> Funções pré-definidas • Existem várias funções pré-definidas Abs(valor_numérico) Fix (valor_numérico) Int(valor_numérico) Sin(valor_numérico) Date Time Now Day (valor_data) Month (valor_data) o módulo de um número a parte inteira de um número a parte inteira de um número o seno de um angulo a Data atual a Hora atual a Data/Hora atual o dia de uma determinada data o mês de uma determinada data 12 Estruturas de Controle • Comandos de seleção • Comandos de repetição If – then – else <% <% <% <% if WeekDay(Date)=1 then %> Hoje é Domingo elseif WeekDay(Date)=7 then Hoje é Sábado else %> Hoje é dia de ir pro CEFET end if %> %> 13 Select Select Case <expressao> Case <condição> [{<Comando>}] Case <condição> [{<Comando>}] Case Else //o default [{<Comando>}] End Select Comandos de repetição (1/3) • Do Until <Condição> Executa um bloco de instruções até [{Comandos }] Loop que a Condição se torne verdadeira • Do A condição só é testada no final e comando [{Comandos }] será executado pelo menos uma vez Loop Until <Condição> 14 Comandos de repetição (2/3) • Do While <Condição> [{Comandos }] Executa um bloco de comandos enquanto a condição for verdadeira Loop ou While <Condição> [{Comandos }] Wend • Do [{Comandos }] A condição só é testada no final e comando será executado pelo menos uma vez Loop While <Condição> Comandos de repetição (3/3) • For Variável=limiteI to limiteF Step N [{Comandos }] Next • For Each Elemento In Coleção [{Comandos }] Next 15 Comando Exit • Exit Do - sai de laços que começam com DO • Exit For - sai de laços que começam com FOR • Exit Function - sai de uma Function • Exit Sub - sai de uma Sub Tratamento de Erros • O objeto ERR contém duas propriedades: – Description : Mensagem original do erro – Number : Número associado ao erro • A linha que contem erro pode ser pulada <% On Error Resume Next [{<comando>}] %> <% if err then %> Ocorreu um erro <%end if%> 16 Objetos Internos • Response - as respostas HTML enviadas ao cliente • Request - os dados enviados por um formulário HTML ao Servidor Web • Application - um conjunto de páginas de um mesmo diretório virtual • Session - Sessão aberta com um Cliente • Server - o Servidor Web em si, permitindo acesso a algumas propriedades do mesmo e a criação de instâncias de Objetos Activex Objeto Application • A aplicação será iniciada na primeira vez que um usuário tentar acessar alguma página de um diretório virtual. Será finalizada o servidor web for desligado • Possibilita o armazenamento e recuperação de valores relacionadas a uma aplicação ASP 17 Application - Variáveis • As variáveis do nível de Application podem ser acessadas por todos os usuários que estejam acessando a mesma aplicação Application(“NOME_VAR”) = VALOR • LOCK e UNLOCK são dois métodos do objeto Application utilizadas para gerenciar o bloqueio a uma varíavel – Quando a mesma variável não pode ser acessada por dois usuários ao mesmo tempo Application - Eventos • Application_OnStart - quando um diretório virtual é acessado pela primeira vez. • Application_OnEnd - quando o web server é desligado. 18 SubRotinas para os eventos • É possível criar rotinas que serão executadas na ocorrências desses eventos, estas rotinas devem ficar em um arquivo chamado GLOBAL.ASA <SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER> Sub Application_OnStart() {[<comandos]} End Sub </SCRIPT> Objeto Session • Quando um usuário Web se conecta a um aplicativo ASP é iniciada uma sessão para o mesmo no servidor Web • A sessão termina quando o usuário fecha o navegador ou quando é abandonada • Uma sessão só é acessada pelo seu dono (usuário) 19 Session - Abandono • Quando ocorre TIMEOUT o servidor fecha a sessão • TIMEOUT é utilizada para determinar quanto tempo o usuário pode ficar sem interagir com a sessão Session.Timeout = MINUTOS Session - Variáveis • sessão permanecerão na memória(ativas) até a sessão ser encerrada Session(“NOME_VAR”) = VALOR 20 Session - Eventos • Session_OnStart – inicio da sessão • Session_OnEnd – fim da sessão • Também é possível desenvolver métodos para estes eventos e colocados no arquivo GLOBAL.ASA Objeto Response • Este objeto representa o canal de envio de dados para o cliente • É possível redirecionar o cliente para outra aplicação 21 Response - métodos • Write – envia qualquer texto ao navegador. • End - termina o envio da página ASP ao cliente, mesmo que ela não tenha chagado ao final • Clear - apaga todo o conteúdo do Buffer se o mesmo estiver ativo • Flush – pode ser utilizado para enviar o conteúdo do Buffer para o cliente WEB • AppendToLog - Esse método escreve um texto no arquivo de LOG do Servidor. • Redirect - redireciona o cliente * Response - propriedades • Booleano Buffer - se True, o servidor só enviará a página ASP ao cliente quando encerrar toda a leitura da mesma, ou quando utilizarmos nesse script o metódo Flush* • Cookies(“nome”) - Cria cookies ou altera seu valor * • Expires = minutos - informa o tempo(minutos) em que uma página ASP pode permanecer ativa na Cache do navegador * Se a propriedade Buffer for diferente de True, a propriedade ou método só poderá ser acessao antes de qualquer comando que gere respostas HTML ao cliente 22 Um exemplo de WRITE • O método WRITE sendo utilizado para colocar texto na saída de dados <SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER> RESPONSE.WRITE “<HTML>...” RESPONSE.WRITE “...” RESPONSE.WRITE “</HTML>” </SCRIPT> Request • Captura os dados passados pelos formulários HTML ao Servidor através de três métodos: – GET - Request.QueryString(Nome_Objeto) – POST - Request.Form(Nome_Objeto) – GET OU POST - Request(Nome_Objeto) 23 Request - Métodos • Além dos métodos de captura temos • Request.Cookies(“Nome”) – ler cookies • Request.ServerVariables(“REMOTE_A DDR”) - IP do usuário • Request.ServerVariables(“REQUEST_M ETHOD”) - Saber o METHOD utilizado Seu IP é: <%=Request.servervariables("REMOTE_ADDR")%> Objeto Server • Representa o Servidor Web, permitindo acesso a algumas de suas propriedades. Também possibilita a instanciação em páginas ASP de componentes ActiveX 24 Server - Métodos • HTMLEncode - codifica uma string para o formato HTML. • URLEncode - Esse método transforma uma string para o formato padrão de URL. • MapPath - Método que retorna o PATH real de um determinado diretório virtual do servidor Web. • ScriptTimeOut - Propriedade que determina o tempo máximo(segundos) que um script ASP pode ficar executando. Evita laços infinitos. Componentes ActiveX • CreateObject - Cria uma instância de um componente ActiveX na página ASP: Set Obj = Server.CreateObject(“IDObjeto”) 25 Acesso a Banco de Dados • O servidor IIS traz um componente que permite fazer acesso aos dados, o Microsoft Data Access, este utiliza componentes do pacote ADO(Activex Data Object), uma tecnologia baseada no ODBC(Open DataBase Connectivity) ODBC • É o mecanismo de acesso a banco de dados mais conhecido no Windows • Cada fabricante deve desenvolver um drive para o seu banco • O banco deve ser compatível com o ODBC e deve ser registrado como um origem de dados ODBC 26 Objetos ADO • Connection: representa uma conexão ativa com um banco de dados ODBC. • Command: representa um comando a ser executado pela fonte de dados ODBC. • Recordset: representa um conjunto de registros resultantes do processamento de um comando SQL em um objeto Connection. • Fileds : Representa os campos de um RecordSet. Iniciando uma conexão • Passos para a criação de uma conexão Set conexao = Server.CreateObject(“ADODB.Connection”) conexao.Open “FonteODBC [, Usuário][, senha]” 27 Métodos do objeto Connection • Open – abre uma conexão • Close - Fecha a conexão . • Execute (ComandoSQL) - Executa um comando SQL na Conexão aberta. • BeginTrans - Inicia uma transação no Banco de Dados • CommitTrans - Finaliza com sucesso uma transação iniciada • RollBackTrans - Desfaz todos os comandos de uma transação aberta. RecordSet Set Tabela = Server.CreateObject(“ ADODB.RecordSet”) Tabela.ActiveConnection = “CursoASP” Tabela.Open “Select * From Pessoa” ou Set Tabela = Conexao.Execute( “Select * from pessoa”) 28 RecordSet • • • • BOF - True indica início do RecordSet EOF - True indica o final do RecordSet Close - Fecha o recordset aberto MoveFirst - Move o para o primeiro registro • MoveLast - Move o o último registro • MoveNext - Move o próximo registro RecordSet • MovePrevious - Move o para registro anterior • Update Salva as alterações feitas no RecordSet no Banco de Dados. Também serve para alterar o registro corrente do RecordSet • AddNew - Adiciona um registro ao RecordSet Ex:Tabela.AddNew Tabela(“Nome”)=”Kelly” Tabela(“DataN”)=#26/05/1980# Tabela.Update • Delete - Elimina um registro de um Recordset consequentemente, de uma tabela do Banco de Dados 29 Fields • Acesso ao campos de uma tabela Do While not Tabela.EOF Response.Write Tabela.Fields(0).Value & “<BR>” Response.Write Tabela.Fileds(“Nome”) & “<BR>” Response.Write Tabela.Fields(“email”) & “<BR>” Response.Write Tabela.Fields(“DataN”) & “<HR>” Tabela.MoveNext Loop Conection <%SET CONEXAO = SERVER.CREATEOBJECT("ADODB.CONNECTION") CONEXAO.OPEN “CursoASP” SQL = “DELETE FROM aluno WHERE matricula=“ & REQUEST("matricula") CONEXAO.EXECUTE (SQL) %> 30