Разработка интернет форума

Автор работы: Пользователь скрыл имя, 19 Октября 2013 в 16:41, дипломная работа

Описание

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

Содержание

ВВЕДЕНИЕ 4
1. Постановка задачи 6
2. Цель работы 9
2.1 Требования к системе 11
2.1.2 Выходные данные 14
3. Сравнение с аналогами 15
4. Выбор программно – технических средств реализации 30
5. Алгоритм работы web–сервиса 34
5.1 Структура базы данных 36
5.2 Описания алгоритмов для решения основных задач 39
5.2.1 Регистрация 39
5.2.2 Верификация 42
5.2.3 Аутентификация 42
5.2.4 Добавление категории 42
5.2.5 Добавление обзора 43
5.2.6 Добавление исправления 43
5.2.7 Голосование 43
5.2.8 Поиск 44
5.3 Описание алгоритма обработки запросов пользователя 46
5.4 Модель работы web–сервиса 47
6. Примеры работы Web–сервиса 50
ЗАКЛЮЧЕНИЕ

Работа состоит из  1 файл

Диплом.docx

— 4.33 Мб (Скачать документ)

5.2.7 Голосование

Этот процесс представляет собой голосование пользователя, за какой либо обзор или категорию. Пользователь может проголосовать за или против выбранного объекта и к рейтингу прибавляется или отнимается число, которое составляется на основе рейтинга пользователя. Чем выше рейтинг пользователя – тем больше число. Когда пользователь голосует, данные (за или против) и идентификатор объекта передаются в метод, отвечающий за голосование модуля DBAdapter, где происходит подсчет рейтинга пользователя и начисление рейтинга объекту. Результат сохраняется в базе данных.

5.2.8 Поиск

Этот процесс представляет собой поиск необходимой пользователю информации в системе. Пользователь должен ввести строку в поле поиска и нажать кнопку «Поиск». После этого  строка передается в метод, реализующий  поиск модуля DBAdapter. В методе происходит рекурсивный обход дерева категорий с поиском вхождений подстроки в строку. Сперва проверяется имя категории, потом ее описание, потом все обзоры в категории, после происходит просмотр подкатегорий (см. рис. 16).

Рис. 16 «Блок–схема алгоритма поиска»

5.3 Описание алгоритма обработки запросов пользователя

Процесс получения данных на запрос для пользователя происходит в 5 этапов (см. рис. 17):

  1. Формирование запроса и отправка его на сервер клиентом.
  2. Сервер получает запрос и проверяет его на правильность.
  3. Происходит генерация возвращаемой страницы или выполняется сторонняя задача (прим. отправка сообщений по электронной почте).
  4. Сгенерированная страница отправляется клиенту.
  5. Обработка ответа сервера клиентом, отображение полученной информации.

Рис. 17 «Схема алгоритма работы web–сервера»

За генерацию страницы отвечают сервер приложений, а за содержимое .jsp файлы (см. рис. 18). При их выполнении происходит построение web–страницы, путем считывания сервером приложений jsp кода, после происходит выявление методов jsp, которые вызывают методы классов, далее следует выполнение методов и генерация конечной страницы.

Рис. 18 «Процесс генерации  страницы»

5.4 Модель работы web–сервиса

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

Представим общую схему работы страницы и ее обработчиков, и также модулей для работы с базой данных и сессиями (см. рис. 18).

Рис. 18 «Общая модель работы страницы перед генерацией выходной»

Модель должна состоять из четырех основных элементов:

  1. Страница (Page).
  2. Обработчик страницы (Page Handler).
  3. Модуль обмена данными с базой данных предоставляющий API (DBAdapter).
  4. Модуль обмена данными с сессией (SessionAdapter).

Подробно  рассмотрим каждый из элементов.

 

5.4.1 Страница (Page)

Страница  представляет собой HTML+CSS код с дополнительными вызовами JSP методов. Она должна удовлетворять следующим требованиям:

– Корректно отображаться на web–браузере конечного клиента;

– Содержать методы для передачи данных обработчику страницы, если это необходимо;

– При необходимости вызывать методы обработчика страницы, которые вызывают методы из SessionAdapter или DBAdapter, или принимают и возвращают данные;

5.4.2 Обработчик страницы (Page Handler)

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

Требования  по реализации класса:

– Все поля класса должны быть инкапсулированы.

– Все исключения необходимо обрабатывать и в случае сбоя выводить в логгер или на страницу.

– Для определенной страницы описывается свой файл обработчика

5.4.3 Адаптер к базе данных (DBAdapter)

Модуль обмена данными  с базой данных представляет собой  набор методов, которые предназначены  для обмена данными с базой  данных.

Модуль должен предоставлять  следующее API:

– Регистрация пользователя;

– Верификация пользователя;

– Аутентификация пользователя;

– Выход пользователя;

– Голосование за обзор (+/–);

– Голосование за категорию (+/–);

– Создание обзора;

– Создание категории;

– Создание исправления;

– Редактирование обзора;

– Редактирование категории;

– Запрос подкатегорий;

– Запрос обзоров в категории;

– Запрос данных обзора;

– Запрос данных категории;

– Запрос данных пользователя;

– Установить группу пользователю;

– Написать письмо пользователю;

– Пожаловаться на пользователя;

– Запрос  текста последней ошибки;

По ходу развития web–сервиса структура базы данных и API модуля будут расширяться. MongoDB позволяет быстро и легко расширять структуру базы данных.

5.4.5 Адаптер к сессии (SessionAdapter)

Модуль  обмена данными с сессией представляет собой набор методов, которые  предназначены для чтения/записи в ассоциативный массив сессии. Сессия из себя представляет ассоциативный массив типа Ключ–Значение.

Модуль  должен предоставлять следующее  API:

– Хранение SessUID (зашифрованный идентификатор пользователя);

– Хранения Логина пользователя;

– Хранение текущей просматриваемой категории;

– Хранение текущего просматриваемого обзора;

Дальнейшее  расширение этого модуля будет после расширения web–сервиса. Планируется добавить API для постоянного хранения текущего рейтинга, время жизни сессии, новые комментарии, непрочитанные сообщения и др.

6. Примеры работы Web–сервиса

Приведем  примеры разработанного web–сервиса:

– Главная страница (см. рис. 19);

– Процесс регистрации (см. рис. 20);

– Успешная регистрация (см. рис. 21);

– Неуспешная регистрация (см. рис. 22);

– Процесс аутентификации;

– Успешная аутентификация (см. рис. 23);

– Неуспешная аутентификация (см. рис. 24);

– Процесс добавление категории;

– Добавление категории (см. рис. 25);

– Результат добавления категории (см. рис. 26);

– Процесс добавления обзора;

– Добавление обзора (см. рис. 27);

– Результат добавления обзора (см. рис. 28);

– Результат добавление обзора в категории (см. рис. 29);

 

На главной  странице web-сервиса отображается приветственное сообщение и небольшое описание сервиса.

Рис. 19 «Главная страница web–сервиса»

Пользователь может зарегистрироваться на web-сервисе. Для этого ему необходимо перейти по ссылке «Регистрация» с любой открытой страницы и заполнить необходимые поля. После заполнения нажать кнопку «Зарегистрироваться». Форма регистрации приведена на Рис. 20.

Рис. 20 «Регистрация пользователя на web–сервисе»

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

Рис. 21 «Успешная регистрация  пользователя»

Если введенные пользовательские данные не удовлетворяют хотя бы одному требованию, то пользователь не будет  зарегистрирован и оповещен о  допущенной ошибке с предложением исправить  ее (см. рис. 22).

Рис. 22 «Неуспешная регистрация  пользователя»

При успешной аутентификации, пользователь будет перенаправлен  на главную страницу (см. рис. 23).

Рис. 23 «Успешная аутентификация пользователя»

Если пользователь ввел логин  или пароль, указанный при регистрации  неправильно, то аутентификация будет  неуспешной. Пользователь будет оповещен об этом (см. рис. 24).

Рис. 24 «Неуспешная аутентификация пользователя»

Как только пользователь успешно  аутентифицировался в системе, ему  открываются дополнительные возможности, а именно создание обзора или категории. Форма создания категории приведена  на рис. 25.

Рис. 25 «Добавление категории»

После создания категории, она  мгновенно появляется в структуре  категорий и ее можно просматривать. Результат после добавления категории  приведен на рис. 26.

Рис. 26 «Просмотр добавленной  категории»

Также пользователь после  успешной аутентификации может создавать  обзоры. Форма создания обзора приведена  на рис. 27.

Рис. 27 «Добавление обзора»

После создания обзора, он мгновенно  появляется в категории и его  можно просматривать. Результат  после добавления категории приведен на рис. 28.

Рис. 28 «Просмотр добавленного обзора»

Также обзоры будут отображаться в категории, к которой они  принадлежат (см. рис. 29).

Рис. 29 «Просмотр добавленного обзора в категории»

ЗАКЛЮЧЕНИЕ

В результате выпускной квалификационной работы нам удалось разработать web-сервис, содержимое которого содержит  «Обзоры»  на большое количество различных тематик и гибкий в расширении. Нами были разработаны практические методы, разрешающие проблему достоверности информации.

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

Проведя работу по разработке web-сервиса можно сделать нижеперечисленные выводы:

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

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

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

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Ключарев А.А., Хименко В.И. Методические указания к выполнению дипломного проекта "Основные положения по дипломному проектированию для специальностей 23010565 и 01050365" / А.А. Ключарев, В.И. Хименко; СПБГУАП, 2009 - 30 c. 
  2. MongoDB. // Материал из Википедии — свободной энциклопедии. — Режим доступа: http://ru.wikipedia.org/wiki/MongoDB.
  3. JSP. // Материал из Википедии — свободной энциклопедии. — Режим доступа: http://ru.wikipedia.org/wiki/JSP
  4. GlassFish. // Материал из Википедии — свободной энциклопедии. — Режим доступа: http://ru.wikipedia.org/wiki/GlassFish
  5. MongoDB Docs. // Материал с сайта разработчика базы данных. — Режим доступа: http://docs.mongodb.org/manual/
  6. Java Docs. // Материалы Oracle. — Режим доступа: http://docs.oracle.com/
  7. Mongo Book. // Материал The Little MongoDB Book by Karl Seguin. . — Режим доступа: http://jsman.ru/mongo-book/
  8. Васильев А. Н. Java. Объектно-ориентированное программирование. / А. Н. Васильев. — Питер. 2011. — 400с.
  9. HtmlBook. // Материалы сайта htmlbook. — Режим доступа: http://htmlbook.ru/
  10. W3Cschools. // Материалы сообщества W3C. . — Режим доступа: http://www.w3schools.com/

 

Приложение А

(обязательное)

Листинг index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="makeup.css" type="text/css" media="screen, projection" />

<title>Overview System</title>

</head>

<body>

<div id="wrapper">

<header id="header">

Logo

</header><!-- #header-->

<nav id="nav">

</nav><!-- #nav-->

<section id="middle">

<div id="container">

<div id="content">

<jsp:useBean id="MyBean" scope="session" class="OverViewPackage.MongoTest" />

<h1>

<jsp:getProperty name="MyBean" property="mText" />

</h1>

</div><!-- #content-->

</div><!-- #container-->

<aside id="sideLeft">

</aside><!-- #sideLeft -->

<aside id="sideRight">

form action="servlet-parameters" method="get">

<table>

<tr>

<td>

Логин:

</td>

<td>

<input name="login" type="text">

</td>

</tr>

<tr>

<td>

Пароль:

</td>

<td>

<input name="pass" type="text">

</td>

</tr>

<tr>

<td>

<input name="go" type="submit" value=" Войти ">

</td>

<td align="right">

<a href="Registration.jsp" >Регистрация</a>

</td>

</tr>

</table>

</form>

</aside><!-- #sideRight -->

</section><!-- #middle-->

</div><!-- #wrapper -->

<footer id="footer">

</footer><!-- #footer -->

</body>

</html>

 

Приложение Б

(обязательное)

Листинг makeup.css

 

* {

margin: 0;

padding: 0;

color:#8b4914;

}

html {

height: 100%;

 

}

header, nav, section, article, aside, footer {

display: block;

}

body {

Информация о работе Разработка интернет форума