Розробка веб-системи продажі білетів театру
Міністерство освіти і науки, молоді та спорту України
Харківський національний університет радіоелектроніки
Факультет |
Комп’ютерної інженерії та управління |
(повна назва) |
Кафедра |
Електронних обчислювальних машин |
(повна назва) |
КОМПЛЕКСНИЙ КУРСОВИЙ ПРОЕКТ
ПОЯСНЮВАЛЬНА ЗАПИСКА
ГЮІК.ХХXXXX.ХХХ ПЗ |
(позначення документа) |
Розробка веб-системи |
продажі білетів театру |
(тема проекту) |
Студент гр. |
КІ-08-2 |
Даніленков Д.О. | |||
(шифр групи) |
(підпис) |
(прізвище, ініціали) | |||
Керівник проекту |
Шамраєв А.А. | ||||
(підпис) |
(посада, прізвище, ініціали) | ||||
Допускається до захисту
Зав. кафедри ЕОМ |
Руденко О.Г. | ||
(підпис) |
(прізвище, ініціали) |
2012 р.
Харківський національний університет радіоелектроніки
Факультет |
КІУ |
Кафедра |
ЕОМ | ||||||
Спеціальність |
7.05010201 — Комп’ютерні системи та мережі | ||||||||
(номер, назва) | |||||||||
ЗАТВЕРДЖУЮ: | |||||||||
Зав. кафедри |
|||||||||
(підпис) | |||||||||
“____”__________________ 2012 р. | |||||||||
ЗАВДАННЯ
НА ДИПЛОМНИЙ ПРОЕКТ (РОБОТУ)
студентові Даніленкову Дмитру Олеговичу | |||||||||
(прізвище, ім’я, по батькові) | |||||||||
1. Тема проекту (роботи) |
Розробка веб-системи продажі білетів театру | ||||||||
2.
Термін здачі студентом |
|||||||||
3. Вихідні дані до проекту |
|||||||||
4. Зміст пояснювальної записки (перелік питань, які належить розробити) | |||||||||
6. Дата видачі завдання
Керівник проекту (роботи) |
Шамраєв А.А. | ||||
(підпис) |
(посада, прізвище, ім'я, по батькові) | ||||
Завдання прийняв до виконання |
|||||
(підпис студента-дипломника) | |||||
КАЛЕНДАРНИЙ ПЛАН
№ п./п. |
Назва етапів дипломного проекту (роботи) |
Термін |
Примітка |
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
10 |
|||
11 |
|||
Студент |
|||
(підпис) | |||
Керівник проекту (роботи) |
|||
(підпис) | |||
РЕФЕРАТ
Записка пояснювальна: 41 с., малюнків 4, джерел 5.
Метою даного курсового проекту є розробка програми, що надає собою доступ до покупки квитків театру в інтернеті. Додаток заснований на технології Java EE і активно використовує його можливості по створенню розподілених інформаційних систем
ПЕРЕЛІК КЛЮЧОВИХ СЛІВ
JAVA, JAVA EE, БАЙТ-КОД, JVM, СЕРВЛЕТ, JSP, БІБЛІОТЕКА ТЕГІВ, БАЗА ДАНИХ, HTML
ABSTRACT
Explanatory note: 41 p., Figures 4, 5 sources.
The purpose of this course project is to develop a program that provides an access to purchase tickets online theater. Application based on Java EE technologies and actively uses its capabilities to create a distributed information systems
KEY WORDS
JAVA, JAVA EE, bytecode, JVM, Servlet, JSP, Tag LIBRARY, DATABASE, HTML
СОДЕРЖАНИЕ
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ, СОКРАЩЕНИЙ И ТЕРМИНОВ
DAO – Data Access Object - это объект, который предоставляет абстрактный интерфейс к какому-либо типу базы данных или механизму хранения
ER – Entity-Relationship – сущность-связь
ORM – Object-relational mapping – объектно-реляционное отображение
ВВЕДЕНИЕ
На сегодняшний день транзакционные приложения корпоративного уровня занимают значительное место в современных информационных системах.
К основным преимуществам распределённых приложений относят:
- Распределение функции вычислительной системы между несколькими независимыми компьютерами в сети, что позволяет упростить обслуживание вычислительной системы. В частности, замена, ремонт, модернизация или перемещение сервера не затрагивают клиентов.
- Централизированое хранение данных на компьютере-сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.
- Использование ресурсов одного сервера клиентами с разными аппаратными платформами, операционными системами.
Приоритетными задачами при проектировании систем подобного уровня являются повышение скорости, улучшение безопасности и надежности серверных технологий.
Платформа Java Enterprise Edition (Java EE), основанная на языке программирования Java, обеспечивает компонентно-базированный подход к разработке, созданию, сборке и развертыванию корпоративных приложений.
Платформа вобрала в себя такие
преимущества языка Java, как кроссплатформенность,
объектно-ориентированный
Платформа Java EE предлагает многоуровневую распределенную модель приложения, возможность повторного использования компонентов, интегрированный обмен данными на базе Extensible Markup Language (XML), единую модель безопасности и гибкое управление транзакциями.
Платформа Java EE использует многоуровневую распределенную модель приложения. Логика приложения делится на компоненты в соответствии с функциями, и разные компоненты приложения, составляющие приложение Java EE, устанавливаются на разных машинах в зависимости от того, к какому слою в многоуровневой среде J2EE этот компонент относится.
Компоненты Java EE:
- Компоненты клиентского слоя, выполняющиеся на клиентской машине.
- Компоненты Web-слоя, выполняющиеся на сервере Java EE.
- Компоненты бизнес-слоя, выполняющиеся на сервере Java EE.
- Программное обеспечение слоя Enterprise information system (EIS), выполняющееся на сервере EIS.
Таким образом платформенно-
1 АНАЛИЗ РАБОТЫ
1.1 Ключевые понятия
Клиент-сервер — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.
HTTP — протокол прикладного уровня передачи данных (изначально в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей(клиент), которые инициируют соединение и посылают запрос, и поставщиков(сервер), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.
Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
Сервлет — это класс языка Java, используемый для расширения возможностей серверов, к которым обращаются приложения, применением программной модели "запрос-отклик". Хотя сервлеты могут откликаться на многое типы запросов, они обычно применяются для расширения приложений, обслуживаемых серверами Web. Для таких приложений технология Java Servlet определяет классы сервлетов HTTP.
HTML — стандартный язык разметки
документов, интерпретируется программой-
Страница JSP — это текстовый документ, который содержит два типа текста: статические шаблонные данные, которые могут быть представлены в любом текстовом формате, таком как HTML, SVG, WML и XML, и элементы JSP, которые конструируют динамическое содержимое.
1.2 Описание задачи
Необходимо создать
серверное приложение предоставляющее
пользователям удобный
Также следует ограничить доступ пользователей к части приложения, отвечающей за добавление новых представлений, реализовать процедуру авторизации, которая обеспечит доступ к закрытой части приложения со стороны администраторов.
Рассмотрев данную задачу более подробно, можно сказать, что в программной реализации должны быть решены такие задачи:
- реализовать поддержку работы с базой данных для хранения всей служебной информации
- организовать корректную обработку пользовательской информации, предусмотреть валидацию данных
- предусмотреть обработку ошибок и вывод сообщений пользователю
2 ТЕХНИЧЕСКАЯ РЕАЛИЗАЦИЯ
2.1 Выбор технологии реализации
Программа написана в среде программирования Eclipse на языке программирования Java с использованием инструментов платформы Java EE, в качестве Web-контейнера был выбран сервер Apache Tomcat, для поддержки функций хранения данных была выбрана СУБД MySQL.
Язык Java включает в себя самую полную
поддержку объектно-
MySQL – свободная объектно-реляционная система управления базами данных, которая поддерживает большую часть стандарта SQL и предлагает множество современных возможностей:
- комплексные запросы
- внешние ключи
- триггеры
- представления (views)
- транзакционная целостность
- многоверсионное управление параллельным доступом
Также, возможности MySQL могут быть расширены пользователем путём добавления новых
- функций
- типов данных
- агрегатных функций
2.2 Анализ работы с сервлетами и JSP – страницами
Сервлет — это диспетчер процесса. Он находится на Web-сервере и обрабатывает входящие запросы и исходящие ответы.
На заре Web-разработки многие профессиональные программисты должны были определять, как эффективно использовать сервлеты. Наиболее часто это приводило к бурному росту числа сервлетов на сервере. На каждый тип запроса приходился один сервлет.
Это быстро стало неудобным, поэтому программисты начали включать в свои сервлеты условную логику, которая делала их более адаптируемыми, обрабатывающими несколько типов запросов. Со временем это тоже стало приводить к плохому коду. Существует лучший способ, называемый сервлетом действия (action servlet), эта идея эффективно использована в популярных библиотеках сервлетов, например в проекте Jakarta Struts.
Сервлет действия не имеет условной логики, выбирающей поведение сервлета. Вместо этого имеются действия (определенные программистом классы), которым сервлет передает полномочия для обработки запросов различного типа. Это намного лучший объектно-ориентированный подход, чем использование нескольких сервлетов или нескольких условий if в одном сервлете.
Cервлет почти не имеет ничего
общего с представлением. Но без
просмотра каких-либо
Таким образом работу приложения будет осуществлять сервлет действия, а за графическое отображение результатов на экране отвечают jsp-страницы.
3 СТруктура приложения
3.1 Структура базы данных
Рисунок 3.1 – Структура базы данных
На основе данной базы данных будут сформированы классы, которые определяют только необходимые поля и getter/setter-методы для этих полей и конструктор по умолчанию, чтобы этот класс соответствовал спецификации JavaBeans.
3.2 Разработа структуры
На основе модели данных формируется слой доступа к нижеуказанной модели. В зависимости от типа реализации может быть несколько имплементаций модели данных. Каждая имплементация через ORM работает с БД, ORM(Object relational mapping) представлен технологией компании JBoss – Hibernate. Также, для упрощения работы используется фреймворк Spring. У каждой имплементации слоя доступа есть свой сервис, то есть набор методов работы с БД, а у каждого сервиса, в зависимости от необходимости, может быть разная имплементация – Service Impl. Серверный слой приложения обращается с помощью протокола http через servlets + jsp к сервисному слою, а клиентская часть общается с БД через серверную. Далее следует ER(Entity-relationship – сущность-связь) диаграмма.
Рисунок 3.2 Взаимодействие компонентов программы
Рисунок 3.2 Взаимодействие компонентов программы
3.3 Разработка сервлета действия
Информация от компьютера клиента
отправляется серверу в виде объекта
запроса типа HttpServletRequest. Данный
интерфейс является
производным от интерфейса ServletRequest. Используя методы
интерфейса ServletRequest, можно получить
много дополнительной информации, в том
числе и о сервлете и деталях протокола
HTTP, закодированной и упакованной
в запрос:
String getCharacterEncoding() – определение символьной кодировки запроса;
String getContentType() – определение MIME-типа (Multipurpose Internet Mail Extension) пришедшего запроса;
String getProtocol() – определение названия и версии протокола;
String getServerName(), getServerPort() – определение имени сервера, принявшего запрос, и порта, на котором запрос был принят сервером соответственно;
String getRemoteAddr(), getRemoteHost() – определение IP-адреса клиента, от имени которого пришел запрос, и его имени соответственно;
String getRemoteUser() – определение имени пользователя, выполнившего запрос;
ServletInputStream getInputStream(), BufferedReader getReader() – получение ссылки на поток, ассоциированный с содержимым полученного запроса. Первый метод возвращает ссылку на байтовый поток ServletInputStream, а второй – на объект BufferedReader. В результате можно прочитать любой байт из полученного объекта-запроса. Если метод getReader() был вызван после вызова getInputStream() для этого запроса, то генерируется исключение IllegalStateException и наоборот.
При обращении к серверу, как правило, передаются параметры и их значения. Для разбора параметров и извлечения их значений применяются методы:
String getParameter(String name) – определение значения параметра по его имени или null, если параметр с таким именем не задан;
String[] getParameterValues(String name) – определение всех значений параметра по его имени;
Enumeration getParameterNames() – определение ссылки на список имен всех параметров через объект типа Enumeration.
Непосредственно в интерфейсе HttpServletRequest объявлен ряд методов, позволяющих манипулировать содержимым запросов:
void setAttribute(String name, Object ob) – установка значения атрибута компонента, являющегося внутренним параметром для передачи информации между компонентами приложения, например от сервлета к странице JSP или другому сервлету;
Enumeration getAttributeNames() – извлечение перечисления имен атрибутов;
Object getAttribute(String name) –
извлечение значения
Cookie[] getCookies() – извлечение массива cookie, полученного с запросом. Файл cookie – маленький файл, сохраняемый приложением на стороне клиента;
String getMethod() – определение имени метода доступа к ресурсам, на основе которого построен запрос;
String getQueryString() – извлечение строки HTTP-запроса.
В следующем примере рассматривается применение некоторых методов интерфейса HttpServletRequest для получения данных о запросе, посылаемом методом GET и генерации ответа клиенту.
public class ServletDownload extends HttpServlet{
private static final int BYTES_DOWNLOAD = 1024;
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException{
response.setContentType("text/
response.setHeader("Content-
"attachment;filename=
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/
int read=0;
byte[] bytes = new byte[BYTES_DOWNLOAD];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes))!= -1){
os.write(bytes, 0, read);
}
os.flush();
os.close();
}
}
Пример 3.3 – Сервлет действий (файл ServletDownload.java)
3.4 Разработка внешнего вида приложения
Как было указано выше, приложений должно иметь простой, стильный дизайн, выполненный при помощи jsp-страниц. С этой целью была разработана необходимая таблица стилей, общие части страниц (такие как хедер и футер), были вынесены в специальные jsp-страницы, которые подключаются к каждой странице приложения. Стоит отдельно отметить, что для вывода документа лабораторной работы в формате .doc была применена технология построения пользовательских тегов, позволяющая выделить java-код из jsp-страницы в соответствующие классы. Код всех страниц, таблицы стилей, а также обработчик пользовательского тега вынесены в ПРИЛОЖЕНИЕ «ЛИСТИНГ ПРОГРАММЫ»
4 Интерфейс и работа программы
Как отмечалось в разделе «АНАЛИЗ РАБОТЫ» программное средство должно иметь удобный интерфейс, производить обработку ошибок и сообщать об этом пользователю.
Для начала работы с
приложением необходимо обратится
к сервлету по адресу http://localhost:8080/Theatre/
Рисунок 4.1 – Стартовая страница index.html
При этом появится список всех представлений, хранящихся в базе данных, при выборе конкретной дисциплины и лабораторной из списка появится окно с полным содержанием.
Для заказа билета переходим на страницу ticket.jsp
Рисунок 4.2 – Заказ билета
Для связи с администрацием сайта используется форма обратной связи
Рисунок 4.3 – Форма обратной связи
Для доступа к закрытой части
приложения необходимо в адресной строке
браузера ввести адрес http://localhost:8080/
4 ТЕСТИРОВАНИЕ
4.1 Технические требования
При написании данной курсовой работы в качестве сервера использовался компьютер со следующими характеристиками:
- процессор Pentium(R) Dual-Core 2.1 GHz
- оперативная память DDR2 SDRAM 3072 Mb
- операционная система Windows 7
- видеопамять 1024 Mb
Для корректного функционирования приложение требуется следующее ПО:
- Web-контейнер Apache Tomcat 7
- СУБД MySQL 9.0
Таким образом компьютере-сервере должно быть установлено и настроено соответствующее ПО
Для компьютера-клиента
необходимым требованием
4.2 Тестирование программы
В ходе тестирования программы было обнаружено и исправлено несколько синтаксических, а также несколько логических ошибок. Одной из них была неправильная кодировка при передаче русских символов в сообщении между сервером и клиентом, но ее удалось устранить. Следует заметить, что обнаружение и исправление такой ошибки было просто необходимым условием для работы всего проекта.
Тестирование визуального
ВЫВОДЫ
В данной курсовой работе был проведен анализ литературных источников на предмет изучения платформы Java EE. Детально были рассмотрена вопросы создания и функционирования сервлетов и jsp-страниц, развёртывания готовых приложений на сервере
Разработанное программное средство может использоваться в коммерческом процессе с целью облегчения покупки и продажи билетов в театре. Приобретенные навыки могут быть использованы для создания более крупных проектов, связанных с клиент- серверными технологиями.
В ходе выполнения данной курсовой работы были углублены навыки программирования на языке Java, изучены и опробованы практически инструменты технологии Java EE, получены навыки работы со средой разработки Eclipse.
ПЕРЕЧЕНЬ ССЫЛОК
- Брюс Эккель. Философия Java. 4 е издание.: СПб.: Питер, 2009. – 637 с
- Хорстман К. С., Корелл Г. Библиотека профессионала JAVA 2. Том 1. Основы. 7-е издание : Пер. с англ. — М. - СП - К.: Издательский дом "Вильяме", 2007. — 807 с.:
- Хорстман К. С., Корелл Г. Библиотека профессионала JAVA 2. Том 2. Тонкости программирования. 7-е издание : Пер. с англ. — М.: Издательский дом "Вильяме", 2002. — 1166 с.:
- Сью Шпильман JSTL. Практическое руководство для JSP-программистов Издательство: КУДИЦ-Образ, 2004 г.
- Брюс У. Перри. Java сервлеты и JSP. Сборник рецептов Издательство: КУДИЦ-Образ, 2006 г.
ПРИЛОЖЕНИЕ А
Листинг index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/
<html xmlns="http://www.w3.org/1999/
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Time 2 show</title>
<link rel="stylesheet" href="css/style.css" />
<script src="js/jquery-1.7.1.min.js"><
</head>
<body>
<div id="header-line"> </div>
<div id="wraper">
<div id="left-column">
<div class="play">
<div class="time">
Small Scene<br />
Theater 19<br />
11 Jan 2012
</div>
<div class="description">
<img src="images/promodv01.jpg" />
<h2><a href="single.jsp">"Dyadya Vanya"</a></h2>
<p>Play "Dyadya Vanya"</p>
</div>
</div>
<div class="clear"> </div>
<div class="play">
<div class="time">
Big Scene<br />
Theater 19<br />
21 Jan 2012
</div>
<div class="description">
<img src="images/image2.jpg" />
<h2><a href="single.jsp">"Captains of sand"</a></h2>
<p>Captains of Sand</p>
</div>
</div>
<div class="clear"> </div>
<div class="play">
<div class="time">
Big Scene<br />
Theater 19<br />
21 Jan 2012
</div>
<div class="description">
<img src="images/promoviy01.jpg" />
<h2><a href="single.jsp">"Viy"</a></
<p>Gogol. Viy</p>