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