- •Интернет-программирование
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP. Отличия в работе
- •ИП. Сервлеты и JSP. Сервлет-контейнеры
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура сервлетов
- •ИП. Сервлеты и JSP. Структура сервлетов
- •ИП. Сервлеты и JSP. Стуктура сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов. Жизненный цикл
- •ИП. Сервлеты и JSP. Работа сервлетов.
- •ИП. Сервлеты и JSP. Работа сервлетов.
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов. Пример web.xml файлаМИЭТ, 2017
- •ИП. Сервлеты и JSP. Идея JSP
- •ИП. Сервлеты и JSP. Архитектура приложения JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP. Атрибуты директив
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
ИП. Сервлеты и JSP. Структура приложения |
МИЭТ, 2017 |
Файлы JSPs и статические файлы могут быть расположены где угодно в соответствии с корневой директорией, но местоположение будет отражено в URL, используемом, чтобы вызвать их.
Например, если index.html страница расположена в websample\miet\ каталоге, URL должен быть похож на:
http://localhost:8080/websample/miet/index.html
ИП. Сервлеты и JSP. Структура приложения |
МИЭТ, 2017 |
ИП. Сервлеты и JSP. Структура сервлетов |
МИЭТ, 2017 |
Необходимые интерфейсы работы сервлета находятся в пакетах: javax.servlet, javax.servlet.http
Пакет javax.servlet обеспечивает интерфейсы и классы для написания сервлетов в нем определяется интерфейс Servlet. Все сервлеты реализуют данный интерфейс.
Для работы по протоклу HTTP используют расширение - HttpServlet.
Интерфейс Servlet объявляет, но не реализует методы, которые управляют сервлетом и его взаимодействием с клиентами.
ИП. Сервлеты и JSP. Структура сервлетов |
МИЭТ, 2017 |
ИП. Сервлеты и JSP. Стуктура сервлетов |
МИЭТ, 2017 |
Принимая запрос от клиента, сервлет получает два объекта:
ServletRequest, который инкапсулирует связь клиента с сервером.
ServletResponse, который инкапсулирует обратную связь сервлета с клиентом.
Для протокола HTTP эти объекты соответственно расширяются в: Объект HttpServletRequest, который инкапсулирует данные от клиента Объект HttpServletResponse, который инкапсулирует ответ к клиенту
ИП. Сервлеты и JSP. Работа сервлетов. Жизненный цикл |
МИЭТ, 2017 |
Сервлеты выполняются на платформе Web-сервера как часть того же процесса, что и сам Web-сервер. Web-сервер отвечает за инициализацию, вызов и уничтожение каждого экземпляра сервлета. Web-сервер взаимодействует с сервлетом через простой интерфейс: javax.servlet.Servlet.
Интерфейс javax.servlet.Servlet состоит из трех главных методов:
init()
Выполняет подготовительную работу по настройке окружения сервлета перед выполнение клиентского запроса. Например, открытие файлов или установку соединений с их серверами. Завершается перед любым другим обращением к сервлету
service()
читает запрос и формирует ответное сообщение при помощи своих двух аргументов
— объектов: ServletRequest и ServletResponse
destroy()
вызывается для освобождения всех ресурсов (например, открытые файлы и соединения с базой данных) перед выгрузкой сервлета. Может быть вызван по событию, либо по таймауту (сессии)
и двух вспомогательных методов:
getServletConfig() |
- обеспечивает доступ к конфигурации сервера |
GetServletInfo() |
- возвращает информацию о сервлете: автор, версия и т.д. |
ИП. Сервлеты и JSP. Работа сервлетов. |
МИЭТ, 2017 |
Вклассе HTTPServlet определен ряд методы doGet() и doPost(), которые переопределяются в сервлете и обеспечивают получение данных от клиента по соответствующему методу
package servlets;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class HelloMiet extends HttpServlet { @Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter(); response.setContentType("text/html"); out.println("<HTML><HEAD><TITLE>"); out.println("ServletTest"); out.println(""</TITLE></HEAD><BODY>"); out.println("Привет! МИЭТ:)"); out.println("</BODY></HTML>"); out.close();
}
}
ИП. Сервлеты и JSP. Работа сервлетов. |
МИЭТ, 2017 |
Как видно в примере класс HelloMiet расширяет класс HTTPServlet и переопределяет его метод doGet().
Метод doGet в примере использует Writer из объекта HttpServletResponse для возвращения клиенту текстовых данных. Прежде чем получить доступ к writer, пример устанавливает заголовок content-type. В конце метода doGet, после того как был отправлен запрос, Writer закрывается.
При каждом вызове методы doGet и doPost класса HttpServlet принимают в качестве параметра объект, который реализует интерфейс HttpServletRequest. Web-сервер, который исполняет сервлет, создает объект HttpServletRequest и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost). Данный объект содержит запрос, поступивший от клиента.
Как видно вывод с множеством out.println достаточно неудобен для написания т. к. вывод сложных ответов может потребовать сотни и тысячи раз писать out.println.
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Ключевые методы объекта HttpServletRequest
Метод |
Описание |
String |
Получение из запроса значения параметра. Наименование |
getParameter(String name) |
параметра определено значением name. |
Enumeration |
Получение из запроса имен всех параметров. |
getParameterNames() |
|
String[ ] |
Для параметра с несколькими значениями данный метод |
getParameterValues(String name) |
возвращает строковый массив. |
Cookie[ ] |
Получение массива объектов Cookie, сохраненных на |
getCookies () |
компьютере клиента. Cookie могут быть использованы для |
|
уникальной идентификации клиента сервером. |
HttpSession |
Возвращает объект HttpSession текущего сеанса клиента. |
getSession(boolean create) |
Если параметр create равен true и объект HttpSession не |
|
существует, то создается новый объект HttpSession. |
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Ключевые методы объекта HttpServletResponse
Метод |
Описание |
void addCookie (Cookie cookie) |
Метод используется для добавления Cookie в |
|
заголовок ответа клинту. Установленный |
|
максимальный возвраст Cookie, а также разрешение |
|
клиентом хранения Cookie определяют, будут ли |
|
Cookies сохранены на клиенте и время их хранения. |
ServletOutputStream |
Получение бинарного потока вывода для |
getOutputStream() |
отправления бинарных данных клиенту. |
PrintWriter getWriter |
Получение символьного потока вывода для |
|
отправления текстовых данных клиенту. |
void setContentType(String |
Определение MIME-типа ответа браузеру. MIME-тип |
type) |
помогает браузеру определить, как отображать |
|
данные. Например, MIME-тип "text/html" указывает, |
|
что ответ является HTML-документом, поэтому |
|
браузер отображает HTML-страницу. |
