Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

web-programmirovanie_metodicheskie_ukazania

.pdf
Скачиваний:
68
Добавлен:
09.02.2015
Размер:
606.97 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

Беляев С.А.

Методические указания

по выполнению лабораторных работ по разработке web-приложений

на языке Java

Санкт-Петербург

2014

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

Беляев С.А. Методические указания по выполнению лабораторных работ по разработке web-приложений на языке Java

Спб.: Изд-во СпбГЭТУ «ЛЭТИ», 2014, 34 с.

Методические указания по выполнению лабораторных работ по разработке web-приложений на языке Java посвящено разработке веб-

приложений на Java 1.6 на основании таких технологий как сервлеты, Java Server Pages (JSP) с использованием стандартных и настраиваемых тегов с учётом необходимости локализации приложений и работой с базами данных.

Особенностью представленного материала является его небольшой объём,

наличие наглядных примеров по всем лабораторным работам.

Методические указания по выполнению лабораторных работ применимо в дисциплине «Web-технологии», которая входит в учебные планы подготовки бакалавров по направлению 231000.62 - «Программная инженерия», и в дисциплине «Разработка web-приложений», которая входит в учебные планы подготовки подготовки магистров по направлениям 231000.68 - «Программная инженерия», 231051.68 - «Разработка распределенных программных систем».

© Беляев С.А. © СпбГЭТУ «ЛЭТИ», 2014

- 2 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

Лабораторная работа №1. Разработка приложений с использованием сервлетов

Цель: научить студентов использовать сервлеты для разработки приложений.

1.1.Понятие Java Servlet

Сервлеты (Servlets) - это java-программы, которые выполняются на серверной стороне web-приложения. Точно так же, как апплеты динамически расширяют функциональные возможности web-браузера, сервлеты динамически расширяют функциональные возможности web-сервера [http://www.java2ee.ru/servlets/].

Работу сервлета можно описать следующим образом: при приходе запроса от клиента Web-сервер с помощью специального конфигурационного файла может определить, какой сервлет необходимо выполнить. После этого Web-сервер запускает java-машину, которая в свою очередь выполняет сервлет. Сервлет создает HTML-страницу и передает содержимое web-серверу. Web-сервер отправляет клиенту сформированную сервлетом HTML-страницу.

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

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

1.2. Основные методы и классы

1.2.1. javax.servlet.GenericServlet

Класс абстрактной реализации сервлета GenericServlet содержит следующие основные методы:

String

getInitParameter(String name) — получение параметров

инициализации.

 

Enumeration<String> getInitParameterNames() - получение имён параметров инициализации.

ServletConfig getServletConfig() - получение конфигурации сервлета. ServletContext getServletContext() - получение контекста сервлета. void log(String msg) — запись сообщения в журнал web-сервера.

void log(String message, Throwable t) — запись в журнал web-сервера сообщения об ошибке.

abstract void service(ServletRequest req, ServletResponse res)

— обслуживание запроса с клиента.

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

1.2.2. javax.servlet.http.HttpServlet

- 3 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

Класс абстрактной реализации сервлета HttpServlet (наследуется от GenericServlet) содержит следующие основные методы:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) — реализация метода GET.

protected void doPost(HttpServletRequest req, HttpServletResponse resp) — реализация метода POST.

При необходимости можно обработать и другие команды, такие как DELETE, TRACE,

OPTIONS, PUT.

При реализации методов GET и POST в качестве параметров передаются

HttpServletRequest и HttpServletResponse.

1.2.3. javax.servlet.ServletRequest

Интерфейс запроса ServletRequest содержит следующие основные методы:

Object

getAttribute(String name) — получение значения атрибута с

заданным именем (необходимо, если мы обрабатываем «вложенные» запросы).

Enumeration<String> getAttributeNames() — получение имён атрибутов.

String

getParameter(String name) — получение по имени значения

параметра, переданного методами GET или SET.

Enumeration<String> getParameterNames() — получение имён параметров,

переданных методами GET или SET.

RequestDispatcher getRequestDispatcher(String path) — получение диспатчера, который позволяет передать управление другому сервлету или web-странице.

void setAttribute(String name, Object o) — установка значения атрибута с заданным именем name.

void setCharacterEncoding(String env) — установка кодировки для запроса.

1.2.4. javax.servlet.http.HttpServletRequest

Основные методы HttpServletRequest:

Cookie[] getCookies() - получение списка Cookie.

String getRemoteUser() - получение имени пользователя, который аутентифицировался на сервере.

boolean isUserInRole(String role) — проверка, что пользователь принадлежит роли role.

1.2.5. javax.servlet.ServletResponse

Интерфейс ответа ServletResponse содержит следующие основные методы:

ServletOutputStream getOutputStream() - получение потока, с помощью которого можно на клиента передать поток байт (например, файл).

PrintWriter getWriter() - получение класса, с помощью которого на клиента

- 4 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

передаётся HTML-страница.

void setCharacterEncoding(String charset) — установка кодировки результата.

void setContentLength(int len) — установка длины результата (при передачи потока).

void setContentType(String type) — установка типа результата.

1.2.6. javax.servlet.http.HttpServletResponse

void addCookie(Cookie cookie) — добавление Cookie к ответу для сохранения на клиенте.

void sendError(int sc) — отправка клиенту сообщения об ошибке с заданным кодом.

void sendError(int sc, String msg) — отправка клиенту сообщения об ошибке с заданным кодом и заданным текстом.

void sendRedirect(String location) — перенаправление вывода.

1.3. Решение задач лабораторной работы

1.3.1. Создание сервлета

Создаём класс ServletName.java:

package edu.etu.web;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ServletName extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

StringBuilder sb = new StringBuilder(); sb.append("<html><body>"); sb.append("Мой первый сервлет!!!");

sb.append("</body></html>");

- 5 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter();

out.println(sb.toString());

out.close();

}

}

Прописываем информацию в дескриптор развертывания web.xml:

<servlet> <servlet-name>ServletName</servlet-name>

<servlet-class>edu.etu.web.ServletName </servlet-class> </servlet>

<servlet-mapping> <servlet-name>ServletName</servlet-name> <url-pattern>/ServletName</url-pattern>

</servlet-mapping>

1.3.2. Получение параметров инициализации сервлета

Параметры инициализации сервлета прописываются в дескрипторе развертывания web.xml:

<servlet> <servlet-name>ServletName</servlet-name>

<servlet-class>edu.etu.web.ServletName </servlet-class> <init-param>

<param-name>parameterName1</param-name> <param-value>parameterValue1</param-value>

</init-param> <init-param>

<param-name>parameterName2</param-name> <param-value>parameterValue2</param-value>

</init-param> </servlet>

Получение значения параметра инициализации сервлета в методе сервлета (например,

в doGet()):

String value = getInitParameter("parameterName1");

- 6 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

1.3.3. Изменение значения div с использованием JavaScript-кода

В HTML-странице должен быть создан DIV, значение которого будет изменяться JavaScript. Обращение к нему будет осуществляться по идентификатору.

<div id='TextDiv'></div>

В HTML-странице должен быть определён JavaScript-код, обеспечивающий соответствующее изменение значения DIV.

<script type="text/javascript"> function changeText(){

document.getElementById('TextDiv').innerHTML = 'HTML,

который появится в DIV';

}

</script>

Для изменения текста можно воспользоваться обычной HTML-кнопкой button:

<input type='button' onclick='changeText()' value='Изменить'/>

Полный пример:

<div id='TextDiv'></div> <script type="text/javascript">

function changeText(value){ document.getElementById('TextDiv').innerHTML = value;

}

</script>

<input type='button' onclick='changeText("HTML 1")' value='Изменить 1'/>

<input type='button' onclick='changeText("HTML 2")' value='Изменить 2'/>

Но в современных Интернет-магазинах не принято использовать обычные кнопки, лучше использовать рисунки кнопок.

1.3.4. Отображение различных div с использованием JavaScript-кода

На странице должны быть определены описания DIV, которые будут скрываться или отображаться. Внутри DIV может быть произвольный HTML-код.

<div id='one' style=' display:block; '>Текст 1</div>

- 7 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

<div id='two' style=' display:none; '>Текст 2</div>

Необходимо написать JavaScript, который будет скрывать или отображать DIV.

<script type="text/javascript"> function show1(){

document.getElementById('one').style.display = 'block'; document.getElementById('two').style.display = 'none';

}

function show2(){ document.getElementById('one').style.display = 'none'; document.getElementById('two').style.display = 'block';

}

</script>

Для переключения между DIV нужны элементы управления.

<input type='button' onclick='show1()' value='Показать 1'/>

<input type='button' onclick='show2()' value='Показать 2'/>

Конечно, желающие могут использовать вкладки с использованием CSS или JQuery как инструмент управления вкладками, но приведённые реализации существенно проще.

Но в современных Интернет-магазинах не принято использовать обычные кнопки, лучше использовать рисунки кнопок.

1.3.5. Замена рисунка при наведении мыши с использованием CSS

Заметно оживляют внешний вид экранной формы активные элементы. Например, при создании активной кнопки, которая нарисована в jpg, gif или png можно использовать код

CSS.

Для этого в заголовке HTML-страницы (тег HEAD) необходимо добавить описание

стиля:

<style>

.izo {

background: url(http://изо1.jpg) no-repeat 50% 50%; display: block;

width: 400px; height: 400px;

}

- 8 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

.izo:hover {

background: url(http://изо2.jpg) no-repeat 50% 50%;

}

</style>

А на странице необходимо разместить ссылку с указанием соответствующего класса:

<a href="#" class="izo"></a>

Естественно, имя класса, путь до изображения и содержимое href определяет разработчик. Кстати, тег <a> поддерживает onclick (см. 1.3.3 и 1.3.4).

Возможны другие реализации замены картинки с использованием CSS при наведении мыши. Автору известны ещё минимум 5 способов, попробуйте найти их сами.

1.3.6. Интернационализация сервлета

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

Для локализации используется класс java.util.Locale.

Ресурсы локализации имеют постфикс в формате xx_YY:

xx — код языка

YY — код страны

В итоге файлы локализации переводов с языка на язык могут храниться в файлах ресурсов: имя_xx_YY.properties и имя_xx.properties.

Для обращения к файлу ресурсов используется класс java.util.ResourceBundle, его ключевые методы:

ResourceBundle getBundle(String name) - получение ресурса с заданным именем

Enumeration getKeys() - получение всех имён ресурсов Locale getLocale() - получение локализации файла ресурсов

Object getObject(String key) - получение объекта (в случае локализации с использованием java-класса — данный способ выходит за рамких нашего курса) String getString(String key) - получение строкового значения (читается из файла ресурсов)

Файл ресурсов по-умолчанию myres.properties может выглядеть так submit = ввод

Файл ресурсов для английского языка myres_en.properties может выглядеть так submit = submit

- 9 -

Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)

В сервлете файл свойств можно использовать так:

Locale locale = Locale.ENGLISH;

ResourceBundle myres = ResourceBundle.getBundle("myres", locale);

String submit = myres.getString("submit");

Локализация даты и времени выполняется с использованенм java.text.DateFormat. Форматирование валюты осуществляется с использованием java.util.Currency.

Форматирование чисел — java.text.NumberFormat.

1.4. Задание

Необходимо создать сервлет, реализующий страницу продукта интернет-магазина. Основные требования:

1.Карточка товара реализована с использованием сервлета.

2.На карточке есть фотография товара.

3.На карточке есть закладки: краткий просмотр, просмотр с отображением детальных характеристик и отзывы. Переключение между закладками реализовано с использованием

JavaScript.

4.Закладка, отображаемая по умолчанию, настраивается в параметрах инициализации сервлета.

5.На карточке есть кнопка «Купить» (реализация появится после создания «Корзины»).

6.На карточке есть и реализована кнопка локализации для трёх языков (обязательные: русский, английский).

7.Оформление карточки выполнено с использованием CSS.

Необязательно: поддерживается несколько фотографий товара с возможностью просмотра увеличенного изображения (с использованием CSS).

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

Вам.

Лабораторная работа №2. Разработка приложений с использованием Java

Server Pages (JSP)

Цель: научить студентов использовать JSP для разработки приложений.

2.1.Понятие JSP

Java Server Pages (JSP) — это технология Java 2 Platform Enterprise Edition (J2EE) для создания приложений, генерирующих динамическое web-содержимое - HTML, DHTML, XHTML и XML. JSP строятся на основании HTML, расширяемого языком java. Файлы при этом имеют расширение *.jsp.

- 10 -

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