Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_Женя.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
272.38 Кб
Скачать

Отчет по лабораторной работе «Система учета прохода в здание»

Работу выполнил студент группы № 6081/1 Губанов Е.А.

Работу принял преподаватель Стручков Игорь Вячеславович

Задание

Разработка программы “Система учета прохода в здание” в среде NetBeans, которая включает в себя операции: проверка допуска в здание, запрос количества людей в здании, присутствие конкретного человека и ведение журнала посещений. Сериализуемый объект – смарт-карта (имя, номер). В дополнительную часть задания входило создание web-услуги, позволяющей полное клиентское взаимодействие, с помощью обмена данными JSON формата.

Описание программы

В ходе работы была реализована программа “Система учета прохода в здание”, визуальная часть программы представляет собой jsp-страницу, которая содержит в себе html-разметку и java-код, позволяющий использовать операции удаленного объекта. Приложение написано таким образом, что все действия и результаты выводятся на главной странице, это реализовано с помощью javascript и библиотеки jQuery. Так же с помощью web-cервиса, можно подсоединить любое количество клиентов, которые могут взаимодействовать с сервисом одновременно. Данные сервис был реализован с использованием JSON сообщений.

UML-диаграмма

Web-сервис

Для создания дополнительного модуля взаимодействия клиента с сервером, была изменена аннотация Stateless на Stateful. Это было сделано для того, чтобы можно было хранить сеансовое состояние. С помощью него мы можем отслеживать подключившихся пользователей.

Взаимодействие с клиентом происходит в два этапа:

  1. Клиент обращается к сервису, используя GET/POST запрос, и передаёт свою пару логин/пароль. В случае аутентификации, сервер отдаёт токен (ключ), для дальнейшего взаимодейстия и обмена данными. При неправильной паре логин/пароль сервер выдаёт ошибку.

  2. Последующий обмен происходит с помощью полученного ключа.

Для общения с сервером была создана специальная страничка connect.jsp. Через которую и проходят все обращения к серверу.

Протокол взаимодействия с сервером.

Запрос

Ответ в формате JSON

Для аутентификации и получения токена, обращение к серверу происходит по адресу: http://localhost:8080/AccessInBuilding-war/connect.jsp?auth_login=client& auth_pwd=pwd_client . В адресе указываются логин и пароль клиента.

{“ token”: “token_key”} – при корректной аутентификации

{error”: ”202”} – ошибка, пара логин/пароль не корректны

Количество людей в здании: http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=act

{“cnt”: “n”} – количество людей, например, {“cnt”: “3”}

{“error”: “303”} – ошибка, сервер не отвечает

Проверка наличия пользователей в здании: http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=users

{“users”: “data”} – возвращается таблица пользователей в здании - data.

{“error”: “404”} – ошибка, сервер не отвечает

Лог посещений здания: http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=logs

{“ logs”: “data”} – возвращается таблица логов посежений всех пользователей - data.

{“error”: “505”} – ошибка, сервер не отвечает

Добавить пользователя в БД: http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=add&name=name&code=code

В дополнительных параметрах name и code мы указываем имя и код сотрудника соответственно.

{“ data”: “done”} – возвращается done при успешном занесении в базу.

{“error”: “101”} – ошибка, сервер не отвечает

Проверка допуска в здание по имени/коду: http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=add&name=name&code=code

В дополнительных параметрах name и code мы указываем имя и код сотрудника соответственно.

{“ data”: “user_id”} – при нахождении пользователя в базе, возвращается его user_id (идентификатор пользователя).

{“error”: “101”} – ошибка, сервер не отвечает.

Изменение статуса положения пользователя (в здании/нет в здании): http://localhost:8080/AccessInBuilding-war/connect.jsp?token= token_key&type=update_act&id=user_id&act=act

В дополнительных параметрах user_id и act мы указываем идентификатор пользователя и новый статус сотрудника соответственно.

{“ data”: “done”} – возвращается done при успешном изменении статуса.

{“error”: “101”} – ошибка, сервер не отвечает

С помощью данного протокола любой клиент, написанный на любом языке программирования, может настроить полное взаимодействие с сервисом.

Серверная часть, разработанная на PHP.

Визуальная часть выполнена на сто процентов совпадающая с визуальным выводом сервера. Тут даже используюстя стили, javascript и библиотеки, взятые на прямую с сервера. Только javascript js.js, управляющий выводом сервисов не экран, был настроен для взаимодействия с сервером (через файл connect.php). Для этого был создан класс ConnectLogin(). Который конектится к серверу, аутентифицируется, сохраняет сессионные куки от сервера и сохраняет токен переданный от сервера в своих куках. После чего, по средствам токена (ключа), происходит динамическое обращение к серверу.

Данный класс содержит в себе 4-е метода:

  1. ConnectLogin() - Автоматическое соединение с сервером и получение токена. Если токен получен, то будет исполь он, если нет, то по средствам функции curl производиться соединение и обмен с сервером. Это происходит при объявлении класса.

  2. Autorization() – метод для авторизации с сервером. Вызывается в ConnectLogin().

  3. getData($type="act", $opt=array()) – метод для обмена информации с сервером по средствам curl.

  4. disconect() – деструктор класса. Удаляет токен.

Вывод на экран полученных данных происходит динамически по средствам технологии AJAX и использованием бибилиотеки jQuery.

  1. Инструкция для пользователя

  1. Добавить пользователя в систему:

Кнопка “Добавить нового пользователя”, выводит на экран форму. В появившейся форме вводим «Имя Пользователя» (обязательный параметр) и «Код» (не обязательный параметр), нажимаем кнопку “Добавить пользователя”. Если операция прошла успешно, то появляется сообщение “Пользователь добавлен” и изменяется цвет формы, если произошла ошибка, то выводится сообщение об ошибке.

  1. Проверка допуска в здание по имени/коду:

В строке поиска можно ввести «Имя Пользователя» или его «Код» и нажать кнопку “Найти”. Результат поиска появляется под строкой поиска.

  1. Количество людей в здании:

Выводится автоматически при загрузке приложения, находится под строкой поиска.

  1. Проверка наличия пользователей в здании:

Выводится автоматически при загрузке приложения, находится под строкой количества людей в здании.

  1. Лог посещений здания:

Кнопка “Лог посещаемости”: при нажатии разворачивает лог посещений здания (дата, имя и примечание).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]