Podstawy strony aktywnej ASP.NET, klasa
Page
Cele ćwiczenia
- Zapoznanie ze sposobami
umieszczania skryptów na stronie WWW.
- Zapoznanie z
właściwością Resonse
klasy Page i aktywnym
tworzeniem treści strony.
- Zapoznanie z parametrami
żądania, właściwością Request klasy Page i sposobami dostępu do
parametrów.
- Zapoznanie ze sposobami
przekazywania danych miedzy stronami.
- Zapoznanie ze sposobami
przesyłania plików na serwer i zapisu danych w plikach tekstowych.
Klasa Page
Klasa Page reprezentuje stronę internetową.
Ważne
właściwości klasy Page:
·
Response –
zwraca obiekt HttpResponse,
który reprezentuje odpowiedź HTTP na bieżące
żądanie, ważne metody klasy HttpResponse
o
Write –
zapisuje dane do strumienia HTTP,
o
Redirect –
przełącza żądanie do innej strony,
·
Request –
zwraca obiekt HttpRequest,
który reprezentuje bieżące żądanie HTTP wysłane
przez przeglądarkę, ważne właściwości klasy HttpRequest
o
Cookies –
zwraca kolekcję ciasteczek odesłanych przez przeglądarkę,
o
Form –
zwraca kolekcję danych formularza wysłanych z żądaniem,
o
QueryString
– zwraca kolekcję danych wysłanych w ciągu zapytania razem
z żądaniem,
o
ServerVariebles
– zwraca kolekcję nazwanych danych serwera wysłanych razem
z żądaniem,
o
Params –
zwraca łączną kolekcję Cookies,
Form, QueryString i ServerVariebles,
o
FilePath –
zwraca wirtualną ścieżkę do bieżącej strony,
o
PhisicalPath
– zwraca fizyczną ścieżkę do bieżącej
strony,
o
ApplicationPath
– zwraca wirtualną ścieżkę aplikacji,
o
Phisical ApplicationPath
– zwraca fizyczną ścieżkę aplikacji,
·
IsPostBack –
zwraca wartość false,
gdy strona jest wywoływana po raz pierwszy i wartość true, jeśli jest to kolejne
wywołanie strony.
Aktywne tworzenie treści strony
- Utwórz nową
witrynę w lokalnym systemie plików.
- Na stronie Default.aspx umieść
skrypt dodający do strony tekst Ala ma kota i przetestuj jego działanie.
<%
Response.Write("Ala ma kota<br />");
%>
- Zmień skrypt tak, aby
umieścił na stronie 10 linii zawierających tekst Ala ma
kota nr k, gdzie k cyfry od 1 do 10. W skrypcie do
konwersji liczby na tekst można wykorzystać klasę Convert i metodę ToString().
Odczytanie i wydruk parametrów
żądania
- Dodaj do witryny nowa
stronę typu Web Form.
- Umieść na nowej
stronie skrypt z listingu 1 umieszczający na stronie listę
parametrów żądania.
Listing 1. Kod skryptu wypisującego
na stronie WWW listę parametrów żądania
<%
// Wydruk
parametrów żądania
for (int i = 0; i < Request.Params.Count; i++)
{
Response.Write("Indeks : " +
i.ToString() + "<br />");
Response.Write("Nazwa : " +
Request.Params.GetKey(i) + "<br />");
Response.Write("Ilość : "
+ Request.Params.GetValues(i).Length.ToString() + "<br
/>");
for (int j = 0; j
< Request.Params.GetValues(i).Length;
j++)
Response.Write("Wartość:"
+ Request.Params.GetValues(i)[j] + "<br
/><br />");
}
%>
- Uruchom stronę i zapoznaj
się z listą parametrów.
- W przeglądarce dodaj do
adresu strony łańcuch query string, który jest
częścią adresu URL umożliwiającą
przesłanie do aplikacji danych.
Format adresu: http://server/path/program?query_string
Format łańcucha: parametr1=wartość1¶metr2=wartość2¶metr3=wartość3...
- Przeładuj stronę i
znajdź wprowadzone dane na liście parametrów,
wśród parametrów znajdź też QUERY_STRING.
Przesyłanie danych formularza
Uwaga: W bieżącym
ćwiczeniu używane będą głównie standardowe
kontrolki HTML, znajdujące się w zakładce HTML, na dole paska
narzędzi (Toolbox) Visual Studio.
- Dodaj do witryny nową
stronę typu Web Form.
- Na formularzu strony, w widoku Design,
umieść następujące kontrolki HTML:
- dwie kontrolki Input (Text),
- Input (Submit),
- Input (Reset).
- Pod formularzem
umieść kod skryptu z listingu 1.
- Uruchom stronę, wpisz
dowolne dane do kontrolek tekstowych i kliknij przycisk Submit.
- Spróbuj
odnaleźć dane formularza na liście parametrów,
jeśli ich nie znajdziesz przejdź dalej.
- Nadaj nazwy kontrolkom
tekstowym np. Nazwisko, Imię i ponownie wykonaj punkty
4 i 5 – tym razem parametry o nazwach kontrolek powinny się
pojawić na liście parametrów.
- Zmień metodę
przesyłania danych z domyślnej GET
na POST i zaobserwuj
różnicę (parametry nie będą już
przesyłane w łańcuch query string dodawanym do
adresu).
- W przeglądarce dodaj do
adresu strony dowolny query string zawierający parametry,
wpisz dane do formularza, następnie kliknij Submit i
znajdź parametry query string i dane formularza na liście.
Przesyłanie danych formularza między
stronami
- Dodaj do witryny nowa
stronę o nazwie odbiornik.aspx.
- Na stronie umieść
skrypt z listingu 1.
- Dodaj do witryny nowa
stronę o nazwie nadajnik.htm.
- Do strony w widoku Source
dodaj formularz.
- Na formularzu, w widoku Design
lub Source, umieść następujące kontrolki HTML:
- dwie kontrolki Input (Text),
- Input (Submit),
- Input (Reset).
- Nazwij kontrolki i ustaw
atrybut formularza action="odbiornik.aspx".
- Uruchom stronę, wpisz
dowolne dane do kontrolek tekstowych i kliknij przycisk submit.
- Na stronie odbiornik.aspx
znajdź przesłane parametry formularza.
- Przetestuj dwie metody
przesyłania danych POST
i GET, dla obu metod
zapoznaj się z parametrem QUERY_STRING.
- Ustaw atrybut formularza action="http://argo.umg.edu.pl/www/aplikacje/Cw01/odbiornik.aspx".
i przetestuj przesyłanie parametrów na powyższy
adres.
- Dodaj do witryny nowa
stronę o nazwie nadajnik.aspx.
- Na stronie umieść
standardowe kontrolki ASP.NET TextBox i Button.
- Ustaw atrybut przycisku PostBackUrl="~/odbiornik.aspx".
- Uruchom stronę, w
przeglądarce zapoznaj się ze źródłem strony,
znajdź kod
- kontrolek tekstowych,
- kontrolek ukrytych,
- przycisku,
- skryptu
obsługującego kliknięcie przycisku.
- Wpisz dowolne dane do kontrolek
tekstowych i kliknij przycisk.
- Na stronie odbiornik.aspx
znajdź przesłane parametry formularza, jawne i ukryte.
Wykorzystanie parametrów
żądania i formularza w aplikacji
- Utwórz nową
stronę odbierającą z formularza dane osobowe i
drukującą je.
- Na listingu 2 przedstawiono kod
skryptu sprawdzającego, czy w żądaniu jest parametr Nazwisko
i w przypadku, gdy jest, drukujący go.
Listing 2. Kod skryptu
sprawdzającego, czy przesłano parametr Nazwisko
<%
if (Request.Params["Nazwisko"]==null)
Response.Write("Nie przesłano parametru Nazwisko");
else
Response.Write("Przesłano parametr
Nazwisko = " + Request.Params["Nazwisko"]);
%>
- Przetestuj działanie
aplikacji.
Przesyłanie plików na serwer
- Dodaj do witryny nowa
stronę typu Web Form.
- Na formularzu strony, w widoku Design,
umieść następujące kontrolki HTML:
- Input (Text)
– name="nazwa",
- Input (File)
– name="plik",
- Input (Submit).
- Ustaw atrybuty
formularza: enctype="multipart/form-data" method="post".
- Na stronie umieść
skrypt z listingu 3, który
a.
sprawdza ilość przesłanych plików,
b.
jeśli plik został przesłany, zapisuje go na twardym dysku
serwera pod nazwą pobraną z kontrolki tekstowej,
c.
umieszcza zawartość pliku na stronie.
Listing 3. Kod skryptu
zapisującego pobrany plik i umieszczający jego treść na
stronie
<%
if
(Request.Files.Count > 0)
{
string nazwa = Request.PhysicalApplicationPath
+ Request.Params["nazwa"];
Request.Files.Get(0).SaveAs(nazwa);
Response.Write("Traść przesłanego pliku<br
/>");
Response.WriteFile(nazwa);
}
%>
<form id="form1" enctype="multipart/form-data"
method="post">
<div>
<input id="Text1" type="text" name="nazwa"
/><br />
<input id="File1" type="file" name="plik" /><br />
<input id="Submit1"
type="submit"
value="submit"
/></div>
</form>
- Przetestuj działanie
aplikacji, znajdź przesłany plik w katalogu głównym
aplikacji.
Uwaga: przesyłanie i
zapisywanie plików na serwerze może być potencjalnie
niebezpieczne, dlatego trzeba stosować daleko idące zabezpieczenia.
Zapis przekazanych danych formularza do pliku
- Napisz aplikację,
która pobiera z formularza strony dane osobowe i po kliknięciu
przycisku submit dopisuje wprowadzone dane do pliku tekstowego
umieszczonego w katalogu głównym aplikacji.
- Do wykonania zadania może
być pomocny listing 3 zawierający kod dopisywania do pliku
tekstowego test.txt zdania „Ala ma kota”.
Listing 4. Kod
dopisywania do pliku test.txt (umieszczonego w katalogu
głównym aplikacji) zdania „Ala ma kota”
string nazwa_pliku =
Request.PhysicalApplicationPath + @"\test.txt";
// Otwarcie pliku do dopsywania
System.IO.StreamWriter
plik = new System.IO.StreamWriter(nazwa_pliku,true);
plik.WriteLine("Ala
ma kota");
plik.Close();
- Przetestuj działanie
aplikacji dopisując kilkakrotnie do pliku przykładowe dane osobowe.
- Znajdź plik test.txt
w katalogu głównym aplikacji i odczytaj jego treść.
Uwaga: w aplikacjach
internetowych głównym miejscem zapisu danych są bazy danych a
nie pliki tekstowe.
Projekt
- Utworzyć aplikację
prezentującą listę odebranych parametrów formularza
i query string, wraz z pełną informacją od kogo
przyszło żądanie.
- Utworzyć co najmniej 2
strony przesyłające do aplikacji dane.
- Utworzyć aplikację,
która pobiera z formularza dane osobowe (nazwisko, imię,
imię ojca, data urodzenia, adres Email) i zapisuje w pliku tekstowym
– każda osoba w osobnym wierszu, dane rozdzielone
średnikami.
- Utworzyć stronę
prezentującą zebrane dane osobowe.