2010-03-31
Technologie internetowe
Wykład 5
Wprowadzenie do skrytpów serwerowych
Skrypty serwerowe
Programy osadzone w kodzie HTML
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 zródłowe
Konieczność komunikacji przez sieć
Serwer musi udostępniać technologię
Możliwość współpracy z bazami danych
1
2010-03-31
Model komunikacji
Żądanie HTTP
Odpowiedz 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)
2
2010-03-31
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: &&, ||, !
3
2010-03-31
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
Deklaracja zmiennych:
" long
int a;
" short
string imie,nazwisko;
" byte
double x=5;
" char
" string
" bool
4
2010-03-31
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
}
nagłówek
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.
5
2010-03-31
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);
6
2010-03-31
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 widziany przez serwer Skrypt widziany przez przeglądarkę
<%@ Page Language="C#" %> <%@ Page Language="C#" %>
Skrypt Skrypt <% 0
1
2
3
4
// SKRYPT SERWEROWY
for (int i=0;i<5;i++) Response.Write(i+"
");
0
1
%>
2
3
4
Wynik
0
1
2
3
4
7
2010-03-31
Osadzanie skryptu serwerowego
INLINE w kodzie HTML
Dzisiejsza data to: <% =System.DateTime.Now.ToLongDateString() %>Jako blok <% .. %> - dla dynamicznej generacji treści
<%
for (int i=0; i<5; i++) Response.Write(i+"
");
%>
Jako blok - do definicji metod, zdarzeń itd.
Osadzanie skryptu serwerowego
Dołączanie zewnętrznego pliku kodu
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Strona.aspx.cs" Inherits="Strona" %>
Strona.aspx.cs
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)
{
}
}
8
2010-03-31
Dyrektywy
<%Page Language="C#" Debug="true">
Język Wyszukiwane
błędów
wykonania
<@%Import Namespace="System.Data" %>
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
9
2010-03-31
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
REQUEST
Żądanie do strony1.aspx
Nagłówek HTTP z przekierowaniem
Żądanie do strony1.aspx
Zawartość strony strona2.aspx
Dynamiczna generacja HTML
<%@ Page language= C#" %>
<%@ Page Language="C#" %>
TestTest
<% for (int i=1;i<10;i++)
<%
{ %>
Response.Write("");
for (int i=1;i<10;i++)
<%
{
for (int j=1; j<10;j++)
Response.Write("|
");
{
for (int j=1; j<10;j++)
%>
Response.Write(""+(i*j)+" | ");
<% =(i*j) %> |
Response.Write("
");
<% } %>
}
%>
<% } %>
10
2010-03-31
Automatyczne przekierowanie
<%@ Page Language="C#" %>
Test
<%
System.Random los=new System.Random();
switch (los.Next(0,3))
{
case 1: Response.Redirect("http://www.onet.pl"); break;
case 2: Response.Redirect("http://www..wp.pl"); break;
case 3: Response.Redirect("http://www.interia.pl"); 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: <%@ Page Language="C#" %>
" Hour godzina
Skrypt
" Minute minuta
<%
" Second sekunda
DateTime czas=DateTime.Now;
" Year rok Response.Write(czas.ToLongTimeString() + "
");
Response.Write(czas.Year + "-" + czas.Month + "-" +
" Month miesiąc (1-12)
czas.Day);
" Day %>
" DayOfWeek (Monday, Tuesday )
" DayOfYear
11
2010-03-31
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
Serwer
Klient
Dane z formularza
Pytanie.html Odpowiedz.aspx
Wygenerowany kod HTML stanowiący odpowiedz
12
2010-03-31
Przetwarzanie danych z formularza
http://www.moj.pl/odpowiedz.asp?imie=Jan&nazwisko=Kowal
pytanie.htm
Pytanie
odpowiedz.aspx
<%@ Page Language="C#" %>
Wynik
Przysłano:
Odpowiedz
imie=Jan&nazwisko=Kowal
<%
Response.Write("Przysłano: \n"+Request.QueryString);
%>
Przetwarzanie danych z formularza
http://www.moj.pl/odpowiedz.asp
pytanie.htm
Pytanie
odpowiedz.aspx
<%@ Page Language="C#" %>
Wynik
Przysłano:
Odpowiedz
imie=Jan&nazwisko=Kowal
<%
Response.Write("Przysłano: \n"+Request.Form);
%>
13
2010-03-31
Przetwarzanie danych z formularza
http://www.moj.pl/odpowiedz.asp?imie=Jan&nazwisko=Kowal
pytanie.htm
Pytanie
odpowiedz.aspx
<%@ Page Language="C#" %>
Wynik
Odpowiedz
Imię: Jan
<%
Nazwisko:Kowal
Response.Write("Imię: "+Request.QueryString["imie ]+"
Response.Write("Nazwisko:"
+Request.QueryString["nazwisko ]+"
%>
Przetwarzanie danych z formularza
http://www.moj.pl/odpowiedz.asp
pytanie.htm
Pytanie
odpowiedz.aspx
<%@ Page Language="C#" %>
Wynik
Odpowiedz
Imię: Jan
<%
Nazwisko:Kowal
Response.Write("Imię: "+Request.Form["imie ]+"
Response.Write("Nazwisko:"
+Request.Form["nazwisko ]+"
%>
14
2010-03-31
Klasa Math
Metody:
" Sqrt(x)
" Abs(x)
" Pow(a,n)
" Round(x), Ceiling(x), Floor(x)
" Sin(rad),Cos(rad), Tan(rad)
Właściwości:
" Sinh(rad), Cosh(rad), Tanh(rad)
" E
" Asin(x),Acos(x),Atan(x), Atan2(x,y)
" PI
" Log(a,pod), Log10(x)
" Max(x1,x2), Min(x1,x2)
" Exp(n)
Obliczenia na danych z formularza
pytanie.htm
odpowiedz.aspx
<%@ Page Language="C#" %>
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 )+" cm2");
%>
Nowe dane
15
2010-03-31
Strona samodzielna
<%@ Page Language="C#" %>
Objętość walca
<%
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") + " cm2");
}
%>
Wyrażenia regularne klasa RegEx
Przestrzeń nazw: System.Text.RegularExpressions
RegEx wyrazenie=new RegEx(@"^\d(0}$ );
Metoda IsMatch
string tekst="Hello";
Regex wyrazenie=new Regex(@"^[A-Z][a-z]+$");
if (wyrazenie.IsMatch(tekst)) Response.Write("OK"); else Response.Write("yle");
Metoda Matches
string tekst = "Mój pesel to 80120102256 a twój to 80111102256";
Regex wyrazenie=new Regex(@"\d{11}");
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 Regex(@"ma");
Response.Write(wyrazenie.Replace(tekst,"posiada"));
16
2010-03-31
Obiekt Server
Metody:
" Transfer przekierowanie obsługi strony po stronie serwera
" MapPath tłumaczenie ścieżki względnej na ścieżkę fizyczną
TRANSFER
Żądanie do strony1.aspx
Zawartość strony strona2.aspx
Mapowanie ścieżki
Katalog
Dysk C:
Serwer
wirtualny
Folder Serwisy
Folder DaneStudentów
STRONA DOMYŚLNA
Stona index.aspx
Stona opis.aspx
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
17
2010-03-31
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
<%@ Page Language="C#" %>
Kwadrat Kwadrat
<%
if (Request.Form["bok"] != null) if (isset($_POST["bok ])
{ {
double a = Convert.ToDouble(Request.Form["bok"]); $a = $_POST["bok ];
Response.Write("Pole=" + (a * a)); print "Pole=".($a * $a);
} }
%> ?>
18
Wyszukiwarka
Podobne podstrony:
Wyklad TI 1
Wyklad TI 9
Wyklad TI
Wyklad TI 6
Wyklad TI
PREZENTACJA wyklad TI 2
Wyklad TI
Wyklad TI 8
PREZENTACJA wyklad TI 4
Wyklad TI 4
Wyklad TI 3
PREZENTACJA wyklad TI 1
Wyklad TI 7
Wyklad TI
Wyklad TI 2
Wykład TI 05 12 11 2
TI Wykład 08
TI Wykład 03
wyklad Patryka wskaźniki TI 18 12 11
więcej podobnych podstron