Wyklad TI 5

background image

2010-03-26

1

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

background image

2010-03-26

2

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)

background image

2010-03-26

3

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: &&, ||, !

background image

2010-03-26

4

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;

background image

2010-03-26

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

background image

2010-03-26

6

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);

background image

2010-03-26

7

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

<%@ Page Language="C#" %>

<html>

<head><title>Skrypt</title></head>

<body>

<script language="JavaScript">

// SKRYPT KLIENCKI

for (i=0;i<5;i++) document.write(i+'<br>');

</script>

<%

// SKRYPT SERWEROWY

for (int i=0;i<5;i++) Response.Write(i+"<br>");

%>

</body>

Skrypt widziany przez serwer

<%@ Page Language="C#" %>

<html>

<head><title>Skrypt</title></head>

<body>

// SKRYPT KLIENCKI

<script language="JavaScript">

for (i=0;i<10;i++) document.write(i+'<br>');

</script>

0<br>1<br>2<br>3<br>4<br>

</body>

Skrypt widziany przez przeglądarkę

0
1
2
3
4
0
1
2
3
4

Wynik

background image

2010-03-26

8

Osadzanie skryptu serwerowego

INLINE w kodzie HTML

<body>

<b>Dzisiejsza data to:<i> <% =System.DateTime.Now.ToLongDateString() %></i></b>

</body>

Jako blok <% .. %> - dla dynamicznej generacji treści

<body>

<%

for (int i=0; i<5; i++) Response.Write(i+"<br>");

%>

</body>

Jako blok <script runat="server"> .. </script> - do definicji metod, zdarzeń itd.

<script runat="server">

void Przywitaj(string imie)
{

Respone.Write("Witaj "+imie);

}

</script>
<html> //

Osadzanie skryptu serwerowego

Dołączanie zewnętrznego pliku kodu

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Strona.aspx.cs" Inherits="Strona" %>

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

background image

2010-03-26

9

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

background image

2010-03-26

10

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

<%@ Page Language="C#" %>
<html>
<head><title>Test</title></head>
<body>
<%

Response.Write("<table border=\"1\">");

for (int i=1;i<10;i++)

{

Response.Write("<tr>");

for (int j=1; j<10;j++)

Response.Write("<td>"+(i*j)+"</td>");

Response.Write("</tr>");

}

%>
</body>
</html>

<%@ Page language=„C#" %>
<html>
<head><title>Test</title></head>
<body>
<table border="1">
<% for (int i=1;i<10;i++)
{ %>
<tr>
<%
for (int j=1; j<10;j++)
{
%>
<td><% =(i*j) %></td>
<% } %>
</tr>
<% } %>
</table>
</body>
</html>

background image

2010-03-26

11

Automatyczne przekierowanie

<%@ Page Language="C#" %>
<html>
<head><title>Test</title></head>
<body>
<%

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("<i>Zostajemy tutaj</i>"); break;

}

%>
</body>
</html>

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

<%@ Page Language="C#" %>
<html>
<head><title>Skrypt</title></head>
<body>
<%
DateTime czas=DateTime.Now;
Response.Write(czas.ToLongTimeString() + "<br />");
Response.Write(czas.Year + "-" + czas.Month + "-" +
czas.Day);
%>
</body>
</html>

background image

2010-03-26

12

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.html

Odpowiedz.aspx

Dane z formularza

Wygenerowany kod HTML stanowiący odpowiedz

background image

2010-03-26

13

Przetwarzanie danych z formularza

<html>
<head><title>Pytanie</title></head>
<body>
<form action="odpowiedz.aspx" method="get">
Imię:<input name="imie" type="text"><br>
Nazwisko:<input name="nazwisko" type="text"><br>
<input type="submit" value="Wyślij"></form>
</body>
</html>

pytanie.htm

<%@ Page Language="C#" %>
<html>
<head><title>Odpowiedź</title></head>
<body>
<%
Response.Write("Przysłano: \n"+Request.QueryString);
%>
</body>
</html>

odpowiedz.aspx

http://www.moj.pl/odpowiedz.asp?imie=Jan&nazwisko=Kowal

Przysłano:
imie=Jan&nazwisko=Kowal

Wynik

Przetwarzanie danych z formularza

<html>
<head><title>Pytanie</title></head>
<body>
<form action="odpowiedz.aspx" method="post">
Imię:<input name="imie" type="text"><br>
Nazwisko:<input name="nazwisko" type="text"><br>
<input type="submit" value="Wyślij"></form>
</body>
</html>

pytanie.htm

<%@ Page Language="C#" %>
<html>
<head><title>Odpowiedź</title></head>
<body>
<%
Response.Write("Przysłano: \n"+Request.Form);
%>
</body>
</html>

odpowiedz.aspx

http://www.moj.pl/odpowiedz.asp

Przysłano:
imie=Jan&nazwisko=Kowal

Wynik

background image

2010-03-26

14

Przetwarzanie

danych z

formularza

<html>
<head><title>Pytanie</title></head>
<body>
<form action="odpowiedz.aspx" method="get">
Imię:<input name="imie" type="text"><br>
Nazw:<input name="nazwisko" type="text"><br>
<input type="submit" value="Wyślij"></form>
</body>
</html>

pytanie.htm

<%@ Page Language="C#" %>
<html>
<head><title>Odpowiedz</title></head>
<body>
<%
Response.Write("Imię: "+Request.QueryString["imie”]+"<br");

Response.Write("Nazwisko:"

+Request.QueryString["nazwisko”]+"<br");

%>
</body>
</html>

odpowiedz.aspx

http://www.moj.pl/odpowiedz.asp?imie=Jan&nazwisko=Kowal

Imię: Jan
Nazwisko:Kowal

Wynik

Przetwarzanie

danych z

formularza

<html>
<head><title>Pytanie</title></head>
<body>
<form action="odpowiedz.aspx" method="post">
Imię:<input name="imie" type="text"><br>
Nazw:<input name="nazwisko" type="text"><br>
<input type="submit" value="Wyślij"></form>
</body>
</html>

pytanie.htm

<%@ Page Language="C#" %>
<html>
<head><title>Odpowiedz</title></head>
<body>
<%
Response.Write("Imię: "+Request.Form["imie”]+"<br");

Response.Write("Nazwisko:"

+Request.Form["nazwisko”]+"<br");

%>
</body>
</html>

odpowiedz.aspx

http://www.moj.pl/odpowiedz.asp

Imię: Jan
Nazwisko:Kowal

Wynik

background image

2010-03-26

15

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

<form action="odpowiedz.aspx" method="get">
Wysokość:<input name="wys" type="text"><br>
Promięń:<input name="prom" type="text"><br>
<input type="submit" value="Oblicz"></form>

pytanie.htm

<%@ Page Language="C#" %>
<html>
<head><title>Objętość walca</title></head>
<body>
<%
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<sup>2</sup>");
%>
<br>
<a href="pytanie.htm">Nowe dane</a>
</body>
</html>

odpowiedz.aspx

background image

2010-03-26

16

Strona samodzielna

<%@ Page Language="C#" %>
<html>
<head><title>Objętość walca</title></head>
<body>
<form method="get">
Wysokość:<input name="wys" type="text"><br>
Promięń:<input name="prom" type="text"><br>
<input type="submit" value="Oblicz"><br /></form>
<%

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<sup>2</sup>");

}

%>
<br />
</body>
</html>

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("Źle");

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+"<br />");

Metoda Replace
string tekst = "Ala ma kota a Ola ma psa";
Regex wyrazenie=new Regex(@"ma");
Response.Write(wyrazenie.Replace(tekst,"posiada"));

background image

2010-03-26

17

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

background image

2010-03-26

18

Przekazywanie informacji przez hiperłącze

<body>
Wybierz wielkość tabliczki mnożenia:<br />
<%

for (int i = 5; i <= 9; i++)

Response.Write("<a href=\"Tabliczka.aspx?wielkosc=" + i + "\">Wielkość " + i + "</a><br />");

%>
<br />
<%

if (Request.QueryString["wielkosc"] != null)
{

Response.Write("<table border=1>");
int w = Convert.ToInt32(Request.QueryString["wielkosc"]);
for (int i = 1; i <= w; i++)
{

Response.Write("<tr>");
for (int j = 1; j <= w; j++)
{

Response.Write("<td bgcolor=\"" + (i == 1 || j == 1 ? "red" : "green") + "\">");
Response.Write(i*j);
Response.Write("</td>");

}
Response.Write("</tr>");

}

Response.Write("</table>");

}

%>
</body></html>

ASP.NET a PHP

<%@ Page Language="C#" %>
<html>
<head><title>Kwadrat</title></head>
<body>
<form method="post">
<input name="bok" type="text" />
<input type="submit" value="Oblicz" />
</form><br />
<%
if (Request.Form["bok"] != null)
{
double a = Convert.ToDouble(Request.Form["bok"]);
Response.Write("Pole=" + (a * a));
}
%>
</body>
</html>

<html>
<head><title>Kwadrat</title></head>
<body>
<form method="post">
<input name="bok" type="text" />
<input type="submit" value="Oblicz" />
</form><br />
<?
if (isset($_POST["bok”])
{
$a = $_POST["bok”];
print "Pole=".($a * $a);
}
?>
</body>
</html>


Wyszukiwarka

Podobne podstrony:
Wykład 3 TI
Wykład 4 TI
PREZENTACJA wyklad TI 4
wyklady TI, II sem
Wykład 7 TI
Wykład 2 TI
Wykład 1 TI
PREZENTACJA wyklad TI 1
Przykładowe zadania sprawdzianu z wykładów TI 16
Wykład 5 TI
PREZENTACJA wyklad TI 2
Wyklady TI
Przykładowe zadania sprawdzianu z wykładów TI 15
Wyklad TI 12
TI wykłady semestr 1
TI -wyklad 2, Studia - Mechatronika, I semestr, Technologia Informacyjna
TI pytania sem1.13r, UE KATOWICE - FIR - Rachunkowość, I stopień, SEMESTR II, Technologia Informatyc

więcej podobnych podstron