Gliwice 2004 Systemy i Narzędzia Baz Danych z Dostępem Przez Internet Klasyczne ASP cz.1
Agenda 1. VBScript 1.1 VBScript a VB 1.2 Typy danych, zmienne 1.3 Tablice 1.4 Pętle 1.5 Operatory matematyczne i nierówności 1.6 Instrukcje warunkowe 1.7 Procedury, funkcje 1.8 Programowanie obiektowe 1.9 Podstawowe funkcje VBScript 2. ASP 2.1 Skrypty po stronie serwera 2.2 Wbudowane obiekty ASP 2.3 Plik global.asa 2.4 Składniki instalowane ASP
Agenda 3 Przykład wykorzystania obiektu Session 4. Techniki sterowania aplikacją 4.1 Przekierowanie 4.2 Przekazywanie 4.3 Wykonywanie 4.4 Wykonywanie składnika 4.5 Kończenie 4.6 Przetwarzanie proceduralne 5. Literatura
1.1 VBScript a VB VBScript jest podzbiorem Visual Basic Istotne różnice VBScript jest interpretowany VBScript nie może korzystać bezpośrednio z API Windows VBScript używa wyłącznie typu danych Variant VBScript posiada pewne różnice syntaktyczne
1.2 Typy danych, zmienne Jeden typ danych Variant reprezentujący wszystkie typy String, Integer, Boolean itd.. Tworzenie zmiennych Jawna deklaracja – użycie słowa kluczowego Dim, np.. Dim i Niejawna deklaracja – użycie nazwy zmiennej, np.. i=imie Option Explicit – wymuszenie jawnych deklaracji zmiennych Zasięg zmiennych Zmienne lokalne – deklarowane wewnątrz procedur i funkcji Zmienne globalne – deklarowane w skrypcie poza procedurami i funkcjami Problem typów przy automatycznym rzutowaniu i funkcje konwersji – 3 26 CInt – zmienna na liczbę Integer CStr – zmienna na łańcuch znaków CDbl – zmienna na wartość Double CLng – zmienna na wartość Long itd..
1.3 Tablice Deklaracje tablicy Dim Matrix(3) – deklaracja tablicy czteroelementowej, indeks zaczyna się od 0 Dim Matrix(3, 4) – deklaracja tablicy dwuwymiarowej (brak możliwości definicji indeksów jak w VB) Matrix = Array(5,10,15) Funkcje LBound i UBound LBound (tablica) – zwraca wartość najniższego indeksu tablicy UBound (tablica) – zwraca wartość najwyższego indeksu tablicy Zmiana rozmiarów tablicy Redim Matrix(2) Redim Preserve Matrix(2) – pozwala na zachowanie danych tablicy przy zmianie rozmiarów
1.4 Pętle For... Next For i = 1 to 10 a = b + i Next (Next i w VB) While... Wend While i <= 10 a = b + i Wend Do... Loop Do a = b + i Loop Until i > 10
1.5 Operatory matematyczne i nierówności Operatory matematyczne + dodawanie - odejmowanie * mnożenie / dzielenie ^ potęgowanie mod reszta z dzielenia Operatory nierówności <> różny < mniejszy > większy <= mniejszy lub równy >= większy lub równy
1.6 Intrukcje warunkowe If... Then If a = 3 then b = 5 If a = 3 then b = 5 c = 10 End If If... Then... Else If a = 3 Then b = 5 Else c = 10 End if If... Then... ElseIf... Else If a = 3 Then b = 5 ElseIf a = 2 Then b = 10 Else c = 10 End if Select Case Select Case tekst Case aaa: tekst2 = AAA Case bbb: tekst2 = BBB Case ccc: tekst2 = CCC Case Else: tekst2 = ??? End Select
1.7 Procedury i funkcje Procedury nie zwracające wyniku Sub Sub Nazwa(lista argumentów)... End Sub Przy wywoływaniu można używać słowa kluczowego Call w celu odróżnienia od użycia zmiennej Procedury zwracające wynik Function Function Nazwa(lista argumentów)... Nazwa = End Function
1.8 Programowanie obiektowe Tworzenie klasy Class NazwaKlasy End Class Zasięg publiczny i prywatny Public – właściwości i metody widoczne poza klasą Private – właściwości i metody nie widoczne poza klasą Metody właściwości Let – przypisywanie wartości do prywatnej danej składowej Property Let NazwaWlasciwosci (NowaWartosc) mPrywatnaDana = NowaWartosc End Property Get – pobieranie wartości prywatnej danej składowej Property Get NazwaWlasciwosci () NazwaWlasciwosci = mPrywatnaDana End Property Tworzenie obiektu set Obiekt = new Klasa Konstruktor klasy Class_Initialize()
1.9 Podstawowe funkcje VBScript Array – tworzy tablicę Asc – zwraca kod ASCI pierwszego znaku ciągu Chr – zwraca znak o podanym kodzie ASCI Day – dzien miesiąca Exp – oblicza wartość e Hex – szesnastkowa wartość wyrażenia Hour – godzina InStr – określa położenia jendego ciągu w drugim Int – całkowita część liczby Is(typ) (IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject) – wartość logiczna Lcase – ciąg znaków na małe litery Left – zwraca określoną liczbę znaków od lewej strony Len – zwraca długość ciągu Log – oblicza logarytm dziesiętny Ltrim – usuwa początkowe spacje z ciągu Mid – zwraca określoną liczbę znaków ze środka ciągu Minute – minuta Month – miesiąc 1..12
1.9 Podstawowe funkcje VBScript Now – zwraca aktualną godzinę i datę Replace – zastępuje fragment ciągu innym RGB – zwraca liczbę całkowitą reprezentującą kolor Right – zwraca określoną liczbę znaków od prawej strony Rnd – liczba losowa 0..1 Round – zaokrągla liczbę do podanej liczby miejsc po przecinku RTirm – usuwa końcowa spacje z ciągu Second – sekundy Space – zwraca ciąg znaków zawierający określoną liczbę spacji Split – rozbija ciąg na wyrazy do tablicy StrComp – porównuje ciągi String – zwraca ciąg składający się ze znaku powtórzonego określoną ilość razy Time – zwraca aktualny czas systemowy Trim – usuwa spacje początkowe i końcowe UCase – przekształca ciąg na duże znaki WeekDay – dzień tygodnia 1..7 WeekDayName – nazwa dnia tygodnia Year - rok
2.1 Skrypty po stronie serwera Skrypty wplatane Dzisiejsza data Znacznik oraz atrybut RUNAT=Server Dzisiejsza data Response.Write(Now())
2.2 Obiekt Application Obiekt Application może być używany do udostępniania informacji wszystkim użytkownikom danej aplikacji. Aplikacja oparta na środowisku ASP jest definiowana jako wszystkie pliki.asp w katalogu wirtualnym i w jego podkatalogach. Kolekcje Contents – zawiera wszystkie elementy, które zostały dodane do aplikacji za pomocą poleceń skryptu. StaticObjects – zawiera wszystkie obiekty dodane do sesji za pomocą tagu. Metody Contents.Remove(nazwa|indeks) – usuwa element z kolekcji Contents Contents.RemoveAll – usuwa wszystkie elementy z kolekcji Contents Lock - uniemożliwia innym klientom modyfikację właściwości obiektu Application. Unlock - umożliwia innym klientom modyfikację właściwości obiektu Application. Zdarzenia Application_OnStart – zdarzenie występuje jeszcze przed utworzeniem sesji Application_OnEnd – zdarzenie wystpuje podczas zamykania aplikacji
2.2 Obiekt ASPError Obiekt ASPError może być używany do uzyskania informacji na temat błędów, który wystąpił w skrypcie na stronie ASP. Obiekt ASPError jest zwracany przez metodę Server.GetLastError. Obiekt ma właściwości tylko do odczytu. Właściwości ASPCode - zwraca kod błędu generowany przez program IIS Number - zwraca standardowy kod błędu COM Source - jeśli jest dostępny, zwraca wiersz kodu źródłowego, który spowodował błąd Category - wskazuje, czy źródło błędu było wewnątrz ASP, czy był nim język skryptów, czy obiekt File - wskazuje nazwę pliku.asp, który był przetwarzany, kiedy wystąpił błąd Line - wskazuje wiersz w pliku.asp, który wygenerował błąd Column - wskazuje położenie kolumny w pliku.asp, który wygenerował błąd Description - zwraca krótki opis błędu ASPDescription - zwraca bardziej szczegółowy opis błędu, jeśli jest to błąd związany z programem ASP
2.2 ObjectContext Obiekt ObjectContext może być używany do zatwierdzania albo do przerywania transakcji, zarządzanej przez usługi składników, która została zainicjowana przez skrypt umieszczony na stronie ASP. Gdy skrypt zawiera dyrektywę strona działa w ramach transakcji Metody SetAbort – informacja, że transakcja się nie powiodła i powinna zostać wycofana SetComplete – informacja, że transakcja się powiodła i powinna zostać zatwierdzona Zdarzenia OnTransactionAbort – procedura zdarzenia wywoływana po wywołaniu metody SetAbort OnTransactionCommit – procedura zdarzenia wywoływana po wywołaniu metdoy SetComplete
2.2 Obiekt Request Obiekt Request pobiera wartości, które przeglądarka klienta przekazała do serwera w czasie żądania HTTP. Kolekcje ClientCertificate - wartości pól przechowywane w certyfikacie klienta, który jest przesyłany w żądaniu HTTP. Cookies(cookie)[(klucz)|.atrybut] - wartości plików cookie przesłane w żądaniu HTTP. Form(zmienna)[(indeks)|.Count] - wartości elementów formularza w zawartości żądania HTTP. QueryString(zmienna)[(indeks)|.Count] - wartości zmiennych w ciągu kwerendy HTTP. ServerVariables (zmienna_środowiskowa) - wartości wstępnie ustalonych zmiennych środowiska. Właściwości TotalBytes – całkowita liczba bajtów przesłana do serwera, tylko do odczytu Metody BinaryRead - stosuje się do pobierania danych bajtowych, gdy żądanie jest realizowane za pomocą metody Post
2.2 Obiekt Response Obiekt Response może być używany do wysyłania wyników do klienta. Kolekcje Cookies(cookie)[(klucz)|.atrybut] – ustawia wartość pliku Cookie Właściwości Buffer - wskazuje, czy wyniki strony są buforowane. CacheControl - ustala, czy serwery proxy są zdolne do buforowania wyników generowanych przez program ASP. Charset - dołącza nazwę zestawu znaków do nagłówka typu zawartości. ContentType - określa typ zawartości HTTP dla odpowiedzi. Expires - określa długość czasu przed wygaśnięciem strony buforowanej w przeglądarce. ExpiresAbsolute - określa datę i godzinę wygaśnięcia strony buforowanej w przeglądarce. IsClientConnected - wskazuje, czy klient rozłączył się z serwerem. Status - wartość wiersza stanu zwrócona przez serwer.
2.2 Obiekt Response Metody AddHeader - ustawia nazwę nagłówka HTML na wartość. AppendToLog - dodaje ciąg na końcu wpisu dziennika Web dla tego żądania. BinaryWrite - zapisuje dane informacje w bieżącym wyniku HTTP bez żadnej konwersji zestawu znaków. Clear - usuwa wszelkie buforowane wyniki HTML. End - zatrzymuje przetwarzanie pliku.asp i zwraca bieżący wynik. Flush - natychmiast wysyła buforowany wynik. Redirect - wysyła do przeglądarki komunikat o readresowaniu, co skłania ją do próby połączenia się z innym adresem URL. Write - zapisuje zmienną jako ciąg w bieżącym wyniku HTTP.
2.2 Obiekt Server Obiekt Server umożliwia dostęp do metod i właściwości na serwerze. W większości te metody i właściwości działają jako funkcje usługowe. Właściwości ScriptTimeout - limit czasu przetwarzania skryptu. Metody CreateObject - tworzy wystąpienie składnika serwera. Execute - wykonuje plik.asp. GetLastError - zwraca obiekt ASPError, który opisuje warunek błędu. HTMLEncode - stosuje kodowanie HTML do określonego ciągu bez znaczników HTML. MapPath - mapuje określoną ścieżkę wirtualną, albo ścieżkę bezwzględną na bieżącym serwerze albo ścieżkę względną w stosunku do bieżącej strony, na ścieżkę fizyczną. Transfer - wysyła wszystkie informacje bieżącego stanu do innego pliku.asp w celu przetworzenia. URLEncode - stosuje do ciągu zasady kodowania URL, włącznie ze znakami escape.
2.2 Obiekt Session Obiekt Session może być używany do przechowywania informacji potrzebnych do konkretnej sesji użytkownika. Zmienne przechowywane w obiekcie Session nie są usuwane, kiedy użytkownik przechodzi między stronami w aplikacji; zamiast tego te zmienne pozostają przez cały czas sesji użytkownika. Kolekcje Contents - zawiera elementy, które zostały dodane do sesji za pomocą poleceń skryptów. StaticObjects - zawiera obiekty utworzone za pomocą,mające zakres sesji. Właściwości CodePage - strona kodowa, która będzie używana do mapowania symboli. LCID - identyfikator regionalny. SessionID - zwraca identyfikację sesji dla tego użytkownika. TimeOut -limit czasu dla stanu sesji dla tej aplikacji, w minutach. Metody Abandon - niszczy obiekt Session i zwalnia jego zasoby. Contents.Remove - usuwa element z kolekcji Contents. Contents.RemoveAll - usuwa wszystkie elementy z kolekcji Contents. Zdarzenia Session_OnEnd – zdarzenie wywoływane przy zakończeniu sesji Session_OnStart – zdarzenie wywoływane przy tworzeniu sesji
2.3 Plik Global.asa Plik global.asa zawiera procedury wywoływane przy otwieraniu i zamykaniu sesji oraz aplikacji. Głównie wykorzystywane jest to do tworzenia i niszczenia obiektów oraz zmiennych używanych w ramach sesji bądź całej aplikacji. Sub Session_OnStart ' instrukcje wykonywane w momencie otwarcia sesji End Sub Sub Session_OnEnd ' instrukcje wykonywane w momencie zakończenia sesji End Sub Sub Application_OnStart ' instrukcje wykonywane w momencie otwarcia aplikacji End Sub Sub Application_OnEnd ' instrukcje wykonywane w momencie zakończenia aplikacji End Sub
2.4 Składniki instalowane ASP Ad Rotator – zmienia ogłoszenia w banerach Browser Capabilities – generuje raport na temat przeglądarki Content Linking – łączy strony WWW Content Rotator – zmienia ciągi znaków Counters – liczniki File System Object – umożliwia współprace z systemem plików Logging Utility – operacje na dzienniku aktywności IIS MyInfo – pozwala śledzić i modyfikować informacje administatorskie Page Counter – licznik otwarcia stron Permission Checker – pozwala sprawdzać uprawnienia dostępu do plików Status - posiada właściwości przechowujące informacje o stanie serwera Tools - dostarcza narzędzi umożliwiających, w prosty sposób, dodanie zaawansowanej funkcjonalności do stron sieci Web
3 Przykład wykorzystania obiektu Session Prosty przykład wykorzystania obiektu Session (przykład)przykład <% dim k if len(Request.Form("Wyczysc"))>0 then Session.Contents.RemoveAll if len(Request.Form("Klucz"))>0 then Session(Request.Form("Klucz"))=Request.Form("Wartosc") For Each k in Session.Contents Response.Write " Klucz " & k & " zawiera " & Session.Contents(k) Next Response.Write " " Response.Write " Klucz " Response.Write " Wartosc " %>
4 Techniki sterowania aplikacją Potrzeba zmiany kolejności wykonywania Przekierowanie Przekazywanie Wykonywanie Wykonywanie składnika Kończenie Przetwarzanie proceduralne
4.1 Przekierowanie Response.Redirect Wymaga większej komunikacji klienta i serwera, wymaga przesłania do serwera nowego żądania
4.2 Przekazywanie Server.Transfer Nie wymaga nowej inicjacji Może obejmować zewnętrzną stronę ASP w stosunku do aplikacji Zachowane wszystkie wbudowane obiekty ASP
4.3 Wykonywanie Server.Execute Wywołanie i powrót Zachowane wszystkie wbudowane obiekty ASP
4.4 Wywoływanie składnika Server.CreateObject Tworzenie obiektów COM
4.5 Kończenie Response.End Możliwość zakończenia przetwarzania skryptu gdy klient nie czeka na odpowiedź (metoda IsClientConnected)
4.6 Przetwarzanie proceduralne Podprogramy pisane zgodnie ze składnią skryptu
5. Literatura - MSDN Microsoft psdk/iisref/Acomp59f8.htm psdk/iisref/Acomp59f8.htm - dodatkowe informacje o komponentach ActiveX w IIS - język Jscript i VBScript /index.htm /index.htm - język JavaScript
Kontakt Piotr Kuźniacki Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, Gliwice, Polska Dziękuję za uwagę...