Разработка сайта на языке Java по заказу номера в отеле
Java как объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Возможные применения для сервлетов. Перенаправление запросов, классы Driver Manager, Connection. Страница логина, регистрации. Пользователи и заявки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.05.2016 |
Размер файла | 4,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
[Введите текст]
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УО «ГРОДНЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Я. КУПАЛЫ»
Факультет математики и информатики
Кафедра теории функции, функционального анализа и прикладной математики
Шумейко Александр Сергеевич
Разработка сайта на языке Java по заказу номера в отеле
Курсовая работа студента 3 курса 2 группы
Гродно, 2014
ВВЕДЕНИЕ
Тема данной курсовой работы - разработка сайта с использованием средств языка программирования Java.
Java -- это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируется в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры. Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Сервлеты
Сервлет - это Java программа, которая выполняется WEB-сервром или сервером приложений (Application Server) и реализует интерфейс javax.servlet.Servlet. Сервлеты подобны CGI-приложениям и предназначены для обработки запросов Internet-клиентов или браузеров и ответов на эти запросы. Как и в случае с CGI-приложениями, взаимодействие с сервлетами происходит через HTTP или защищенный HTTPS протоколы. Сервлеты являются эффективным заменителем CGI скриптов. Они дают дорогу к генерации динамических документов, которые легче писать и быстрее выполнять. Сервлеты также обходят проблему программирования серверов с платформозависимыми интерфейсами прикладного программирования: они разрабатываются на стандартном расширении Java - Java Servlet API.
Сервлеты могут принимать запросы отосланние как методом GET, так и POST. Для обработки запросов полученных через эти методы используются прегруженные методы интерфейса Servlet:
doPost(HttpServletRequest request, HttpServletResponse response) и doGet(HttpServletRequest request, HttpServletResponse response) соответственно.
Параметр request используется для получения параметров переданных сервлету, а response используется для формирования ответа клиенту. Для получения параметров из запроса следует использовать метод request.getParameter("param_name"), где "param_name" - имя параметра.
Для запуска сервлетов WEB-сервером используется Servlet Engine или, согласно новой спецификации, контейнер сервлетов. Наиболее популярными контейнерами сервлетов являются Tomcat (от проекта Apache Jakarta) и Resin. Способ регистрации сервлета в контейнере и запуск контейнера зависит от конкретного контейнера и описан в документации поставляемой вместе с ним.
Возможные применения для сервлетов:
Организация сотрудничества между людьми.
Сервлет может поддерживать множество запросов одновременно и может синхронизировать запросы. Это позволяет сервлетам поддерживать такие системы, как онлайн конференции.
Перенаправление запросов.
Сервлеты могут перенаправлять запросы к другим серверам или сервлетам. Такие сервлеты могут использоваться для сбалансирования нагрузки между несколькими серверами, которые зеркально отображают одно и тоже содержание, и разбиения единственного логического сервиса на несколько серверов, согласно типу задачи или организационным границам.
Struts
Apache Struts 2 -- фреймворк с открытым исходным кодом для создания Java EE веб-приложений. Основывается на Java Servlet API и расширяет его, в архитектурном плане реализует шаблон проектирования MVC.
Model-view-controller (MVC, «Модель-представление-контроллер») -- схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.
В обычном Java EE веб-приложении клиент, как правило, отправляет информацию на сервер из формы. Введённые данные передаются сервлету, который обрабатывает её, при необходимости взаимодействуя с базой данных, и формирует HTML ответ. Для больших проектов (например, для портала с сотнями страниц), такой подход является неадекватным, так как объединяет бизнес логику и логику отображения, что делает поддержку чрезвычайно сложной. Struts был создан для того, чтобы чётко разделить модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно). Struts предоставляет стандартный контроллер -- сервлет под именем ActionServlet и различные средства для создания страниц представления. Разработчик веб-приложения отвечает за написание кода модели и создание конфигурационного файла struts-config.xml, который связывает воедино модель, представление и контроллер.
Запросы от клиента передаются контроллеру в виде «Actions» (действий), определённых в конфигурационном файле. Когда контроллер получает такой запрос, он передаёт его соответствующему Action классу. Последний взаимодействует с кодом Модели и возвращает контроллеру «ActionForward», строку, определяющую страницу для отправления клиенту. Информация передаётся между моделью и представлением в виде особых JavaBeans. Богатая библиотека тегов позволяет получать данные из бинов и записывать их без Java кода.
Struts также поддерживает i18n (интернационализацию), облегчает валидацию данных полученных из веб-формы и предоставляет механизм создания шаблонов под названием «Tiles», который кроме всего прочего позволяет наследовать веб-страницы.
JDBC
JDBC (англ. Java DataBase Connectivity -- соединение с базами данных на Java) -- позволяет Java приложениям получить доступ к данным различных СУБД.
Если говорить коротко, то JDBC позволяет делать три простые вещи:
Установить соединение с базой данных
Посылать запросы и изменять состояние базы данных
Обрабатывать результаты запросов
Рассмотрим их более подробно.
Установка соединения. Классы DriverManager и Connection
Поскольку каждая СУБД является отдельным программным продуктом, для подключения к ней Java использует специальный драйвер, который пишется разработчиками данного СУБД. На официальном сайте как правило доступно скачивание соответствующих драйверов под каждую из версий СУБД.
Прежде чем использовать драйвер, его необходимо сперва зарегистрировать. Регистрируется драйвер очень просто:
Class.forName("DriverName");
Имя драйвера также можно найти на сайте разработчиков. Например для Oracle имя драйвера будет oracle.jdbc.driver.OracleDriver, для MySQL com.mysql.jdbc.Driver.
Класс DriverManager используется для установления соединения с базой данных. Для этого необходимо указать ему специальный URL адрес, а также логин и пароль пользователя, зарегистрированного в СУБД. URL -- это специальная строка, имеющая следующий формат:
jdbc:<subprotocol>:<subname>
где <subprotocol> -- имя драйвера или имя механизма подключения,
<subname> -- это строка, в которой указывается хост, порт, имя базы данных.
Например, для MySQL URL может быть таким:
jdbc:mysql://localhost:3306/MyDataBaseName
Для Oracle:
jdbc:oracle:thin:@localhost:1521/MyDataBaseName
На сайте разработчиков также можно найти URL для их продукта.
Зная URL, логин и пароль пользователя, а также имея зарегистрированный в системе драйвер, установить подключение можно так:
Connection c = DriverManager.getConnection("URL", "User_Login", "User_Password");
Объект класса Connection представляет собой соединение с базой данных.
Посылка запросов. Классы Statement и ResultSet
После того, как соединение с базой данных установлено, мы можем отправлять запросы. Для этого нам понадобиться класс Statement. Объект Statement предназначен для хранения SQL команд и может быть создан следующим образом:
Statement st = c.createStatement();
После этого мы можем выполнять запросы. Результаты запроса будут храниться в объекте класса ResultSet.
ResultSet rs = st.executeQuery("select * from Table_Name");
Данный запрос выберет все данные из таблицы Table_Name и вернет объект ResultSet. Также могут быть полезны методы st.execute(«Запрос»); Но тогда объект ResultSet надо получать отдельным методом st.getResultSet(). Также есть метод st.executeUpdate(«Запрос»); Вернет число строк, подвергшихся изменению.
Для параметризованного SQL запроса используется класс PreparedStatement. Он может быть использован, например, так:
PreparedStatement pst = c.prepareStatement("select * from MoCoUser where login = ?");//? - это параметр
pst.setString(1, "user");//установление значения параметра. Обратите внимание: нумерация параметров начинается не с 0, а с 1!
ResultSet prs = pst.executeQuery();
Для вызова функции или процедуры используется класс CallableStatement:
CallableStatement cst = c.prepareCall("CALL proc_name(?,?)");//В процедуру также можно передавать параметры
cst.setInt(1, 100);
cst.setString(2, "String");
ResultSet rs = cst.executeQuery();
Обработка результатов запроса. Класс ResultSet
Запрос выполнен. Результатом SQL запроса к БД будет таблица. В java результат сохраняется в объекте класса ResultSet. Давайте их выведем.
Для перехода по строкам вперед и назад в классе ResultSet используются методы next() и previous(). Для перехода к первой или последней строке first() и last() соответственно. Обработка результатов в цикле будет выглядеть примерно следующим образом:
while(rs.next()){
//обработка результатов
}
Где rs -- это объект класса ResultSet. Метод next() возвращает true, если есть следующая строка, false -- больше строк нет.
Для получения значений из определенной колонки текущей строки можно получить методами getInteger(<param>), getString(<param>), getDouble(<param>), getDate(<param>) и так далее, где <param> -- это номер колонки, если типа int или название колонки, если типа String. Например:
rs.getString(2); //Вернет строку, находящуюся во втором столбце текущей строки
rs.getDouble("average_score"); //Вернет значение типа double, находящееся в колонке с названием "average_score".
Поскольку данные в БД могут иметь значение null, имеет смысл перед их извлечением проверить это, чтобы не получить исключение. Данная проверка осуществляется методом isNull(<param>), который вернет true или false.
ГЛАВА 2. ПРАКТИЧЕСКАЯ ЧАСТЬ
заявка java сервлет логин
2.1 Общее описание
Данный программный продукт реализован с использованием паттерна MVC(SD) - Model-View-Controller(Service,DAO). Были применены Struts версии 1.3 и драйвера JDBC для связи с MySQL базой. База содержит три таблицы:
Пользователи
Содержит поля:
Id
Используется для однозначной идентификации записи в таблице. Параметры:primary key, not null, unique, autoincrement.
Имя
Фамилия
Имя и Фамилия используются для обращения к пользователю. Параметры: not null.
username
Используется, как и Id, для однозначной идентификации пользователем (например при входе в систему). Параметры: not null, unique.
Пароль
Используется для входа в систему, хранится в виде хэш-суммы. Параметры: not null.
Метка администратора
Указывает, что данный пользователь является администратором.
Комнаты
Id
Используется для однозначной идентификации записи в таблице. Параметры:primary key, not null, unique, autoincrement.
Класс комнаты
Количество мест в комнате
Класс комнаты и количество мест в ней используются для характеристики комнаты. Когда пользователь создает заявку, он указывает какие параметры ему требуются. Параметры: not null.
Имя
Фамилия
Имя и Фамилия используются для отображения в списке комнат информации о том, кем занята комната. Параметров не имеют.
userID
Используется для однозначной идентификации пользователя, который занимает комнату. Параметры: unique.
Заявки
Id
Используется для однозначной идентификации записи в таблице. Параметры:primary key, not null, unique, autoincrement.
Класс комнаты
Количество мест в комнате
Класс комнаты и количество мест в ней используются для указания характеристик комнаты требуемых пользователю. Параметры: not null.
Имя
Фамилия
Имя и Фамилия используются для отображения в списке заявок информации о том, кто создал заявку. Параметров не имеют.
username
Используется для однозначной идентификации пользователя, который создал заявку. Параметры: unique.
Статус
Статус предназначен для информирования пользователя о состоянии заявки. Она может быть на рассмотрении, отклоненной или принятой.
Для проверки на присутствие пользователя в системе используются custom tags предоставленные Struts. Валидация на вход осуществлена сравниванием хеш-суммы пароля при регистрации, т.е. того, который лежит в БазеДанных, и хеш-суммы пароля введенного пользователем на странице входа. Также в данном проекте реализована интернационализация (i18n) для двух языков: Русский и Английский.
2.2 Страница логина
На данной странице требуется ввести данные, которые были указаны во время регистрации (см. ПРИЛОЖЕНИЕ А, рис 1). На данной странице имеется оповещение при вводе неверного логина или пароля или оставления их пустыми (см. ПРИЛОЖЕНИЕ А, рис 2).
После того, как пользователь введет данные и нажмет принять осуществляется соединение с базой данных и оттуда достается прользователь с заданным именем. Если такого пользователя не существует, то выводится соответствующее сообщение (см. ПРИЛОЖЕНИЕ А, рис 2). Далее проверяется пароль. Для создания md5 хэш-суммы используется класс MD5Creator с методом класса MD5, который принимает на вход строку.
Если данные, введенные пользователем верны, то он попадает на страницу профиля.
2.3 Страница регистрации
На данной странице требуется ввести данные пользователя, такие как: имя, фамилия, логин, пароль (см. ПРИЛОЖЕНИЕ Б, рис. 1). При оставлении пустыми полей имя и фамилия они будут записаны в базу как пустые значения. При оставлении пустым поле логина или пароля выведется соответствующее сообщение. Если пользователь с таким логином уже существует, то будет выведено сообщение: ”Такой пользователь уже существует” (см. ПРИЛОЖЕНИЕ Б, рис 2)
2.4 Страница профиля
После удачного ввода логина и пароля пользователь попадает на страницу профиля. В зависимости от того, является он администратором (см. ПРИЛОЖЕНИЕ В, рис 1) или пользователем (см. ПРИЛОЖЕНИЕ В, рис 2) изменяется вид страницы его профиля и набор функций.
Функция смены пароля
Данная функция присутствует у обоих типов пользователей. Она позволяет, зная старый пароль поменять его на новый (см. ПРИЛОЖЕНИЕ Г).
Функции администратора
Администратору доступны три функции (кроме смены пароля):
Список пользователей, где можно сменить роль пользователя либо удалить его. В данном списке не отображается сам администратор. (см. ПРИЛОЖЕНИЕ Д, рис 1)
Список комнат, где можно либо добавить новую, либо удалить старую.
Список заявок, где можно либо удалить, либо принять заявку. (см. ПРИЛОЖЕНИЕ Д, рис 2)
Функции пользователя
Пользователь может (кроме смены пароля):
Создавать заявку (см. ПРИЛОЖЕНИЕ Е, рис 1), причем после успешного создания будет выведено сообщение с номером заявки (см. ПРИЛОЖЕНИЕ Е, рис 2).
Проверять состояние заявки по ее номеру (см. ПРИЛОЖЕНИЕ Е, рис 3), причем если заявке по данному номеру соответствует другой пользователь или такой заявки нет, то будет выведено сообщение:”Неверный номер заявки” (см. ПРИЛОЖЕНИЕ Е, рис 4).
ЗАКЛЮЧЕНИЕ
В процессе написания данной работы были выяснены следующие свойства языка Java:
язык программирования объектно-ориентирован, оснащён богатой библиотекой классов и в то же время довольно прост для освоения
приложение получается автоматически переносимым между множеством платформ и операционных систем
за счет встроенной системы сборки мусора программист освобождается от необходимости явного управления памятью
приложение легко сопровождается и модифицируется, т.к. модули могут быть загружены с сети
В процессе написания данной курсовой работы был создан сайт, которая хорошо иллюстрирует многие достоинства данной технологии и показывает её перспективность.
ЛИТЕРАТУРА
1. Паттерны проектирования / Эр. Фримен [и др.]. - ПИТЕР, 2011. - 656с.
2. Эскел, Б. Философия JAVA= Thinking in Java / Б. Эскел. - 4 изд. - New Jersey : Prentice Hall, 2006. - 1079с.
3. Википедия [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/
ПРИЛОЖЕНИЕ А
Страница входа
Рисунок 1
Рисунок 2
ПРИЛОЖЕНИЕ Б
Страница регистрации
Рисунок 3
Рисунок 4
ПРИЛОЖЕНИЕ В
Страница профиля
Рисунок 5
Рисунок 6
ПРИЛОЖЕНИЕ Г
Страница смены пароля
Рисунок 7
ПРИЛОЖЕНИЕ Д
Пользователи и заявки
Рисунок 8
Рисунок 9
ПРИЛОЖЕНИЕ Е
Работа с заявкой
Рисунок 10
Рисунок 11
Рисунок 12
Рисунок 13
Размещено на Allbest.ru
...Подобные документы
Язык Java как простой, обьектно-ориентированный, многопоточный язык программирования, разработанный компанией Sun Microsystems для расширения возможностей сети Internet. Типы данных, лексика и управляющие структуры данного языка программирования.
презентация [46,1 K], добавлен 25.04.2014История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Расширяемый язык разметки XML. Описание типа документа DTD. Значение XML и платформы Java. Обзор стандартных анализаторов DOM и SAX. Технология Java Servlet, Java Server Pages (JSP), JavaBeans. Общая функциональность программного продукта. Модель данных.
курсовая работа [422,0 K], добавлен 21.02.2009Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.
курсовая работа [508,1 K], добавлен 10.11.2014Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Принцип работы и назначение сервлетов Java, их значение в повышении функциональности Web-серверов и улучшении их программирования, преимущества и недостатки использования. Способы вызова сервлетов с браузера и страницы. Запись и чтение атрибутов сессии.
лабораторная работа [80,2 K], добавлен 30.06.2009Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные модели. Логическое структурирование приложения. Наследование в Java. Отличия интерфейсов от классов.
курс лекций [547,2 K], добавлен 01.05.2014Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Объектно-ориентированный язык программирования: общая характеристика и свойства. Базовый и производный классы, конструкторы производного класса. Конструкторы и неопределенность при множественном наследовании. Роль наследования при разработке программ.
курсовая работа [688,3 K], добавлен 23.12.2013Основы учебной системы на языке программирования Java. Регистрация, раздача учебного материала, проверка знаний, способы выдачи и принятия информации. Базовые характеристики системы, инструкция использования, некоторые особенности поведения программы.
курсовая работа [1,0 M], добавлен 07.05.2009Особенности программирования на языке HTML и JavaScript. Основные стили форматирования текста. Анализ основных приемов и методов создания страниц, рисунков, таблиц и гиперссылок. Основные цвета и их коды. Разработка собственного сайта и его презентация.
курсовая работа [61,3 K], добавлен 29.01.2016Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Общая характеристика и оценка возможностей языка программирования си-шарп, его сходные и отличительные черты от С++ и Java. Разработка с помощью данного языка программирования лексического и синтаксического анализатора. Составление таблиц разбора.
курсовая работа [111,6 K], добавлен 11.06.2010Выполнение Java-программы. Набор программ и классов JDK. Объектно-ориентированное программирование в Java. Принципы построения графического интерфейса. Компонент и контейнер графической системы. Апплеты как программы, работающие в среде браузера.
курсовая работа [42,3 K], добавлен 08.02.2011Язык программирования Java, история и предпосылки его создания. Переменные, именованные константы, массивы, перечисления. Интерфейсы и обратные вызовы в Java. Удаленный вызов процедуры: общие сведения. Передача параметров при удаленном вызове процедур.
курс лекций [526,7 K], добавлен 24.06.2009Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.
курсовая работа [962,8 K], добавлен 13.01.2016Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.
курсовая работа [208,6 K], добавлен 03.12.2013Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.
курсовая работа [12,4 K], добавлен 18.06.2008