Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-programmirovanie_uchebnoe_posobie.pdf
Скачиваний:
95
Добавлен:
09.02.2015
Размер:
4.9 Mб
Скачать

Учебное пособие по web-программированию (2013)

Рисунок 1.9.

Дополнительную информацию можно получить по адресу: http://www.tutorialspoint.com/servlets/servlets-first-example.htm

Тема 2. Взаимодействие с сервлетом

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

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

Интерфейс запроса сервлета — javax.servlet.ServletRequest. В случае, когда осуществляется обработка HTTP-запроса, используется javax.servlet.http.HttpServletRequest.

Ключевые методы ServletRequest:

getParameter — получение параметров запроса

getAttribute — получение атрибутов запроса

getContentLength — получение длины контента

getInputStream — получение потока ввода

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

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html

Интерфейсы методов ServletRequest и примеры использования.

-8-

Учебное пособие по web-программированию (2013)

Метод: public String getParameter(String s)

Пример:

String name1 = request.getParameter("name1"); Метод: public Object getAttribute(String name)

Пример:

Object obj1 = request.getAttribute("obj1"); Метод: public int getContentLength()

Пример:

int size = request.getContentLength();

Метод: public ServletInputStream getInputStream() throws IOException

Пример:

ServletInputStream inStr1 = request.getInputStream(); Метод: public String getServerName()

Пример:

String serverName = request.getServerName();

Ключевые методы HttpServletRequest:

getCookies — получение Cookies

getHeader — получение заголовка

getMethod — получение метода (например, GET или POST)

getPathInfo — получение информации о пути

getAuthType — получение информации о методе аутентификации пользователя

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

Интерфейсы методов HttpServletRequest и примеры использования.

Метод: public Cookie[] getCookies()

Пример:

Cookie[] cookies = request.getCookies(); Метод: public String getHeader(String name)

Пример:

out.println(request.getHeader("host") + "<br>"); Метод: public String getMethod()

Пример:

out.println("<b>" + request.getMethod() + "</b>"); Метод: public String getPathInfo()

Пример:

String ses_id = request.getPathInfo(); Метод: public String getAuthType()

Пример: out.println(request.getAuthType());

Работа с параметрами запроса осуществляется с использованием следующих методов:

Метод: public getParameter(String name)

Пример:

// Здесь в переменную name возвращается значение параметра с именем

«names»

String name = request.getParameter("names");

-9-

Учебное пособие по web-программированию (2013)

Метод: public Enumeration getParameterNames()

Пример:

//Здесь в переменную books возвращаются все имена параметров, которые есть в запросе request

Enumeration books = request.getParameterNames(); Метод: public String [] getParameterValues(String name)

Пример:

//Здесь в переменную value возвращаются все значения параметра «interest»

String [] value = request.getParameterValues("interests");

Важно: Обратите внимание, что в одном параметре может быть несколько значений!!!

Чтение бинарных данных из запроса (это, например, когда с клиента на сервер загружается файл) осуществляется с использованием метода

public ServletInputStream getInputStream throws IOException

Методы чтения заголовков запроса.

Метод: public getHeader(String name)

Пример:

String name = request.getHeader("names"); Метод: public Enumeration getHeaders()

Пример:

Enumeration headers = request.getHeaders(); Метод: public Enumeration getHeaderNames()

Пример:

Enumeration headerNames = request.getHeaderNames();

Ответ сервлета возвращается с использованием интерфейса ответа javax.servlet.ServletResponse. В случае, когда осуществляется обработка HTTPзапроса, ответ формируется с использованием javax.servlet.http.HttpServlet.Response.

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

public String getContentType()

-получение типа контента

public PrintWriter getWriter() throws IOException

-получение потока вывода (для передачи текста на клиента)

public ServletOutputStream getOutputStream() throws IOException

-получение потока вывода (для передачи бинарных данных на клиента)

public void setContentType(String type)

-установка типа контента

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/ServletResponse.html

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

addCookie — добавление Cookies к ответу сервлета

addHeader — добавление заголовков к ответу

containsHeader — проверка наличия соответствующего заголовка

sendError — отправка сообщения об ошибке

Подробнее можно ознакомиться по адресу:

-10-

Учебное пособие по web-программированию (2013)

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html

В общем случае отправку текста и бинарных данных будем осуществлять с использованием следующих методов:

public ServletOutputStream getOutputStream() throws IOException

public PrintWriter getPrintWriter() throws IOException

ServletOutputStream.print(boolean b)

ServletOutputStream.println(char c)

Заголовки могут содержать не только строковую информацию, но и даты, числа:

addHeader — добавление строкового заголовка

addDateHeader — добавление заголовка с датой

addIntHeader — добавление заголовка целочисленного

containsHeader — проверка наличия заголовка

Всервлете может возникнуть потребность в переходе на другую страницу. Для этого используются следующие методы:

Метод перенаправления:

public void sendRedirect(String url) throws IOException

Метод перекодировки от запрещённых символов: public String encodeRedirectURL(String url)

Пример:

response.sendRedirect(response.encodeRedirectURL(contextPath + "/maps"));

Вцелом жизненный цикл сервлета укладывается в следующую последовательность:

1.Создание

2.Инициализация

3.Обслуживание

4.Уничтожение

5.Недоступен

Методы, обеспечивающие ключевые фазы жизненного цикла:

init — создание сервлета

service — собственно, процесс обслуживания

destroy — уничтожение сервлета

При обработке Http-запроса последовательность жизненного цикла получается несколько длиннее:

1.Получение экземпляра сервлета

2.Экземпляр включается в запрос

3.Аутентификация сервлета

4.Препроцессинг сервлета

5.Создание ответа

6.Постпроцессинг сервлета

7.Проверка возможности повторного использования

8.Замещение сервлета в менеджере сервлетов

Пример создания простейшего сервлета, использующего рассмотренные

-11-

Учебное пособие по web-программированию (2013)

методы.

Шаг 1. Необходимо создать Html-страницу, которая обеспечит вызов сервлета с передачей ему параметров, которые сервлет мог бы обработать (рисунок 2.1).

Рисунок 2.1.

Шаг 2. Необходимо создать сервлет (в данном примере с именем NewServlet2), обеспечивающий обработку двух параметров (username и sometext). На рисуноке 2.2 приведён ключевой метод processRequest, обеспечивающий обработку запроса и формирование ответа. Данный метод появляется автоматически при создании запроса средствами NetBeans, правда, заполнен он по умолчанию совсем другим текстом.

Рисунок 2.2.

Шаг 3. Необходимо зарегистрировать сервлет в дескрипторе развёртывания web.xml, который должен находиться в папке WEB-INF проекта (рисунок 2.3). При создании сервлета с использовании NetBeans данная регистрация может быть выполнена автоматички.

-12-

Учебное пособие по web-программированию (2013)

Рисунок 2.3.

Шаг 4. Необходимо сформировать war-файл и разместить полученный warфайл в папке webapps веб-сервера Apache Tomcat. В результате сервер автоматически развернёт архив и создаст одноимённую подпапку в папке webapps (рисунок 2.4).

Рисунок 2.4.

Шаг 4'. Алтернаривный способ — запустить веб-приложение средствами NetBeans. Это возможно, если сервер Apache Tomcat установлен вместе с NetBeans или вручную в нём зарегистрирован. При этом запуск сервера будет осуществлён не на стандартном порту 8080, а на порту 8084.

-13-

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