Обработка сеансовых данных. Запись и чтение cookie.


Практическое занятие №4

Тема: «Обработка сеансовых данных. Запись и чтение cookie.»

Обработка сеансовых данных

Сеанс представляет собой процесс взаимодействия пользователя с Web –приложением, представленный типом HttpSessionState. Классическим примером необходимости поддержки пользовательских данных является корзина покупателя: при подключении десятков посетителей к странице Интернет – магазина для каждого посетителя должен поддерживаться уникальный список товаров, которые этот посетитель собрался купить.

При регистрации нового пользователя в Web – приложении среда выполнения автоматически назначит пользователю уникальный идентификатор сеанса, используемый для идентификации данного пользователя. Технология добавления и чтения сеансовых данных:

Session [“Color”] = “Зеленый”;

string color = (string) Session [“Color”];

Производный от HttpApplication тип позволяет выполнить перехват событий начала и завершения сеанса с помощью обработчиков событий Session_Start() и Session_End (). В пределах Session_Start() можно создать любые элементы данных пользователя, а в Session_End () можно выполнить действия, необходимые при завершении сеанса пользователя.

Рассмотрим пример, создайте Web – приложение и добавьте в это приложение файл Global .asax, выбрав New -> File -> Global Application Class. Этот файл представляет собой блок <script>, содержащий обработчики событий.

Приложение пусть содержит класс UserShopping. Правой клавишей по проекту, выбрать Add New Item-> Class , назвать UserShopping.

Вставить следующий код:

public class UserShopping

{

public string Nazvanie;

public string Color;

public DateTime dateSale;

public override string ToString()

{

return string.Format

(«Наименование товара: {0} <br> Цвет: {1}<br> Доставка {2}<br>»,

Nazvanie, Color, dateSale.ToShortTimeString());

}}

В файле Global . asax введите следующее

void Session_Start(object sender, EventArgs e)

{

Session[«UserShoppingInfo»] = new UserShopping();

}

На форме расположите следующие элементы:

Календарь на шарпе

В коде кнопки введите следующее:

protected void Button1_Click(object sender, EventArgs e)

{

UserShopping u = (UserShopping)Session[«UserShoppingInfo»];

u.Nazvanie = TextBox1.Text;

u.Color = TextBox2.Text;

u.dateSale = Calendar1.SelectedDate;

lblUserInfo.Text = u.ToString();

lblUserID.Text = string.Format(«Значение вашего ID: {0}», Session.SessionID);

Session[«UserShoppingInfo»] = u;

}

Запустите несколько веб страниц, убедитесь, что для каждого сеанса свой ID.

САМОСТОЯТЕЛЬНО : В Session _End() добавьте введенные в форму значения в базу данных.

Данные Cookie.

Cookie имеют вид обычных текстовых файлов, сохраняемых на машине пользователя. При регистрации пользователя данного узла браузер проверяет , есть ли на машине пользователя файл Cookie для данного URL, и если такой файл обнаруживается, данные файла прикрепляются к HTTP – запросу.

Получающая запрос Web-страница на сервере может прочитать данные Cookie, чтобы использовать их при создании графического интерфейса, учитывающего предпочтения пользователя.

Тип System.Web.HttpCookies является классом, представляющим серверную часть Cookie, используется свойство Response.Cookies.

Для примера использования Cookie создайте новое приложение со следующим интерфейсом:

Кукисы

Следует знать о том, что данные Cookie не будут сохраняться на жестком диске пользователя, если не указать явно дату истечения срока действия этих данных, используя свойство HttpCookie.Expires.

protected void Button1_Click(object sender, EventArgs e)

{

HttpCookie theCookie = new HttpCookie(TextBox1.Text,TextBox2.Text);

theCookie.Expires = DateTime.Parse(«03/04/2009»);

Response.Cookies.Add(theCookie);

}

Запустив приложение и добавив некоторые данные cookie, вы можете проверить, что браузер автоматически сохранит эти данные на диске.

Для взаимодействия с поступающими данными cookie предусмотрено свойство HttpRequest.Cookies.

Добавьте на форму  кнопку Чтение cookie и следующий программный код для нее:

rotected void Button2_Click(object sender, EventArgs e)

{

string cookieData = «»;

foreach (string s in Request.Cookies)

{cookieData+= string.Format(«<li><b>Имя:</b>{0} <b>Значение:</b>{1}</li>»,s,Request.Cookies[s].Value);

}

Label1.Text=cookieData;

}

САМОСТОЯТЕЛЬНО :

  1. Пользователь выбирает любимый цвет, он записывается в cookie, при следующем запуске страницы цвет текста или фона окрашивается в данный цвет.
  2. Выполнить задание преподавателя.