Технология сеанса ASP (Active Server Pages) используется для хранения личной информации пользователей во время разговоров. Переменные и объекты, определенные в объекте сеанса текущего пользователя, могут быть переданы между страницами, но не могут быть доступны другими пользователями в приложении. Информация о статусе.
Объект сеанса имеет очень важное свойство: тайм -аут, который используется для установки времени, которое объект сеанса может оставаться неактивным до того, как выйдет ресурс сеанса (значение по умолчанию составляет 20 минут). Когда значение времени, установленное к свойству тайм -аута, будет исчерпан, ресурс сеанса будет выпущен. Уничтожьте объект сеанса через атрибут тайм -аута, избегая генерируемого объекта сеанса на сервере без ограничений и защиты ресурсов сервера. Однако в реальной разработке сети часто встречается, что процесс подачи заявки не может быть завершен нормально из -за неудачи объекта сеанса и потери информации о статусе пользователя.
Хотя стратегия выпуска ресурсов с использованием атрибута тайм -аута заключается в целях защиты сервера, непредсказуемый сбой объекта сеанса стал недостатком в разработке приложений. Следовательно, при разработке фактического применения необходимо решить проблему сбоя объекта сеанса.
Традиционные решения
Все существующие решения предназначены для использования методов на стороне сервера для решения проблемы сбоя объекта сеанса. Типичные методы лечения разделены на две категории: лечение до неудачи и лечения после неудачи.
Обработка перед сбоем относится к передаче и другой обработке переменных до истечения срока действия объекта сеанса, чтобы предотвратить проблемы до этого. Типичным решением является установка таймера в приложении, запустить таймер за 5 минут до сбоя объекта сеанса, а затем сбросить различные переменные и объекты объекта сеанса. Этот метод добавляет дополнительную нагрузку на сервер, поскольку таймер должен поддерживаться в режиме реального времени на стороне сервера, а программа должна быть активна на протяжении всего сеанса.
Обработка после сбоя относится к побуждению пользователя обработать сразу после истечения срока действия объекта сеанса. Типичным решением является сохранение точек останова на стороне сервера после того, как объект сеанса не сработает, и побудить пользователя снова войти в систему и продолжать выполнять работу. Этот метод прост в реализации, но часто жалуется и критикует от конечных пользователей из-за неполного автоматического восстановления точек останова и сложности процесса повторного логина.
В ответ на недостатки вышеупомянутых двух типов решений, в практике программирования, автор объединяет характеристики объекта cookie и использует метод совместного доступа к переменным на уровне сеанса на клиенте, что не только избегает дополнительного спроса на сервер Ресурсы, но также решают проблему проблемы того, как точки останова не восстанавливаются автоматически, и это также устраняет проблему входа в систему.
Новое решение
Объект cookie - это небольшой пакет информации, которая хранит данные о текущем пользователе, который может быть передан между браузером и веб -сервером. В веб -приложениях файлы cookie предоставляют механизм отслеживания и записи каждого пользовательского местоположения. Одним из наиболее распространенных видов использования файлов cookie является сохранение времени и даты последней веб -страницы, которое будет посещать в веб -приложении или на URL, который будет посещать.
Обычно объекты cookie хранятся в подкаталоге Cookies в каталоге системы клиента Windows в качестве файлов. Информационные данные, хранящиеся в объекте cookie, могут храниться в течение длительного времени, поэтому переменные на уровне сеанса могут быть резервированы в объекте cookie. Объект печенья.
Объект cookie обладает следующими свойствами:
● истекает: установите дату, когда истекает объект cookie;
● Домен: определяет передачу объекта cookie как член, определяемый только атрибутом домена;
● Путь: определить путь доставки объекта Cookie;
● Безопасность: чтобы уточнить, безопасен ли объект cookie;
● Haskeys: возвращает, содержит ли объект cookie несколько значений.
Если свойство истекает объект cookie, явно не определена, объект cookie истекает в конце сеанса пользователя.
Читать и записать объекты через сбор и сбор запросов в ASP. Синтаксис для написания переменных в объект cookie выглядит следующим образом:
Response.cookies (cookie) [(key) | .atribute] = value
Где, файл cookie - это имя файла cookie, ключ указывает на словарь, атрибут - это конкретный характер cookie, а значение - это значение, назначенное файлу cookie. Например, чтобы создать cookie под названием MyHobby и присвоить его значение: баскетбол, используйте следующий синтаксис:
< %Response.cookies (myhobby) = баскетбол %>
Метод чтения объекта cookie на клиентской машине выглядит следующим образом:
Request.cookies (cookie) [(key) | .atribute]
Среди них файл cookie - это название запрошенного cookie, ключом является индекс значения подказки, а атрибут используется для обозначения атрибута cookie. Например: чтобы извлечь информацию из файла cookie, называемого MyHobby и написать ее значение на страницу, используйте следующий синтаксис:
< % Request.cookies (myhobby) %>
Следует отметить, что заголовок HTTP -страницы не может быть записан в объект cookie после того, как HTTP -страница была отправлена в запрашивающий браузер. Другими словами, информация Cookie не может быть отправлена в браузер после того, как любой идентификатор HTML отправляется в браузер.
Конкретная реализация
Ниже приводится реализация чата, основанная на технологии ASP, чтобы представить, как решить проблему сбоя переменной объекта сеанса.
● Начальная переменная на уровне сеанса перед входом в систему пользователя: Имя пользователя (используется для хранения имени пользователя входа в систему).
<%Сеанс (имя пользователя) =%>
// Инициализировать объект cookie
< % Response.cookies (имя пользователя) = %>
● Когда пользователь входит в систему, установите переменные на уровне сеанса и резервную копию объекта Cookie Cookie.
<%username = trim (request.for (имя пользователя))%>
< % Сеанс (имя пользователя) = имя пользователя %>
// резервное копирование переменных уровня сеанса к объекту Cookie Cookie Cookie
< % Response.cookies (имя пользователя) = имя пользователя %>
● Когда пользователь говорит, считывается переменная на уровне сеанса.
< % username = session (имя пользователя) %>
// Если у переменной истек, найдите объект cookie клиента
< %, если username = тогда %>
< % username = request.cookies (имя пользователя) %>
< %, если username = тогда %>
// Если пользователь входит в комнату чата без входа в систему, значение атрибута объекта cookie пусто. В настоящее время пользователю предложено иметь ошибку и обратиться к странице входа в систему пользователя
< %Response.redirect error.html %>
< % else %>
// восстановить эту переменную на уровне сеанса из объекта cookie
< % Сеанс (имя пользователя) = имя пользователя %>
< % end, если %>
< % end, если %>
● Когда пользователь выходит из чата, очистите объект на уровне сеанса и объект cookie.
<%Сеанс (имя пользователя) =%>
// Очистить значение атрибута объекта cookie, чтобы избежать входа в чат в чате без входа в систему
< % Response.cookies (имя пользователя) = %>
Приведенный выше код запускается и передается в среде Windows NT 4.0 + IIS 4.0 + IE 5.0.
Краткое содержание
Метод доступа к переменным на уровне сеанса в клиенте прост и практичен, и может эффективно избегать таких проблем, как принудительный логин пользователями.