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

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

Поговорив о данных уровня приложения, давайте перейдем к обсуждению данных, создаваемых на уровне пользователя. Как уже упоминалось, сеанс на самом деде представляет собой процесс взаимодействие пользователя с Web-приложением, представленный типом HttpSessionState. Для поддержки информации сеанса конкретного пользователя объект HttpApplication и любые другие типы System.Web.UI.Page могут использовать доступ к свойству Session. Классическим примером необходимости поддержки пользовательских данных является корзина покупателя: при подключении десятков посетителей к странице Интернет-магазина для каждого посетителя должен поддерживаться уникальный список товаров, которые этот посетитель собрался купить.

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

// Добавление/чтение сеансовой переменной для данного пользователя.

Session["DesiredCarColor"] = "зеленый";

String color = (string)Session["DesiredCarColor"];

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

‹%@ Application Language="C#" %

‹script runat="server"›

void Session_Start(objecl sender, EventArgs e) {}

void Session_End(object sender, EventArgs e) {}

‹/script›

Подобно типу HttpApplicationState, тип HttpSessionState может содержать любой тип, производный от System.Object, включая пользовательские классы. Предположим, например, что у нас есть новое Web-приложение (SessionState), которое определяет вспомогательный класс с именем UserShoppingCart.

public class UserShoppingCart {

 public string desiredCar;

 public string desiredCarColor;

 public float downPayment;

 public bool isLessing;

 public DateTime dateOfPickUp;

 public override string ToString() {

  return string.Format("Машина: {0}‹br›Цвет: {1}‹br›$ кредит: {2}‹br›" +

   "Аренда: {3}‹br›Доставка: {4}",

   desiredCar, desiredCarColor, downPayment, isLeasing,

   dateOfPickUp.ToShortDateString());

 }

}

В обработчике событий Session_Start() можно назначить каждому пользователю свой экземпляр класса UserShoppingCart.

void Session_Start(Object sender, EventArgs e) {

 Session["UserShoppingCartInfo"] = new UserShoppingCart();

}

При просмотре ваших Web-страниц пользователем вы можете взять экземпляр UserShoppingCart и заполнить его поля данными соответствующего пользователя. Предположим, что у вас есть простая страница *.aspx с набором элементов ввода, соответствующих каждому полю типа UserShoppingCart, и кнопкой (Button), используемой для установки введенных значений (рис. 24.5).

Рис. 24.5. Графический интерфейс пользователя для приложения с сеансовыми данными

Серверный обработчик события Click действует весьма прямолинейно (считывает значения элементов TextBox и отображает поступающие значения в поле типа Label).

protected void btnSubmit_Click(object sender, EventArgs e) {

 // Установка преференций текущего пользователя.

 UserShoppingCart u = (UserShoppingCart)Session["UserShoppingCartInfo"];

 u.DateOfPickUp = myCalendar.SelectedDate;

 u.desiredCar = txtCarMake.Text;

 u.desiredCarColor = txtCarColor.Text;

 u.downPayment = float.Parse(txtDownPayment.Text);

 u.isLeasing = chkisLeasing.Checked;

 lblUserInfo.Text = u.ToString();

 Session["UserShoppingCartInfo"] = u;

}

В Session_End() вы можете, например, сохранить значения полей UserShoppingCart в базе данных или выполнить какие-то иные действия. Так или иначе, если Вы запустите два или три экземпляра своего браузера, вы должны увидеть, что каждый пользователь может создать свою корзину покупателя, связанную с его уникальным экземпляром HttpSessionState.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

9.2.3.1 Обработка прерываний по отказу из-за недоступности данных

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

9.2.3.1 Обработка прерываний по отказу из-за недоступности данных Если процесс пытается обратиться к странице, бит доступности для которой не установлен, он получает отказ из-за отсутствия (недоступности) данных и ядро запускает программу обработки прерываний по отказу


Обновление базы данных с помощью объекта адаптера данных

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Обновление базы данных с помощью объекта адаптера данных Адаптеры данных могут не только заполнять для вас таблицы объекта DataSet. Они могут также поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище


Обработка баз данных

Из книги Эффективное делопроизводство автора Пташинский Владимир Сергеевич

Обработка баз данных Данные лучше всего хранить в базах данных (БД). Excel позволяет организовать и обрабатывать их. Простейшие БД – это таблицы, например списки клиентов с их определенными характеристиками. Самое простое, что можно с ними делать, – сортировать. Excel


Проверка введенных данных на уровне процессора баз данных

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

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


Обработка данных

Из книги Информатика: аппаратные средства персонального компьютера автора Яшин Владимир Николаевич

Обработка данных Подробно тема обработки данных уже обсуждалась в главе 6, а сейчас мы лишь кратко рассмотрим последние модификации в этой области. Сразу отмечу, что расширение возможностей по обработке данных в AS/400 — одно из приоритетных направлений нашей работы.Я уже


Экспорт данных из базы данных Access 2007 в список SharePoint

Из книги Справочник по JavaScript автора Коллектив авторов

Экспорт данных из базы данных Access 2007 в список SharePoint Access 2007 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML


Перемещение данных из базы данных Access 2007 на узел SharePoint

Из книги Моделирование бизнес-процессов с BPwin 4.0 автора Маклаков Сергей Владимирович

Перемещение данных из базы данных Access 2007 на узел SharePoint Потребности многих приложений Access 2007 превышают простую потребность в управлении и сборе данных. Часто такие приложения используются многими пользователями организации, а значит, имеют повышенные потребности в


Глава 6 Компьютерная организация данных и их обработка

Из книги VBA для чайников автора Каммингс Стив

Глава 6 Компьютерная организация данных и их обработка 6.1. Основные определения и понятия Понятия «информация» и «данные» являются базовыми, первичными понятиями в информатике, поэтому на протяжении многих лет существовала и существует в настоящее время проблема при их


Передача и обработка данных в html-файле

Из книги Введение в криптографию автора Циммерманн Филипп

Передача и обработка данных в html-файле Передача данных в html-файл:Передачу данных в html-файл можно произвести через URL-адрес. После адреса ставиться знак вопроса и после него параметр, который Вы хотите передать. Если этих параметров несколько, то между ними ставиться


Обработка информации, представленной пользовательским типом данных

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

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


О случайных числах и сеансовых ключах

Из книги автора

О случайных числах и сеансовых ключах Для генерации одноразовых симметричных сеансовых ключей PGP использует криптографически стойкий генератор псевдослучайных чисел (ГПСЧ)[11]. Если файл ПСЧ отсутствует, он автоматически создаётся и заполняется абсолютно произвольными


10.1. Чтение и обработка данных в sed

Из книги автора

10.1. Чтение и обработка данных в sed Общая схема работы редактора sed такова:   1. Редактор последовательно извлекает строки текста из файла или стандартного входного потока и копирует их в буфер редактирования.   2. Затем он считывает первую команду из командной строки или