Spis Treści SPIS TREŚCI ........................................................................................................................................................ 1 ROZDZIAŁ 1. TWORZENIE DYNAMICZNYCH APLIKACJI INTERNETOWYCH ............................ 6 CZYM BYŁA SIEĆ WWW ..................................................................................................................................... 6 Specyfikacja HTML 2 ..................................................................................................................................... 7 Specyfikacja HTML 3.2 .................................................................................................................................. 8 Specyfikacja HTML 4 ..................................................................................................................................... 8 ZAWARTOŚĆ STATYCZNA A ZAWARTOŚĆ DYNAMICZNA ...................................................................................... 8 TWORZENIE SKRYPTÓW PO STRONIE KLIENTA I PO STRONIE SERWERA ............................................................... 10 Tworzenie skryptów po stronie klienta ......................................................................................................... 10 Tworzenie skryptów po stronie serwera ....................................................................................................... 14 SKŁADNIKI DYNAMICZNYCH ROZWIĄZAŃ INTERNETOWYCH ............................................................................. 17 Przejście przez stronę quizu ......................................................................................................................... 18 HTML ........................................................................................................................................................... 18 Składnik bazy danych ................................................................................................................................... 19 Komponenty serwera .................................................................................................................................... 22 Kod ASP (Active Server Page) ..................................................................................................................... 26 Współpraca z serwerem internetowym .................................................................................................... 28 NIE TYLKO IIS SYSTEMU NT ............................................................................................................................. 29 ROZDZIAŁ 2. SERWER IIS WIDZIANY Z PERSPEKTYWY TWÓRCY STRON ................................ 30 CZYM JEST IIS? ................................................................................................................................................. 30 OTRZYMYWANIE KOPII IIS ................................................................................................................................ 31 KONSOLA ZARZĄDZANIA MICROSOFTU ............................................................................................................. 31 WŁAŚCIWOŚCI USŁUG WWW ........................................................................................................................... 33 Właściwości witryny WWW .......................................................................................................................... 34 Właściwości związane z wydajnością ........................................................................................................... 36 Właściwości filtrów ISAPI ............................................................................................................................ 36 Właściwości katalogu macierzystego ........................................................................................................... 37 Dokumenty .................................................................................................................................................... 38 Błędy klienta ................................................................................................................................................. 39 WITRYNY WWW W SERWERZE IIS ................................................................................................................... 40 DODAWANIE WITRYNY WWW .......................................................................................................................... 42 WŁAŚCIWOŚCI WITRYNY WWW ....................................................................................................................... 45 Wiele witryn pod jednym adresem IP ........................................................................................................... 45 Zakładka właściwości witryny WWW ........................................................................................................... 47 Właściwości katalogu macierzystego ........................................................................................................... 48 EKSPLORACJA WITRYNY .................................................................................................................................... 48 Katalogi wirtualne ........................................................................................................................................ 49 Właściwości folderu i pliku .......................................................................................................................... 51 APLIKACJE ASP ................................................................................................................................................ 52 Zmienne trwałe i zakresowe ......................................................................................................................... 52 Zdarzenia ...................................................................................................................................................... 53 Tworzenie aplikacji ASP............................................................................................................................... 53 Konfigurowanie aplikacji ASP ..................................................................................................................... 55
Spis Treści
2
WITRYNY FTP ................................................................................................................................................... 57 ROZDZIAŁ 3. NARZĘDZIA PRACY ............................................................................................................. 60 PRZEGLĄD APLIKACJI DO TWORZENIA STRON .................................................................................................... 60 NOTATNIK ......................................................................................................................................................... 60 FRONTPAGE 2000 .............................................................................................................................................. 62 Środowisko pracy ......................................................................................................................................... 62 Tworzenie sieci Web ..................................................................................................................................... 68 Przeglądanie strony ...................................................................................................................................... 70 Dodawanie strony......................................................................................................................................... 71 Praca ze stroną ............................................................................................................................................. 72 NETOBJECTS FUSION ......................................................................................................................................... 74 Środowisko pracy ......................................................................................................................................... 74 Tworzenie witryny WWW przy użyciu programu Fusion ............................................................................. 80 Praca ze stroną ............................................................................................................................................. 80 NETOBJECTS SCRIPTBUILDER ........................................................................................................................... 81 Środowisko programowe .............................................................................................................................. 81 Praca z kodem w programie ScriptBuilder .................................................................................................. 87 Weryfikacja kodu w programie ScriptBuilder .............................................................................................. 92 MICROSOFT VISUAL INTERDEV 6.0 ................................................................................................................... 94 OSTATNIE SŁOWO O NARZĘDZIACH.................................................................................................................... 96 ROZDZIAŁ 4. PODSTAWY ASP .................................................................................................................... 97 KONSTRUKCJA KODU ASP................................................................................................................................. 97 Znacznik <% = X %> .................................................................................................................................. 97 <% Pojedyncza linia kodu %> .................................................................................................................... 98 <% Blok kodu %> ........................................................................................................................................ 99 < Script> Kod ........................................................................................................................... 100 HTML w kodzie........................................................................................................................................... 101 SKRYPT W SKRYPCIE ........................................................................................................................................ 103 Dyrektywa przetwarzania ........................................................................................................................... 105 Pliki Include................................................................................................................................................ 106 Po co ich używać .................................................................................................................................... 106 Włączanie pliku ...................................................................................................................................... 106 Plik Include — struktura i przykład ....................................................................................................... 106 Wywoływanie procedur.......................................................................................................................... 108 KOD ASP W UŻYCIU ........................................................................................................................................ 108 Komentarze, puste miejsca i wielkość liter................................................................................................. 108 Zmienne ...................................................................................................................................................... 111 Typy danych ................................................................................................................................................ 112 Zakres i trwałość ........................................................................................................................................ 113 Operatory ................................................................................................................................................... 114 Warunki ...................................................................................................................................................... 116 Pętle ............................................................................................................................................................ 121 Konwersja zmiennych ................................................................................................................................. 125 Funkcje daty i czasu ................................................................................................................................... 127 Zatwierdzanie obecności i typów danych ................................................................................................... 131 Techniki zatwierdzania danych .................................................................................................................. 133 Formatowanie liczb, dat i kwot pieniężnych .............................................................................................. 135 Operowanie ciągami .................................................................................................................................. 139 Liczby losowe.............................................................................................................................................. 145 Procedury ................................................................................................................................................... 146 ROZDZIAŁ 5. OBIEKT REQUEST .............................................................................................................. 148 HIERARCHIA I MODELE OBIEKTÓW ASP .......................................................................................................... 148
3
ASP – Kompendium programisty
Czym są hierarchie obiektów?.................................................................................................................... 148 Model obiektów ASP................................................................................................................................... 149 ODBIERANIE INFORMACJI OD ODWIEDZAJĄCEGO ............................................................................................. 151 Zbiory obiektu Request ............................................................................................................................... 151 Zbiór Form.............................................................................................................................................. 151 Zbiór QueryString .................................................................................................................................. 154 Zbiór ServerVariables ............................................................................................................................ 157 Zbiór Cookies ......................................................................................................................................... 159 Zbiór ClientCertificate............................................................................................................................ 160 WŁAŚCIWOŚĆ OBIEKTU REQUEST .................................................................................................................... 161 Właściwość TotalBytes ............................................................................................................................... 161 METODA OBIEKTU REQUEST............................................................................................................................ 162 Metoda BinaryRead .................................................................................................................................... 162 OBIEKT REQUEST W DZIAŁANIU ...................................................................................................................... 163 Przykład certyfikatu klienta ........................................................................................................................ 163 Procesor e-mail dla formularza ................................................................................................................. 168 Procesor bazy danych dla formularza ........................................................................................................ 172 Witryna logowania ..................................................................................................................................... 174 ROZDZIAŁ 6. OBIEKT RESPONSE ............................................................................................................ 180 WYSYŁANIE INFORMACJI DO GOŚCI ................................................................................................................. 180 ZBIÓR OBIEKTU RESPONSE .............................................................................................................................. 180 Zbiór cookie ................................................................................................................................................ 181 WŁAŚCIWOŚCI OBIEKTU RESPONSE ................................................................................................................. 184 Właściwość Buffer ...................................................................................................................................... 184 Właściwość CacheControl.......................................................................................................................... 186 Właściwość Charset.................................................................................................................................... 186 Właściwość ContentType ............................................................................................................................ 186 Właściwość Expires .................................................................................................................................... 187 Właściwość ExpiresAbsolute ...................................................................................................................... 188 Właściwość IsClientConnected .................................................................................................................. 190 Właściwość PICS ........................................................................................................................................ 191 Właściwość Status ...................................................................................................................................... 192 METODY OBIEKTU RESPONSE .......................................................................................................................... 192 Metoda AddHeader .................................................................................................................................... 193 Metoda AppendToLog ................................................................................................................................ 193 Metoda BinaryWrite ................................................................................................................................... 193 Metoda Clear .............................................................................................................................................. 196 Metoda End ................................................................................................................................................ 196 Metoda Flush .............................................................................................................................................. 197 Metoda Redirect ......................................................................................................................................... 198 Metoda Write .............................................................................................................................................. 199 OBIEKT RESPONSE W DZIAŁANIU ..................................................................................................................... 199 Readresowanie i obiekt wyboru.................................................................................................................. 199 Pasek zaawansowania ................................................................................................................................ 203 Strona preferencji ....................................................................................................................................... 207 ROZDZIAŁ 7. OBIEKT SERVER ................................................................................................................. 212 WEJŚCIE NA SZCZYT ........................................................................................................................................ 212 WŁAŚCIWOŚĆ OBIEKTU SERVER ...................................................................................................................... 212 Właściwość ScriptTimeout.......................................................................................................................... 213 METODY OBIEKTU SERVER .............................................................................................................................. 214 Metoda CreateObject ................................................................................................................................. 215 Metoda HTMLEncode ................................................................................................................................ 218 Metoda MapPath ........................................................................................................................................ 219
Spis Treści
4
Metoda URLEncode ................................................................................................................................... 221 OBIEKT SERVER W DZIAŁANIU ........................................................................................................................ 222 Automatyzacja biura ................................................................................................................................... 222 ROZDZIAŁ 8. OBIEKT SESSION, OBIEKT APPLICATION ORAZ PLIK GLOBAL.ASA ............... 232 APLIKACJE ASP .............................................................................................................................................. 232 TWORZENIE APLIKACJI ASP ............................................................................................................................ 233 OBIEKT SESSION .............................................................................................................................................. 235 Zbiory obiektu Session ................................................................................................................................ 235 Zbiór Contents ........................................................................................................................................ 235 Zbiór StaticObjects ................................................................................................................................. 239 Właściwości obiektu Session ...................................................................................................................... 240 Właściwość CodePage............................................................................................................................ 241 Właściwość LCID .................................................................................................................................. 242 Właściwość SessionID ........................................................................................................................... 244 Właściwość TimeOut ............................................................................................................................. 244 Metoda obiektu Session .............................................................................................................................. 245 Metoda Abandon .................................................................................................................................... 245 OBIEKT APPLICATION ...................................................................................................................................... 246 Zbiory obiektu Application ......................................................................................................................... 246 Zbiór Contents ........................................................................................................................................ 246 Zbiór StaticObjects ................................................................................................................................. 250 Metody obiektu Application ........................................................................................................................ 251 Metoda Lock ........................................................................................................................................... 251 Metoda Unlock ....................................................................................................................................... 253 PLIK GLOBAL.ASA............................................................................................................................................ 253 Zdarzenia pliku global.asa ......................................................................................................................... 255 Zdarzenie Application_OnStart .............................................................................................................. 255 Zdarzenie Application_OnEnd ............................................................................................................... 259 Zdarzenie Session_OnStart .................................................................................................................... 259 Zdarzenie Session_OnEnd...................................................................................................................... 261 Deklaracje obiektów w pliku global.asa ................................................................................................. 263 APLIKACJE ASP W UŻYCIU .............................................................................................................................. 263 ROZDZIAŁ 9. OBIEKTY CDO DLA WINDOWS NT SERVER .............................................................. 266 UZUPEŁNIENIE STRONY ASP O FUNKCJĘ WYSYŁANIA WIADOMOŚCI E-MAIL.................................................... 266 OBIEKT NEWMAIL .......................................................................................................................................... 267 Właściwości obiektu NewMail .................................................................................................................... 268 Właściwość To ....................................................................................................................................... 268 Właściwość From ................................................................................................................................... 269 Właściwość Subject ................................................................................................................................ 270 Właściwość Body ................................................................................................................................... 270 Właściwość CC ...................................................................................................................................... 273 Właściwość BCC .................................................................................................................................... 273 Właściwość Importance.......................................................................................................................... 274 Właściwości BodyFormat i MailFormat ................................................................................................ 275 Właściwości ContentBase i ContentLocation ........................................................................................ 278 Właściwość Value .................................................................................................................................. 279 Właściwość Version ............................................................................................................................... 280 Metody obiektu NewMail ............................................................................................................................ 281 Metoda Send ........................................................................................................................................... 281 Metoda AttachFile .................................................................................................................................. 282 Metoda AttachURL ................................................................................................................................ 284 Metoda SetLocaleID ............................................................................................................................... 285 OBIEKT NEWMAIL W DZIAŁANIU .................................................................................................................... 285
5
ASP – Kompendium programisty
ROZDZIAŁ 10. SKŁADNIKI ASP ................................................................................................................ 287 OBIEKTY ZWIĘKSZAJĄCE MOŻLIWOŚCI STRON ASP ......................................................................................... 287 SKŁADNIK BROWSER CAPABILITIES ................................................................................................................ 287 Modyfikacja pliku browser.ini .................................................................................................................... 295 SKŁADNIK AD ROTATOR ................................................................................................................................. 296 SKŁADNIK PAGE COUNTER.............................................................................................................................. 303 SKŁADNIK COUNTERS ..................................................................................................................................... 311 SKŁADNIK CONTENT LINKING ......................................................................................................................... 316 SKŁADNIK CONTENT ROTATOR ....................................................................................................................... 324 SKŁADNIK MYINFO ......................................................................................................................................... 328
Rozdział 1. Tworzenie dynamicznych aplikacji internetowych Czym była sieć WWW Przez minione lata Internet niesamowicie wpłynął na nasze życie. Światowa sieć jest teraz potężnym zlepkiem informacji. Obecnie kiedy chcemy poznać adres firmy lub nawet jej lokalizację, sprawdzamy to w Internecie. Chcesz wiedzieć jaka sztuka jest wystawiana w miejscowym teatrze? Sprawdź w Internecie. Musisz poznać ceny jakiegoś produktu? Zobacz w sieci WWW. Szukasz pracy w Des Moines? Znajdziesz ją na sieci. Ale sieć WWW nie była tak nasycona informacjami od samego początku. Podstawowym przeznaczeniem Internetu była wymiana informacji pomiędzy badaczami naukowymi. Stworzenie języka HTML (HyperText Markup Language) było podyktowane koniecznością znalezienia powszechnej formy prezentowania informacji na różnorodnych platformach i systemach operacyjnych. Komputery używane do przeglądania stron HTML miały zainstalowane programy klienckie oraz przeglądarki, które odczytywały i interpretowały kod HTML, a następnie przedstawiały jego interpretację osobie oglądającej stronę. Te podstawowe przeznaczenie pozostało siłą Internetu, choć drastycznie zmieniły się sposoby prezentowania informacji. Wczesna wersja strony WWW wyglądała podobnie jak ta pokazana na rysunku 1.1.
Rysunek 1.1. Pierwotna wersja HTML
7
ASP – Kompendium programisty
Zauważ, że pierwsza wersja HTML zawierała jedynie podstawowe informacje, jak również miała możliwość odsyłania do innych dokumentów. Już wczesna wersja posiadała zdolność zignorowania tych znaczników, których nie potrafiła zrozumieć. Jest to w dalszym ciągu znacząca cecha HTML, z której twórcy stron korzystają przez cały czas. Ale w tej wersji z roku 1992 nie było możliwości prezentowania informacji graficznych, takich jak obrazy, tabele czy obiekty. Zauważ również, że nie było wtedy sposobu na uzyskanie informacji od osoby przeglądającej stronę WWW.
Specyfikacja HTML 2 Kolejna wersja HTML zawierała wspaniałe ulepszenia. Rysunek 1.2. pokazuje niektóre elementy, które mogła zawierać wersja 2 specyfikacji HTML.
Rysunek 1.2. Przykładowa strona stworzona przy wykorzystaniu HTML 2 Prawdopodobnie najważniejszymi nowymi składnikami HTML 2 były znaczniki tabeli, obrazu i formularza. Znacznik tablicy po raz pierwszy pozwolił na wyświetlenie informacji w postaci tabeli. Było to jednak jego pierwotne przeznaczenie. Szybko stał się spełnieniem marzeń tych twórców stron WWW, którzy potrzebowali lepszego rozmieszczenia elementów na stronie. Teraz twórcy stron często używają znaczników tabeli do precyzyjnego rozłożenia pozycji na stronie WWW. Znacznik obrazu pozwalał twórcom na dekorowanie swych stron. Mogli umieszczać na nich logo firmy, zdjęcia pracowników oraz zdjęcia okolicznościowe. Grafika również mogła być wykorzystywana do dekoracji układu strony. Dodatkowo używano małych, niewidocznych obrazków przy pomocy których rozmieszczano inne elementy strony WWW. Na przykład niektórzy twórcy stron używali pustych obrazków o określonym rozmiarze do zaznaczenia akapitu. Specyfikacja HTML 2 dodatkowo została wzbogacona w formularze. Przed użyciem formularzy kontakt z odwiedzającymi stronę był bardzo ograniczony. Dzięki formularzom i ich standardowym elementom możliwe stało się gromadzenie informacji o gościach pozwalających na udostępnianie im właściwej strony, gromadzenie informacji osobistych oraz dodawanie gości do listy dystrybucyjnej lub wielu innych aplikacji. Zawartość formularzy była udostępniana programom CGI (CGI — Common Gateway Interface) do przetwarzania w postaci strumienia bajtów. Programy CGI, zwykle pisane w PERL lub C, mogły dokonać analizy składniowej danych w strumieniu, przetwarzać je, aby później zwrócić wyjściowe informacje przeglądarce.
Specyfikacja HTML 3.2 Kolejną znaczącą wersją HTML wydaną przez W3C Consortium była wersja 3.2, która już w niewielkim stopniu różniła się od tego, czym HTML jest dzisiaj. Do istniejących znaczników dodano liczne parametry i unowocześnienia, jak również wprowadzono nowe znaczniki, z których najważniejszym był znacznik apletu. Znacznik apletu pozwalał twórcom na włączenie aplikacji Javy wprost do ich stron WWW. Takie dodatki jak aplety Javy mogły być pełnymi aplikacjami realizującymi różnorakie zadania. Mogłeś stworzyć przy ich użyciu wysuwane obrazki, które odsyłały gości do różnych miejsc, kiedy kliknęli jeden z nich. Mogłeś mieć aplet Javy prezentujący uaktualnione dane na temat cen produktów. Mogłeś napisać applet Javy będący programem do rysowania dla dzieci. Liczba aplikacji, dla których znacznik ten był wykorzystywany była wielka, co spowodowało znaczny rozrost sieci WWW.
Specyfikacja HTML 4 HTML 4 jest bieżącą wersją wydaną przez W3C Consortium. Znaczącymi dodatkami tej specyfikacji są znaczniki obiektu, skryptu oraz formularza stylów. Znacznik formularza stylów pozwala na tworzenie wspólnych stylów dla elementów strony WWW. Kiedy styl zostaje zdefiniowany, może zostać przeniesiony na inną stronę. Pozwala to na przykład na jednorazowe zdefiniowanie koloru, rozmiaru i czcionki nagłówka. Następnie ten styl może zostać zastosowany na wielu innych stronach. Jeśli konieczna jest zmiana stylu nagłówka, należy jej dokonać tylko w jednym miejscu, w definicji elementu, a zmiana ta zostanie przeniesiona na inne strony korzystające z tego znacznika. Znacznik skryptu pozwala na włączenie kodów zwanych skryptami po stronie klienta (client-side scripts). Oznacza to, że w HTML wbudowano kod, który jest uruchamiany przez przeglądarkę zainstalowaną na komputerze klienta. Przyjrzymy się skryptom po stronie klienta nieco dalej w tym rozdziale, podczas omawiania zalet i wad tego rodzaju tworzenia skryptów. Kolejnym znaczącym ulepszeniem w tej wersji jest włączenie do niej znacznika obiektu, który dostarcza mechanizmów pozwalających na umieszczenie multimediów i innych obiektów w granicach strony WWW. Na przykład znacznik obiektu może być wykorzystany podczas odwiedzania witryny grupy dyskusyjnej w celu stworzenia na twoim komputerze potokowego wejścia audio-wideo, jak również można go użyć przy przeglądaniu trójwymiarowego elementu zamieszczonego na stronie i możliwego do obejrzenia po zainstalowaniu odpowiedniego plug-inu w przeglądarce.
Zawartość statyczna a zawartość dynamiczna Wcześniej większość zawartości Internetu stanowiły składniki statyczne, to znaczy, że odwiedzając jakąś stronę WWW za każdym razem mogłeś spodziewać się dokładnie tej samej treści. Te same teksty, grafiki, formatowanie, po prostu wszystko. Aby zmienić zawartość strony twórca musiał ręcznie modyfikować tekst strony i ponownie umieszczać ją w Internecie. Wykorzystywanie tej techniki powodowało, że sieć WWW była nieco skostniała. Użytkownicy sieci mogli odwiedzić twoją stronę raz lub dwa, lecz jeśli jej treść nie zmieniała się, prawdopodobnie kolejne odwiedziny były wymuszone. W ostatnich latach twórcy stron zdali sobie sprawę z tego, że statyczna zawartość to trochę za mało. Coraz więcej firm zaczęło wystawiać zawartość dynamiczną przynajmniej w części swoich witryn WWW. Obecnie znalezienie dużej witryny, która nie zawiera jakiegoś składnika dynamicznego to wydarzenie naprawdę niezwykłe. Dynamiczna zawartość WWW to pojęcie odnoszące się do stron, których treść zmienia się przez cały czas. Na przykład strona pokazana na rysunku 1.3. ukazuje jedno z ustawień strony, kiedy aktualny dzień przypada na weekend, zaś kiedy aktualny dzień tygodnia to poniedziałek, wtorek, środa, czwartek lub piątek, wtedy strona wyświetli zawartość pokazaną na rysunku 1.4.
ASP – Kompendium programisty
9
Rysunek 1.3. Próbna strona o zawartości wyświetlanej w czasie weekendów
Rysunek 1.4. Ta sama próbna strona pokazująca zawartość wyświetlaną w tygodniu Jak widzisz zawartość strony z rysunku 1.4. jest dynamiczna. Jej treść może się zmieniać przez cały czas. Zmiana może następować po każdorazowym przeglądnięciu strony lub w losowych bądź stałych odstępach czasowych. Te zmiany to znacząca kwestia. Tworzenie takich dynamicznych aplikacji internetowych to główny temat tej książki. Kod wymagany podczas tworzenia zawartości dynamicznej może być zaimplementowany przez rozmaite mechanizmy. Kod poprzedniego przykładu był stworzony w VBScript na stronie ASP. Pokazany został poniżej. <% if weekday(Date) = 7 or weekday(Date) = 1 then %>
Nie przejmuj się tym, jeśli nie potrafisz przeczytać tego kodu teraz; szczegóły poznamy w kolejnych rozdziałach książki. Jednak powyższy kod nie musiał być napisany wykorzystując ASP przy użyciu VBScript. Mógł być zaimplementowany przez składnik napisany w C++ lub przez biblioteki filtrujące wyszukujące strony z określonymi rozszerzeniami i przetwarzające je odpowiednio. Mógł być również napisany w JavaScript. W następnym podrozdziale zobaczysz, że kod może zostać napisany zarówno po stronie klienta, jak i po stronie serwera.
Tworzenie skryptów po stronie klienta i po stronie serwera Tworzenie skryptów po stronie klienta Tworzenie skryptów w tym kontekście to pojęcie odnoszące się do miejsca, w którym kod jest przetwarzany. Tworzenie skryptów po stronie klienta oznacza, że kod jest uruchamiany na komputerze klienta (bezpośrednio w przeglądarce). Kiedy odwiedzający chce przeglądnąć stronę, HTML i każdy inny kod strony jest pobierany przez przeglądarkę odwiedzającego. Następnie przeglądarka dokonuje analizy składniowej i realizuje każdy rozpoznany kod strony. Rezultaty tych czynności przeglądarka pokazuje odwiedzającemu stronę. Przykładem może być tutaj grafika pokazana na rysunku 1.5. o treści „Welcome to NetStats2000 — NetStats Live”.
Rysunek 1.5. Przykładowa grafika zrealizowana po stronie klienta. Teraz spójrz na tą samą stronę, kiedy kursor myszy znajduje się ponad wspomnianą grafiką, jak pokazano na rysunku 1.6. Zauważ, że teraz treść grafiki brzmi „Click here to contact us”. Jest to realizowane przez kod po
ASP – Kompendium programisty
11
stronie klienta. Przeglądarka wczytuje każdy kod i przetwarza go. W tym przykładzie kod napisany został w JavaScript i przedstawia się następująco:
Zauważ, że kod jest otoczony znacznikami skryptu, które informują przeglądarkę o typie zastosowanego kodu. Jednak bardzo ważną okolicznością jest fakt, że nie wszystkie przeglądarki rozpoznają dany kod. Wobec tego co się stanie, kiedy przeglądarka, która nie rozpoznaje znacznika skryptu, próbuje dokonać analizy składniowej strony? Cały blok zostanie zignorowany, ponieważ nie rozpoznane znaczniki są pomijane. W tym przykładzie nie ma to znaczenia. Jeśli goście nie zobaczą naszej palety— grafiki pojawiającej się podczas przesuwania kursorem myszy nad obrazkiem — nie zmieni to rzeczywistej funkcjonalności strony. Spójrzmy jednak na kolejny przykład, w którym pominięcie bloku może nie być takie proste (Rysunek 1.7).
Rysunek 1.7. Przykładowy skrypt strony klienta używający pola zatwierdzenia W tym przykładowym skrypcie strony klienta korzystamy z kodu zatwierdzającego wejście użytkownika, zanim odwiedzający będzie mógł wystawić żądanie dostępu. Jeśli użytkownik zostawi to pole nie wypełnione, ujrzy wiadomość pokazaną na rysunku 1.8.
Rysunek 1.8. Wiadomość, która ukaże się tym odwiedzającym stronę, którzy nie wypełnią przedłożonego pola zatwierdzenia Gdy odwiedzający wpisze w pole wartość, jest ona zatwierdzana, a użytkownik zostaje odesłany do strony odpowiadającej tej wartości. Kod realizujący zatwierdzanie jest następujący:
Kod dla przycisku Submit Request:
Pamiętaj co się stanie, kiedy przeglądarka nie rozpozna znacznika skryptu lub języka użytego w skrypcie. Cały kod znajdujący się pomiędzy znacznikami skryptu zostanie zignorowany, tak więc strona stanie się bezużyteczna dla przeglądarek, które nie obsługują tych skryptów. Odwiedzający zobaczy stronę, ale po naciśnięciu przycisku Submit Request nic się nie stanie. Jest to ryzyko, które musisz rozważyć. Oczywiście tworzenie skryptów po stronie klienta ma swoje korzyści. Ponieważ przetwarzanie odbywa się po stronie klienta, twój serwer ma mniej pracy, mniejsza liczba przywołań redukuje ruch w sieci, a odwiedzający stronę nie musi czekać na dodatkowe wywołania twojej przeglądarki. Istnieje również pewne niebezpieczeństwo. Cały twój kod jest ujawniany gościom strony, jeśli więc zechcą oni poznać kod źródłowy strony przy pomocy menu opcji swojej przeglądarki, ujrzą każdy jego wiersz.
Tworzenie skryptów po stronie serwera Głównym tematem tej książki jest tworzenie skryptów po stronie serwera. Ponownie będziemy zajmować się miejscem uruchamiania kodu. Podczas pisania skryptów po stronie klienta kod uruchamiany jest przez przeglądarkę zainstalowaną na komputerze odwiedzającego stronę. Podczas tworzenia skryptów po stronie serwera kod, zanim zostanie wysłany do przeglądarki gościa, przetwarzany jest najpierw na serwerze. Użytkownicy uzyskują dostęp do strony WWW przez wpisanie jej nazwy w oknie przeglądarki lub klikając odpowiednie łącze. Serwer internetowy otrzymuje żądanie dostępu, a następnie wyszukuje stronę. Każdy kod strony serwera jest wtedy przetwarzany, a strona WWW może zostać zwrócona w czystej postaci HTML. Przeglądarka dokonuje analizuje składniowej podstawowego języka HTML i prezentuje jej rezultat odwiedzającemu. W ten sposób tworzenie skryptów po stronie serwera nie wymaga od przeglądarki specjalnych możliwości. Nie musi ona wiedzieć jak przeczytać dany rodzaj skryptu, ponieważ przetwarzanie odbywa się na serwerze, który zwraca jedynie podstawową postać HTML. Chroniony jest również twój kod. Często zdarza się, że nie chcesz udostępniać całemu światu twojego kodu źródłowego. Kod może być prawnie zastrzeżony dla twojej firmy lub może zawierać ukryte informacje systemowe, które nie powinny być dostępne dla osób postronnych. Tworzenie skryptów po stronie serwera rozwiązuje ten problem dzięki zwracaniu nie samego kodu, lecz jedynie rezultatu wykonania kodu. Jeśli więc użytkownik żąda dostępu do strony, która zawiera kod logowania do bazy danych, nie musisz mu pokazywać schematu działania twoich zapytań, nazw pól, techniki zatwierdzania, itd. Przy przetwarzaniu po stronie serwera, odwiedzający stronę poznaje jedynie wynik działania kodu. Spójrzmy na kilka przykładów wykorzystania skryptu strony serwera. Strona pokazana na rysunku 1.9. zawiera standardowy formularz logowania firmy. Zatwierdza ona wejście użytkownika na fikcyjną stronę WWW. Strona pozwala gościom na wprowadzenie nazwy użytkownika oraz hasła. Jeśli wprowadzą niewłaściwe hasło, ujrzą stronę, którą prezentuje rysunek 1.10.
Rysunek 1.9. Pierwszy widok strony logowania
ASP – Kompendium programisty
15
Rysunek 1.10. Przykładowa witryna logowania wyświetlająca wiadomość o próbie niewłaściwego wejścia Odwiedzający otrzymują wiadomość o tym, że wprowadzona informacja nie została rozpoznana. Jeśli wprowadzą wartość poprawną, wyświetli się strona pokazana na rysunku 1.11.
Rysunek 1.11. Tekst widoczny na stronie logowania po udanym wejściu. Strona logowania jest implementowana jako pojedyncza strona ASP. Poniżej pokazano jej kod. Również w tym przypadku nie musisz przejmować się tym, że nie rozumiesz jeszcze wszystkich jego szczegółów — po prostu przeczytaj go pobieżnie. Później omówimy tego typu kody dość obszernie. <%@ Language=VBScript %> <%
if not isempty(Request.Form("LogIn")) then set conn = server.createobject ("adodb.connection") conn.open "ASPBook", "sa", "yourpassword" set RSUser = conn.Execute("select UserName from C1Login " _ & "where UserName = '" & Request.Form("UserName") _ & "' and Password = '" & Request.Form("Password") _ & "'") if RSUser.EOF then TheMessage = "You have entered an incorrect login. " _ & "Please try again." else TheMessage = "You are now logged in!" end if else TheMessage = "Please enter your user name and password below." end if %>
Po pierwsze kod sprawdza, czy naciśnięty został przycisk Log On. Jeśli tak, kod zweryfikuje nazwę użytkownika i jego hasło z rekordami bazy danych. Jeśli taki zapis istnieje oznacza to, że użytkownik wprowadził właściwe wartości i ukaże się odpowiednia wiadomość. Gdyby rekord nie został odnaleziony, wyświetlona zostałaby inna wiadomość mówiąca o niepoprawnym wejściu. Ostatnia wiadomość zawiera treść, jaką pierwotnie zawierała strona. Pomyśl o tym, co by się stało, gdybyś próbował to zaimplementować po stronie klienta. Po pierwsze mogłoby to działać jedynie pod ostatnimi wersjami Internet Explorer, ponieważ kod został zapisany w VBScript. Kolejnym problemem mógłby być fakt ujawnienia hasła bazy danych w kodzie źródłowym podczas wysyłania go do przeglądarki. Przy korzystaniu ze skryptu po stronie serwera nie mamy takich zmartwień. Kod zostanie przetworzony przez serwer i żaden z bloków kodu nie będzie widoczny dla odwiedzających; dodatkowo nie musimy martwić się o to, z jakiej przeglądarki oni korzystają, ponieważ przeglądarka otrzymuje jedynie wynik w postaci HTML. Kolejną dużą zaletą tworzenia skryptów po stronie serwera jest możliwość korzystania przez serwer ze składników, które mogą być nieosiągalne na komputerze klienta. Przykładowo załóżmy, że chcę na mojej stronie WWW stworzyć kalkulator obliczający kwotę spłaty pożyczki. Mógłby on wyglądać tak, jak to pokazuje rysunek 1.12.
17
ASP – Kompendium programisty
Rysunek 1.12. Przykładowa strona kalkulatora obliczającego kwotę spłaty pożyczki Odwiedzający stronę wpisywaliby potrzebne do obliczeń dane. Po naciśnięciu przycisku Calculate kodowaliby obliczenie kwoty spłaty na podstawie wprowadzonych parametrów. Jak widzieliśmy, istnieje wiele możliwości wyboru miejsca ulokowania tego kodu oraz sposobu jego implementacji. Teraz już wiesz, że kod jest lepiej chroniony przed nielegalnym skopiowaniem przez innego twórcę stron, jeśli piszesz skrypty po stronie serwera. Wiesz, że nie musisz martwić się o to, czy przeglądarka będzie w stanie właściwie zinterpretować napisany przez ciebie kod. Ale ponadto jeszcze trzecia korzyść płynie z tej formy tworzenia skryptów. Jeśli kiedykolwiek próbowałeś tworzyć od zera kalkulator obliczający kwotę spłaty pożyczki to wiesz, że to żmudna i narażona na wiele błędów praca. Dlaczego nie skorzystać ze składników (komponentów) znajdujących się na twoim serwerze, które wykonują obliczenia dla ciebie? Na przykład Microsoft Excel potrafi wykonywać wiele obliczeń finansowych. Możesz wykorzystać te komponenty w skrypcie po stronie serwera i uniknąć w ten sposób powielania kodu, który już posiadasz. Tak więc tworząc skrypty po stronie serwera możesz wykorzystać funkcje składników serwera na potrzeby aplikacji nie martwiąc się o to, czy odwiedzający stronę posiadają odpowiednie składniki na swoich komputerach.
Składniki dynamicznych rozwiązań internetowych Do tej pory zastanawialiśmy się co decyduje o tym, że strona WWW jest statyczna lub dynamiczna. Przyjrzeliśmy się różnym sposobom tworzenia stron dynamicznych, jak również ich wadom i zaletom. W tym podrozdziale zwrócimy uwagę na różnorodne składniki tworzące dynamiczne rozwiązania i sposoby ich współdziałania. Rozwiązanie dynamiczne może zawierać rozmaite składniki. Po pierwsze, HTML. Nawet najbardziej dynamiczna strona posiada jakiś statyczny składnik HTML wiążący ze sobą elementy dynamiczne. Często dynamiczna strona lub witryna zawiera bazę danych, której treść jest również dynamiczna. Bardziej zaawansowane rozwiązania łączą w sobie wszystkie składniki, które znajdują się na serwerze. Niejednokrotnie elementy te zawierają przepisy firmowe i pośredniczą między bazą danych a częściami dynamicznymi strony WWW. Mogą posiadać również jakiś rodzaj kodu, który wstawia w stronę treść dynamiczną, jak to jest w przypadku kodu ASP. Zwykle też rozwiązania dynamiczne będą wykorzystywały jakiś serwer WWW, na przykład internetowy serwer informacyjny, w celu odebrania żądania od przeglądarki, przetworzenia kodu na stronie i zwrócenia rezultatu.
Przejście przez stronę quizu Aby zademonstrować jak funkcjonuje każdy ze składników rozwiązania dynamicznego, na kilku kolejnych stronach zaprezentowano przykładowy quiz. Używa on języka HTML dla statycznych elementów strony. Korzysta z bazy danych w celu zapamiętywania pytań i odpowiedzi. Składnik Visual Basic realizuje wezwania bazy danych pozwalające na wyszukiwanie pytań i sprawdzanie poprawności odpowiedzi. Strona quizu implementowana jest jako strona ASP i zawiera kod dynamicznego wyświetlania w oparciu o aktualne pytania; znajduje się ona na internetowym serwerze informacyjnym, który przetwarza kod i zwraca jego wynik przeglądarce. Quiz wykonany jest jako pojedyncza strona WWW. Kiedy użytkownicy odwiedzą ją po raz pierwszy, ujrzą widok przedstawiony na rysunku 1.13. Kiedy rozpoczną quiz, zobaczą pytanie pierwsze. Wybiorą odpowiedź, którą uważają za prawidłową i nacisną przycisk Check Answer. Wtedy ukaże się strona pokazana na rysunku 1.14. Proces ten powtarza się dopóki użytkownicy nie odpowiedzą na ostatnie pytanie quizu, po którym ukaże się im strona przedstawiona na rysunku 1.15. Rysunek 1.13. Pierwsza strona quizu Rysunek 1.14. Drugie pytanie quizu Rysunek 1.15. Ostatnia strona quizu Zauważ, że po zakończeniu quizu odwiedzający stronę nie mają żadnych dodatkowych pytań ani nie widać już przycisku odpowiedzi na pytanie. Jak dowiesz się z dalszego omówienia, kod ASP steruje tym wyjściem na stronie.
HTML W tym dynamicznym środowisku internetowym, HTML jest połączeniem dowolnego statycznego składnika pierwotnego żądania oraz wyjścia kodu uruchamianego na serwerze. Kiedy więc odwiedzający stronę poproszą o pierwsze pytanie quizu, otrzymają w odpowiedzi sam HTML. Przykładowo, chociaż pytania quizu są elementem dynamicznym, opartym na aktualnym żądaniu pytania, wyjściowym elementem jest następujący kod HTML:
With this type of scripting, the code runs in the browser.
Lista rozwijana obiektu sterującego wyborem zawiera możliwe odpowiedzi na zadane pytania, a jeśli odwiedzający zdecyduje się na obejrzenie kodu źródłowego strony, może przykładowo zobaczyć:
Faktycznie z punktu widzenia odwiedzającego, ta pojedyncza witryna zdaje się być czterema osobnymi stronami: po jednej na każde pytanie plus jedna końcowa. HTML w tym przykładzie obejmuje też formularz, który jest zgrupowaniem elementów HTML takich jak pola tekstowe (również niesformatowane, zwane Textarea), obiekty sterujące wyborem, przyciski opcji oraz pola sprawdzające. W naszym przykładzie formularz jest pojedynczym obiektem sterującym wyborem, który zawiera zbiór możliwych odpowiedzi na pytania. Ale formularz posiada również wiele innych obiektów sterujących, które zawierają ukryte wartości. Elementy ukryte niosą w sobie wartości, które chcesz przedłożyć wraz z
ASP – Kompendium programisty
19
formularzem, ale nie chcesz, aby były one widoczne dla odwiedzających stronę. W kolejnej stronie przykładu użyte zostały trzy ukryte elementy.
Pierwszy ukryty element zawiera numer bieżącego pytania. Potrzebujemy tej wartości w celu sprawdzenia, czy odwiedzający wybrał właściwą odpowiedź na to pytanie. Element ukryty Question zapamiętuje liczbę pytań, na które odpowiedział gość. Wartość NumberCorrect informuje o liczbie poprawnych odpowiedzi. Te trzy ukryte wartości oraz wartość obiektu wyboru, które zawierają odpowiedź użytkownika na dane pytanie, są przedkładane wraz z formularzem po naciśnięciu przycisku Check Answer. Oznacza to, że przeglądarka wysyła te pola w postaci strumienia bajtów pod adres określony w znaczniku formularza:
Przy wyborze przycisków poświęconych elementom strony zostaniesz poproszony o podanie nieco innych informacji, zależnych od typu elementu, który wybrałeś. Przykładowo przy wyborze pola tekstowego będziesz musiał podać nazwę pola, jego wartość, długość oraz czy jest to pole z hasłem. Rezultatem może być następujący znacznik:
Jeśli jednak naciśniesz przycisk obszaru tekstowego, zostaniesz poproszony o określenie nazwy pola, domyślnego tekstu, jego rozmiaru oraz sposobu jego obramowania.
Weryfikacja kodu w programie ScriptBuilder ScriptBuilder posiada również parę narzędzi wspierających sprawdzanie napisanego przez ciebie kodu. Są to: Korektor składni (Syntax Checker) i Kontroler skryptu (Script Inspector). Jednym z błędów, które często zdarzają mi się podczas tworzenia stron ASP, jest opuszczanie nawiasów, jak w wierszu kodu poniżej: If isempty(Request.Form(" OK") then
ASP – Kompendium programisty
93
Ładuję stronę na serwer myśląc, że wszystko jest w porządku, a kiedy ją uruchamiam okazuje się, że wystąpił błąd w wierszu kodu. Wiem, w czym leży problem, ale muszę najpierw edytować tą stronę, a następnie ponownie umieścić ją na serwerze. Korektor składni jest w tym względzie bardzo pomocny. Nie znajdzie on błędów związanych z użyciem niewłaściwej metody czy właściwości obiektu i pewnie nie rozpozna błędów logicznych, ale błędy składni, podobne do tego zaprezentowanego powyżej, zostaną przez program odnalezione. Powiedzmy, że twój blok kodu wygląda następująco: <% if isempty(Session("StudentID")) then Response.Redirect "../index.asp" end if if isempty(Request.QueryString("CourseID") then Response.Redirect "../html/student_menu.asp" end if %>
Jesteś już gotów do wysłania twojej strony do serwera, ale przedtem chcesz sprawdzić, czy nie ma w niej jakichś błędów składni. Z menu Narzędzia (Tools) wybierz opcję Korektor składni (Syntax Checker). W rezultacie tego wyboru w oknie programu ScriptBuilder pojawi się dodatkowy panel, który pokazany jest na rysunku 3.50.
Rysunek 3.50. Rezultat uruchomienia Korektora składni Zwróć uwagę na panel, który znajduje się a dole okna. Wyszczególnia on błąd w stronie w szóstym jej wierszu. Panel ten pokaże listę wszystkich błędów składni znalezionych w stronie. Jeśli klikniesz dwa razy wiadomość o błędzie, program przeniesie cię do tego wiersza, który ten błąd wywołał. Korektor składni wyszuka wiele błędów podobnych do tego. Poinformuje cię o tym, że użyłeś instrukcji If bez End If lub instrukcji For bez Next. Zauważyłem jednak, że czasami korektor widzi błędy składni tam, gdzie ich nie ma. Weźmy następując fragment kodu, który w stronie ASP jest pojedynczym wierszem kodu: ">
Rozdział 3 – Narzędzia pracy
Ta linia spowoduje wystąpienie błędu, chociaż błędu nie ma. Taką reakcję programu ScriptBuilder wywoła pojawienie się kodu ASP wraz z HTML. Innym narzędziem weryfikacji jest Kontroler skryptu. Przeglądnie on twój HTML, kod strony serwera i strony klienta i poda wersje przeglądarek Navigator i Explorer, które będą mogły rozpoznać twój kod. Aby skorzystać z tego narzędzia, otwórz stronę, którą chcesz przetestować i wybierz opcję Kontroler skryptu (Script Inspector) z menu Narzędzia (Tools). W wyniku tego na dole okna ukażą się panele, które pokazane zostały na rysunku 3.51. Jeśli drugi panel nie został wyświetlony, kliknij prawym przyciskiem w obszarze panelu widocznego i wybierz Pokaż szczegóły (Show Details).
Rysunek 3.51. Wynik uruchomienia Kontrolera skryptu Zauważ, że Kontroler skryptu zgłosił znalezienie znacznika VBScript strony klienta, który nie jest obsługiwany przez większość obecnych wersji przeglądarek Navigatora. Jeśli klikniesz podwójnie wiadomość o błędzie wyświetloną w najniżej położonym panelu, program przeniesie cię do tego wiersza kodu, który jest źródłem wystąpienia problemu.
Microsoft Visual InterDev 6.0 Kolejnym pomocnym narzędziem, którego możesz użyć do tworzenia stron ASP jest Microsoft Visual InterDev 6.0. Ponieważ jest o produktem firmy Microsoft, łączą go bliskie relacje z Internetowym serwerem informacyjnym (IIS) oraz systemem NT. Z perspektywy twórcy stron najważniejszymi cechami tego programu są: wyróżnianie wizualne oraz automatyczne zakańczanie kodu. Rysunek 3.52. pokazuje stronę ASP otwartą przy użyciu Visual InterDev. Program, dzięki zastosowaniu kolorowych czcionek, kolorów tła oraz pogrubienia tekstu, czyni stronę bardzo czytelną. W prosty sposób można wtedy dostrzec, gdzie się zaczyna, a gdzie kończy blok kodu; instrukcje w blokach kodu są pogrubione.
ASP – Kompendium programisty
95
Rysunek 3.52. Okno programu Visual InterDev 6.0 Zauważ, że na dole okna znajdują się trzy zakładki odnoszące się do strony: Projekt (Design), Źródło (Source) i Szybki podgląd (Quick View). Niestety jeśli uruchomisz stronę zawierającą kod ASP wraz z HTML — czyli prawie każdą — zakładka Projekt (Design) nie zadziała; natomiast zakładka Szybki podgląd (Quick View) nie będzie funkcjonowała, ponieważ program nie przetwarza kodu strony serwera. Tak więc jedynym widokiem, który mamy do dyspozycji przez cały czas jest Źródło (Source). Inną nadzwyczaj pomocną funkcją Visual InterDev są listy zakańczania kodu, generowane w chwili użycia kropki w składni kodu dla jednego z wbudowanych obiektów ASP. Na przykład jednym z najważniejszych obiektów ASP jest Response. Używany jest do komunikowania się z przeglądarką, która wywołała twoją stronę ASP. Obiekt ma liczne właściwości i metody, które pozwalają na podjęcie działań. Jeżeli w oknie Visual InterDev wpiszesz następujący kod: Response.
pojawi się lista pokazana na rysunku 3.53. Będzie ona zawierała wszystkie właściwości i metody obiektu Response. Możesz zacząć wpisywać wybraną metodę albo po prostu przewinąć listę i wybrać z niej odpowiedni punkt.
Rozdział 3 – Narzędzia pracy
96
Rysunek 3.53. Lista rozwijana zakończenia kodu dla obiektu Response
Ostatnie słowo o narzędziach Bez względu na to, na które narzędzie się zdecydujesz, pamiętaj, że to tylko narzędzie — jeśli użyjesz właściwego, ułatwisz sobie pracę. Powinieneś przeanalizować ich pełne możliwości, ponieważ większość najciekawszych funkcji często bywa zagrzebana na samym dnie menu. Postaraj się nie zadowalać jednym tylko produktem. Nowe produkty i programy usługowe przez cały czas pojawiają się na rynku, a ich zastosowanie często zaoszczędzi ci mnóstwa czasu.
Rozdział 4. Podstawy ASP Konstrukcja kodu ASP Strony ASP złożone są ze statycznego HTML-a oraz dynamicznego kodu ASP. Te dwa składniki mogą być łączone ze sobą na różne sposoby, które zostaną omówione w tym podrozdziale: HTML może być umieszczony w kodzie, kod w HTML oraz skrypty strony serwera mogą być zawarte w skryptach kodu klienta.
Znacznik <% = X %> Aby odróżnić początek od końca kodu, będziesz potrzebował pewnego rodzaju znacznika. Najprostszy znacznik przedstawia się następująco: <% = X %>
Nakazuje on kompilatorowi wypisanie wyniku wyrażenia X. Na przykład, jeśli chcesz stworzyć stronę WWW wyświetlającą aktualną datę oraz czas, stwórz kod podobny do tego: Simple Tag Page
Witam na stronie z zegarem
Teraz jest: <% = Now() %>
Strona jest napisana przy użyciu standardowego HTML-a aż do wiersza:
Teraz jest: <% = Now() %>
Pierwszą częścią wiersza jest standardowy HTML, ale pojawia się tutaj podstawowy znacznik ASP. Ponieważ po otwarciu <% następuje znak równości, kompilator wie, że to, co jest później powinno zostać obliczone, a wynik ma być wysłany w postaci HTML. W tym przypadku obliczona powinna być funkcja Now(). Jak się dowiesz później, funkcja Now() zwraca datę i godzinę systemu. Tak więc poprzedni wiersz, wysłany do przeglądarki, faktycznie wygląda tak:
Teraz jest: 7/12/99 12:10:14 PM
Widok tej strony ASP prezentuje rysunek 4.1.
Rozdział 4 – Podstawy ASP
98
Rysunek 4.1. Strona ASP ze znacznikiem podstawowym
<% Pojedyncza linia kodu %> Kolejnym sposobem na umieszczenie kodu w stronie ASP jest wstawienie pojedynczej linii pomiędzy znacznikiem <% a znacznikiem %>. Przykładem użycia tej składni niech będzie strona wyświetlająca liczbę dni do Bożego Narodzenia:
Days Until Christmas
Ile czasu zostało?
Dni do Bożego Narodzenia: <% Response.Write DateDiff("d",Date,"12/25/" & Year(Date)) %>
Strona zbudowana jest z samego HTML-a aż do wiersza:
Dni do Bożego Narodzenia: <% Response.Write DateDiff("d",Date,"12/25/" & Year(Date)) %>
Kompilator ASP widzi znacznik <% i wie, że wszystko, co znajduje się pomiędzy nim a znacznikiem %>, jest kodem wymagającym przetworzenia. W tym przypadku korzystamy z metody o nazwie Write obiektu Response w celu wysłania wyniku do przeglądarki (obiekt ten zostanie szczegółowo omówiony w rozdziale 6.). Szczególną wartością wysłaną do przeglądarki jest liczba dni do Bożego Narodzenia, powstała po odjęciu liczby od siebie dni pozostałych pomiędzy aktualną datą a datą tegorocznego święta. Wiersz wynikowy kodu:
Dni do Bożego Narodzenia: 157
ASP – Kompendium programisty
99 Wygląd strony przedstawia rysunek 4.2.
Rysunek 4.2. Strona zawierająca pojedynczą linię kodu ASP
<% Blok kodu %> Możesz również użyć znaczników <% i %> do stworzenia bloku kodu, który jest serią wierszy otrzymujących określone zadania. Powiedzmy, że musisz stworzyć stronę, która wysyła lub przeadresowuje odwiedzającego do innej strony, opierając się przy tym na dniu tygodnia. Poniższy blok kodu realizuje to zadanie: <% If WeekDay(Date) = 1 then Response.Redirect "Sunday.html" ElseIf WeekDay(Date) = 2 then Response.Redirect "Monday.html" ElseIf WeekDay(Date) = 3 then Response.Redirect "Tuesday.html" ElseIf WeekDay(Date) = 4 then Response.Redirect "Wednesday.html" ElseIf WeekDay(Date) = 5 then Response.Redirect "Thursday.html" ElseIf WeekDay(Date) = 6 then Response.Redirect "Friday.html" Else Response.Redirect "Saturday.html" End If %>
To byłaby cała zawartość strony. Nie posiada ona widoku wyjściowego i jest napisana jedynie w kodzie ASP. Kod sprawdzi dzień tygodnia w oparciu o aktualną datę, a następnie połączy odwiedzającego ze stroną odpowiedniego dnia.
Rozdział 4 – Podstawy ASP
100
< Script> Kod Jeśli już pracowałeś ze skryptami po stronie klienta, to prawdopodobnie jesteś zaznajomiony ze znacznikiem