- •Тема 1. Разработка простейших веб-приложений
- •Тема 2. Взаимодействие с сервлетом
- •Тема 3. Контекст сервлета
- •Тема 4. Веб-сессия
- •Тема 5. Фильтры и взаимодействие сервлетов
- •Тема 6. Безопасность веб-приложений
- •Тема 7. Введение в JSP
- •Тема 8. Встроенные объекты JSP
- •Тема 9. Стандартные действия и JavaBeans
- •Тема 10. Выражения JSP Expression Language
- •Тема 11. JSP Standard Tag Library
- •Тема 12. Локализация веб-приложений
- •Тема 13. Настраиваемые теги JSP
- •Тема 14. Взаимодействие с БД в веб-приложениях
- •Тема 15. Запросы к БД
Учебное пособие по 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-