Вы находитесь на странице: 1из 45

Java

SERVLETS FUNDAMENTALS

Author: Olga Smolyakova , PhD


Oracle Certified Java 6 Programmer
Olga_Smolyakova@epam.com

2020 © EPAM Systems, RD Dep. 1

1
Содержание

1. Веб-приложения: основные понятия


2. Основы протокола http
3. Структура web-приложения

2020 © EPAM Systems, RD Dep. 2

2
ВЕБ-ПРИЛОЖЕНИЕ:
ОСНОВНЫЕ ПОНЯТИЯ

2020 © EPAM Systems, RD Dep. 3

3
Веб-приложения: основные понятия. Веб-приложение.

Веб-приложение — клиент-серверное приложение, в


котором клиентом выступает браузер, а сервером — веб-
сервер.

2020 © EPAM Systems, RD Dep. 4

4
Веб-приложения: основные понятия. Сервер.

Сервер

Аппаратное обеспечение, Программный компонент


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

2020 © EPAM Systems, RD Dep. 5

5
Веб-приложения: основные понятия. Веб-сервер.

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

Веб-сервером называют как программное обеспечение, выполняющее функции


веб-сервера, так и непосредственно компьютер , на котором это программное
обеспечение работает.

2020 © EPAM Systems, RD Dep. 6

6
Веб-приложения: основные понятия. Сервер приложений.

Сервер приложений — software framework, предназначенная для


эффективного исполнения программ, скриптов.

Сервер приложений действует как набор компонентов, доступных разработчику


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

Java-сервер приложений — расширенная виртуальная машина для


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

2020 © EPAM Systems, RD Dep. 7

7
Веб-приложения: основные понятия. Контейнер сервлетов.

Контейнер сервлетов — программа, представляющая собой сервер,


который занимается системной поддержкой сервлетов и обеспечивает
их жизненный цикл в соответствии с правилами, определёнными в
спецификациях.
Может работать как полноценный самостоятельный веб-сервер, быть
поставщиком страниц для другого веб-сервера, например Apache, или
интегрироваться в Java EE сервер приложений. Обеспечивает обмен
данными между сервлетом и клиентами, берёт на себя выполнение
таких функций, как создание программной среды для
функционирующего сервлета, идентификацию и авторизацию
клиентов, организацию сессии для каждого из них.

2020 © EPAM Systems, RD Dep. 8

8
Веб-приложения: основные понятия.

Сервер базы данных


(database engine) —
программа, выполняемая как
отдельный процесс. Передает
выбранную из базы
информацию по межпроцес-
сному каналу клиенту. Именно
он, и только он фактически
работает с данными, зани-
мается их размещением на
диске.

2020 © EPAM Systems, RD Dep. 9

9
ОСНОВЫ ПРОТОКОЛА HTTP

2020 © EPAM Systems, RD Dep. 10

10
Основы протокола HTTP. Определение.

HTTP (HyperText Transfer Protocol - протокол передачи


гипертекста) заключается в спецификации обмена
сообщениями определенного текстового формата. Клиент и
сервер обмениваются текстовыми сообщениями состоящими
из заголовка сообщения и его тела.

2020 © EPAM Systems, RD Dep. 11

11
Основы протокола HTTP. Как работает HTTP.

Работа по протоколу HTTP происходит следующим образом:


программа-клиент устанавливает TCP-соединение с
сервером (стандартный номер порта-80) и выдает ему HTTP-
запрос. Сервер обрабатывает этот запрос и выдает HTTP-
ответ клиенту.

2020 © EPAM Systems, RD Dep. 12

12
Основы протокола HTTP. Структура http-запроса.

Структура HTTP-запроса

HTTP-запрос состоит из заголовка запроса и тела запроса, разделенных


пустой строкой. Тело запроса может отсутствовать.

2020 © EPAM Systems, RD Dep. 13

13
Основы протокола HTTP. Структура http-ответа.

Структура HTTP-ответа

Заголовок HTTP-ответа состоит из версии протокола, кода ошибки и


описания ошибки.

2020 © EPAM Systems, RD Dep. 14

14
СТРУКТУРА WEB-
ПРИЛОЖЕНИЯ

2020 © EPAM Systems, RD Dep. 15

15
Структура web-приложения

Структура JEE Web-приложения

2020 © EPAM Systems, RD Dep. 16

16
Структура web-приложения. Контейнер сервлетов.

Для запуска веб-приложения требуется контейнер-сервлетов

2020 © EPAM Systems, RD Dep. 17

17
Структура web-приложения. Стартовая страница Tomcat.

http://127.0.0.1:8080

2020 © EPAM Systems, RD Dep. 18

18
Структура web-приложения. Пример.

Простое веб-приложение. Пример 1.


Создаем каталог firstwebapp Создаем в каталоге firstwebapp файл
index.jsp со следующим содержанием

2020 © EPAM Systems, RD Dep. 19

19
Структура web-приложения. Пример.

Результат:

http://127.0.0.1:8080/firstwebapp
http://127.0.0.1:8080/firstwebapp/index.jsp

202- © EPAM Systems, RD Dep. 20

20
Структура web-приложения. Пример.

Простое веб-приложение. Пример 2.


Создаем в
каталоге
firstwebapp
директорию jsp
с файлом
main.jsp

2020 © EPAM Systems, RD Dep. 21

21
Структура web-приложения. Пример.

Содержание файлов index.jsp и


main.jsp

2020 © EPAM Systems, RD Dep. 22

22
Структура web-приложения. Пример.

Результат:

http://127.0.0.1:8080/
firstwebapp/jsp/
main.jsp

http://127.0.0.1:8080/firstwebapp/index.jsp

2020 © EPAM Systems, RD Dep. 23

23
Структура web-приложения. Пример.

Простое веб-приложение. Пример 3.

2020 © EPAM Systems, RD Dep. 24

24
Структура web-приложения. Пример.

Содержание файлов index.jsp и


main.jsp

2020 © EPAM Systems, RD Dep. 25

25
Структура web-приложения. Пример.

Содержание файла web.xml

2020 © EPAM Systems, RD Dep. 26

26
Структура web-приложения. Пример.

Результат:

http://127.0.0.1:8080/
firstwebapp/main

http://127.0.0.1:8080/firstwebapp/index.jsp

2020 © EPAM Systems, RD Dep. 27

27
Структура web-приложения.

Базовая структура веб-приложения должна включать корневую


директорию, WEB-INF директорию и дескриптор
развертывания web.xml.

Название корневого каталога будет частью URL, указывающего


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

Например, вызов index.html файла, расположенного в корне


каталога ‘mysite’, может быть сделан как:

http://localhost:8080/mysite или
http://localhost:8080/mysite/index.html

2020 © EPAM Systems, RD Dep. 28

28
Структура web-приложения.

Web.xml конфигурационный файл используется для:

 Объявление Servlets и JSPs.


 Отображения Servlets и JSPs в URL шаблоны
 Определения welcom-страниц
 Установления безопасности содержимого, ролей и
методов аутентификации.

2020 © EPAM Systems, RD Dep. 29

29
Структура web-приложения. Пример.

Простое веб-приложение. Пример 4.

2020 © EPAM Systems, RD Dep. 30

30
Структура web-приложения. Пример.

Содержание файла web.xml

2020 © EPAM Systems, RD Dep. 31

31
Структура web-приложения. Пример.

Controller.java
package myapp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
public Controller() { super(); }
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
processRequest();
}
protected void doPost(HttpServletRequest request, HttpServletResponse
{
response) throws ServletException, IOException
processRequest();
}
private void processRequest() {
System.out.println("I am here!!!");
}
}

2020 © EPAM Systems, RD Dep. 32

32
Структура web-приложения. Пример.

Результат:

http://127.0.0.1:8080/firstwebapp/Controller

2020 © EPAM Systems, RD Dep. 33

33
Структура web-приложения.

Любой класс, который загружен и выполнен в веб-контейнерах,


должен быть расположен в WEB-INF\classes.

Это могут быть:


 Servlets
 Java Beans (used in JSP)
 Tag libraries classes (used in JSP)
 Helper classes

Другие файлы как JSPs и статическое содержание могут быть


расположены где угодно в соответствии с корневой
директорией.

2020 © EPAM Systems, RD Dep. 34

34
Структура web-приложения. Пример.

Простое веб-приложение. Пример 5.

2020 © EPAM Systems, RD Dep. 35

35
Структура web-приложения. Пример.

Содержание файла index.jsp

2020 © EPAM Systems, RD Dep. 36

36
Структура web-приложения. Пример.

Содержание файла web.xml

2020 © EPAM Systems, RD Dep. 37

37
Структура web-приложения. Пример.

Controller.java
package myapp;
import …
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;

public Controller() { super(); }


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {processRequest(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {processRequest(request, response); }

private void processRequest(HttpServletRequest request,


HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<meta http-equiv=\"Content-Type\"
content=\"text/html; charset=utf-8\">");
out.println("<title>Title</title>");
out.println("</head><body>");
out.println("<h1> Hello, world!!! </h1>");
out.println("</body></html>");
}
}

2020 © EPAM Systems, RD Dep. 38

38
Структура web-приложения. Пример.

Результат:

2020 © EPAM Systems, RD Dep. 39

39
Структура web-приложения. Пример.

Простое веб-приложение. Пример 6.

2020 © EPAM Systems, RD Dep. 40

40
Структура web-приложения. Пример.

Содержание файла index.jsp

2020 © EPAM Systems, RD Dep. 41

41
Структура web-приложения. Пример.

Содержание файла main.jsp

2020 © EPAM Systems, RD Dep. 42

42
Структура web-приложения. Пример.

Controller.java
package myapp;
import …
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
public Controller() { super(); }
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {processRequest(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {processRequest(request, response); }

private void processRequest(HttpServletRequest request,


HttpServletResponse response) throws IOException, ServletException {

RequestDispatcher requestDispatcher =
request.getRequestDispatcher("/WEB-INF/jsp/main.jsp");

requestDispatcher.forward(request, response);

}
}

2020 © EPAM Systems, RD Dep. 43

43
Структура web-приложения. Пример.

Результат:

2020 © EPAM Systems, RD Dep. 44

44
СПАСИБО ЗА ВНИМАНИЕ!

ВОПРОСЫ?
Java
Servlets Fundamentals

Author: Olga Smolyakova , PhD


Oracle Certified Java 6 Programmer
Olga_Smolyakova@epam.com

2020 © EPAM Systems, RD Dep. 45

45