Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych
Skrypty serwerowe Technologie PHP, ASP (JavaScript, VBScript), ASP.NET (JScript, C#, J#, VB.NET ….), JSP (Java) Wykonywane przez serwer WWW Brak wymagań względem przeglądarki Ukryte kody źródłowe Konieczność komunikacji przez sieć Serwer musi udostępniać technologię Możliwość współpracy z bazami danych Programy osadzone w kodzie HTML
Model komunikacji Żądanie HTTP Odpowiedź HTTP (HTML, JPG) Klient Serwer
Dlaczego ASP.NET ? Dowolny język programowania.NET (ok. 50) Filozofia obiektowa sterowana zdarzeniami Możliwość automatyzacji budowy serwisu Możliwość pracy komponentowej Skrypty kompilowane Możliwości buforowania treści Wsparcie dla XML i WebSerwisów Praca w środowiskach Windows i … Linux (projekt MONO) Darmowe środowiska programistyczne (Visual Web Developer, #develop)
Język C# Język opracowany dla Microsoft przez Andersa Hejlsberga Język łączący w sobie rozwiązania C++ i Java Obecnie jest z najsilniej rozwijanych języków programowania
Operatory Arytmetyczne: +,-,*,/,++,-=,+=,*=,/= Porównań: ==,!=,, = Logiczne: &&, ||, !
Instrukcje for (wyr1;wyr2;wyr3) { /* blok */} while (warunek) { /* blok */ } do { /* blok */} while (warunek) if (warunek) { /* blok1 */} else { /*blok2*/} switch (zmienna) { case 1: { /*blok1*/};break; case 2: { /*blok2*/};break; default: { /*blok*/};}
Zmienne Język C# wykorzystuje jawne deklaracje zmiennych i typowanie Typy podstawowe: int float double long short byte char string bool Deklaracja zmiennych: int a; string imie,nazwisko; double x=5;
Konwersja typów Konwersja niejawna: int a=5; double b=a; Rzutowanie: double a=5; int b=(int)a; Konwersja: string a=‘5’; int b=Convert.ToInt32(a);
Deklaracja metody typ_zwracany Nazwa(typ1 arg1,typ2 arg 2…) { //Ciało metody } Deklaracja metody zawsze musi określać typ zwracanych danych. Jeśli metoda nic nie zwraca, zwracany typ określa się jako void. Brak argumentów metody zapisuje się przy pomocy pustej listy parametrów () po jej nazwie. Prawidłowe wywołanie metody w kodzie, musi posiadać wszystkie argumenty wejściowe. Zarówno argumenty wejściowe, jak i zmienna, do której zostanie podstawiony wynik metody, muszą być zgodne pod względem typu danych z informacją podaną w deklaracji metody. nagłówek
Metoda bezargumentowa nie zwracająca wartości void Przywitaj() { Console.WriteLine("Hello"); } Przywitaj(); }
Metoda argumentowa nie zwracająca wartości static void Iloczyn(int a,int b) { Response.Write ("Iloczyn="+a*b); } Iloczyn(5,6);
Metoda argumentowa zwracająca wartość int Iloczyn(int a,int b) { return a*b; } int x=Iloczyn(5,6)+4; Response.Write("5*6+4="+x);
Skrypt kliencki i serwerowy Skrypt // SKRYPT KLIENCKI for (i=0;i '); <% // SKRYPT SERWEROWY for (int i=0;i "); %> Skrypt widziany przez serwer Skrypt // SKRYPT KLIENCKI for (i=0;i '); Skrypt widziany przez przeglądarkę Wynik
Osadzanie skryptu serwerowego INLINE w kodzie HTML Dzisiejsza data to: Jako blok - dla dynamicznej generacji treści <% for (int i=0; i "); %> Jako blok.. - do definicji metod, zdarzeń itd. void Przywitaj(string imie) { Respone.Write("Witaj "+imie); } ……
Osadzanie skryptu serwerowego Dołączanie zewnętrznego pliku kodu using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class Strona : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } Strona.aspx.cs
Dyrektywy Język Wyszukiwane błędów wykonania Przestrzeń nazw
Obiekt Page Obiekt Page reprezentuje stronę przygotowywaną na serwerze przed wysłaniem jej do przeglądarki użytkownika. Obiekty zagnieżdżone: Request – umożliwia dostęp do informacji o żądaniu wysłanym z przeglądarki Response – obiekt reprezentujący wszystkie dane wysyłane z serwera do przeglądarki (treść strony, cookies, przekierowania) Server – obiekt pozwalający uzyskać informacje o serwerze i jego zasobach
Obiekt Response Metody: Write(x) – dopisuje x do strony HTML WriteFile(nazwa) – dodaje zawartość pliku do pakietu HTTP End() – zakończenie przetwarzanie i wysłanie pakietu HTTP Redirect(url) – wysyła do przeglądarki polecenie przekierowania na adres URL Żądanie do strony1.aspx Nagłówek HTTP z przekierowaniem Żądanie do strony1.aspx REQUEST Zawartość strony strona2.aspx
Dynamiczna generacja HTML Test <% Response.Write(" "); for (int i=1;i<10;i++) { Response.Write(" "); for (int j=1; j<10;j++) Response.Write(" "+(i*j)+" "); Response.Write(" "); } %> Test <% for (int i=1;i<10;i++) { %> <% for (int j=1; j<10;j++) { %>
Automatyczne przekierowanie Test <% System.Random los=new System.Random(); switch (los.Next(0,3)) { case 1: Response.Redirect(" break; case 2: Response.Redirect(" break; case 3: Response.Redirect(" break; default: Response.Wrtie(" Zostajemy tutaj "); break; } %>
Obsługa daty i czasu – klasa DateTime Metody: ToString() – konwersja na tekst daty i czasu ToLongTimeString() – konwersa na pełny tekst czasu ToShortTimeString() – konwersja na skrócony tekst czasu ToLongDateString() – konwersa na pełny tekst czasu ToShortDateString() – konwersja na skrócony tekst czasu Właściowści: Hour – godzina Minute – minuta Second – sekunda Year – rok Month – miesiąc (1-12) Day DayOfWeek (Monday, Tuesday…) DayOfYear Skrypt <% DateTime czas=DateTime.Now; Response.Write(czas.ToLongTimeString() + " "); Response.Write(czas.Year + "-" + czas.Month + "-" + czas.Day); %>
Obiekt Request Właściwości: Form – kolekcja pól formularza wysłanych metodą POST QueryString – kolekcja pól formularza wysłanych modą GET Browser – informacje o przeglądarce użytkownika i jej możliwościach Browser: Borwser – Nazwa (IE) Type – Typ (IE7) Version – Wersja (7.0) MajorVersion – Numer główny wersji (7) MinorVersion – Numer poboczny wersji (0) Beta – Wersja beta (false) Crawler – Robot internetowy (false) Win32 – Windows 32-bitowy (true) Frames – Dostępne ramki (true) Tables – Dostępne tabele (true) Cookies – Dostępne ciasteczka (true) EcmaScriptVersion – dostępna wersja JS (1.2)
Przetwarzanie danych z formularza Klient Serwer Pytanie.htmlOdpowiedz.aspx Dane z formularza Wygenerowany kod HTML stanowiący odpowiedz
Przetwarzanie danych z formularza Pytanie Imię: Nazwisko: pytanie.htm Odpowiedź <% Response.Write("Przysłano: \n"+Request.QueryString); %> odpowiedz.aspx Przysłano: imie=Jan&nazwisko=Kowal Wynik
Przetwarzanie danych z formularza Pytanie Imię: Nazwisko: pytanie.htm Odpowiedź <% Response.Write("Przysłano: \n"+Request.Form); %> odpowiedz.aspx Przysłano: imie=Jan&nazwisko=Kowal Wynik
Przetwarzanie danych z formularza Pytanie Imię: Nazw: pytanie.htm Odpowiedz <% Response.Write("Imię: "+Request.QueryString["imie”]+"<br"); Response.Write("Nazwisko:" +Request.QueryString["nazwisko”]+"<br"); %> odpowiedz.aspx Imię: Jan Nazwisko:Kowal Wynik
Przetwarzanie danych z formularza Pytanie Imię: Nazw: pytanie.htm Odpowiedz <% Response.Write("Imię: "+Request.Form["imie”]+"<br"); Response.Write("Nazwisko:" +Request.Form["nazwisko”]+"<br"); %> odpowiedz.aspx Imię: Jan Nazwisko:Kowal Wynik
Klasa Math Metody: Sqrt(x) Abs(x) Pow(a,n) Round(x), Ceiling(x), Floor(x) Sin(rad),Cos(rad), Tan(rad) Sinh(rad), Cosh(rad), Tanh(rad) Asin(x),Acos(x),Atan(x), Atan2(x,y) Log(a,pod), Log10(x) Max(x1,x2), Min(x1,x2) Exp(n) Właściwości: E PI
Obliczenia na danych z formularza Wysokość: Promięń: pytanie.htm Objętość walca <% double h,r,V; h=Convert.ToDouble(Request.QueryString["wys”]); r=Convert.ToDouble(Request.QueryString["prom"]); V=Math.PI*Math.Pow(r,2)*h; Response.Write("Objętość wynosi "+V.ToString("F2”)+" cm 2 "); %> Nowe dane odpowiedz.aspx
Strona samodzielna Objętość walca Wysokość: Promięń: <% if (Request.QueryString.Count > 0) { double h, r, V; h = Convert.ToDouble(Request.QueryString["wys"]); r = Convert.ToDouble(Request.QueryString["prom"]); V = Math.PI * Math.Pow(r, 2) * h; Response.Write("Objętość wynosi " + V.ToString("F2") + " cm 2 "); } %>
Wyrażenia regularne – klasa RegEx Przestrzeń nazw: System.Text.RegularExpressions RegEx wyrazenie=new Metoda IsMatch string tekst="Hello"; Regex wyrazenie=new if (wyrazenie.IsMatch(tekst)) Response.Write("OK"); else Response.Write("Źle"); Metoda Matches string tekst = "Mój pesel to a twój to "; Regex wyrazenie=new foreach (Match m in wyrazenie.Matches(tekst)) Response.Write(m.Value+" "); Metoda Replace string tekst = "Ala ma kota a Ola ma psa"; Regex wyrazenie=new Response.Write(wyrazenie.Replace(tekst,"posiada"));
Obiekt Server Metody: Transfer – przekierowanie obsługi strony po stronie serwera MapPath – tłumaczenie ścieżki względnej na ścieżkę fizyczną Żądanie do strony1.aspx Zawartość strony strona2.aspx TRANSFER
Mapowanie ścieżki Dysk C: Folder Serwisy Folder DaneStudentów Stona index.aspx Stona opis.aspx Serwer Katalog wirtualny STRONA DOMYŚLNA Server.MapPath("~”) C:\Serwisy\DaneStudentów Server.MapPath(‘~/opis.aspx”); C:\Serwisy\DaneStudentów\opis.aspx Server.MapPath(‘opis.aspx”); C:\Serwisy\DaneStudentów\opis.aspx
Przekazywanie informacji przez hiperłącze Wybierz wielkość tabliczki mnożenia: <% for (int i = 5; i <= 9; i++) Response.Write(" Wielkość " + i + " "); %> <% if (Request.QueryString["wielkosc"] != null) { Response.Write(" "); int w = Convert.ToInt32(Request.QueryString["wielkosc"]); for (int i = 1; i <= w; i++) { Response.Write(" "); for (int j = 1; j <= w; j++) { Response.Write(" "); Response.Write(i*j); Response.Write(" "); } Response.Write(" "); } Response.Write(" "); } %>
ASP.NET a PHP Kwadrat <% if (Request.Form["bok"] != null) { double a = Convert.ToDouble(Request.Form["bok"]); Response.Write("Pole=" + (a * a)); } %> Kwadrat <? if (isset($_POST["bok”]) { $a = $_POST["bok”]; print "Pole=".($a * $a); } ?>
Literatura M. Mysior: Wprowadzenie do ASP.NET 2.0. Ćwiczenia praktyczne, NAKOM 2008 MCTS Self-Paced Training Kit (Exam ): Microsoft.NET Framework ASP.NET
KONIEC