SlideShare a Scribd company logo
Web-технологии и
web-дизайн
Сервлеты и JSP
Беркунский Е.Ю., кафедра ИУСТ, НУК
eugeny.berkunsky@gmail.com
http://www.berkut.mk.ua
Что такое Servlet?
• Сервлет является классом Java, который используется
для расширения возможностей серверов, предназначенных
для размещения приложений. Сервлеты могут отвечать на
запросы и генерировать отклики.
• Базовым классом для всех сервлетов является
javax.servlet.GenericServlet. Этот класс определяет
обобщенный, независимый от протокола сервлет.
• Наиболее распространенный тип сервлета – HTTP-
сервлет. Этот тип сервлета используется в обработке
HTTP-запросов и генерировании HTTP-откликов. HTTP-
сервлет представляет собой класс, который расширяет
класс javax.servlet.http.HttpServlet, являющийся подклассом
базового класса javax.servlet.GenericServlet.
Контейнер сервлетов
Servlet Container
• Контейнер сервлетов – это часть Web сервера.
• Контейнер сервлетов обеспечивает сетевые сервисы,
посредством которых отправляются запросы (requests) и
ответы (responses), декодирует запросы основанные на
MIME, и форматирует основанные на MIME ответы.
• Контейнер сервлетов также управляет сервлетами на
протяжении их жизненного цикла.
Контейнер сервлетов
Web Container
HTTP запросы
• Сервлет должен реализовывать один или более методов для ответов на
определенные HTTP-запросы.
• Эти переопределяемые методы определены в родительском классе
HttpServlet.
• Эти методы названы таким образом, чтобы можно было интуитивно
понять, какой метод использовать в том или ином случае:
HTTP-запрос Метод HTTP-сервлета
GET doGet(HttpServletRequest request, HttpServletResponse response)
POST doPost(HttpServletRequest request, HttpServletResponse response)
PUT doPut(HttpServletRequest request, HttpServletResponse response)
DELETE doDelete(HttpServletRequest request, HttpServletResponse response)
Разработчики приложений никогда не вызывают эти методы напрямую.
Их автоматически вызывает сервер приложений всякий раз, когда получает
соответствующий HTTP-запрос.
HTTP запросы
• HTTP-запрос GET генерируется всякий раз, когда пользователь вводит
URL сервлета в адресной строке обозревателя, либо щелкает по
ссылке, указывающей на URL сервлета, либо отправляет HTML-форму с
использованием метода GET, в которой атрибут action указывает на URL
сервлета.
• В любом из этих случаев код сервлета внутри метода doGet()
запускается на выполнение.
• HTTP-запрос POST обычно генерируется, когда пользователь
отправляет HTML-форму с использованием метода POST и ее атрибут
action указывает на URL сервлета. В этом случае код сервлета внутри
метода doPost()запускается на выполнение.
Простой сервлет
public class SimpleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) {
try {
response.setContentType(”text/html”);
PrintWriter printWriter = response.getWriter();
printWriter.println(”<h2>”);
printWriter.println(
”Если вы читаете это, ваш сервер приложений работает нормально!”);
printWriter.println(”<h2>”);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Простой сервлет
<?xml version=”1.0” encoding=”UTF8”?>
<webapp xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchemainstance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/webapp_3_0.xsd” version=”3.0”>
<servlet>
<servletname>SimpleServlet</servletname>
<servletclass>server.SimpleServlet</servletclass>
</servlet>
<servletmapping>
<servletname>SimpleServlet</servletname>
<urlpattern>/simple</urlpattern>
</servletmapping>
</webapp>
Дескриптор развертывания – web.xml (v 3.0)
Простой сервлет
Сервлет 3.0 делает дескриптор развертывания приложения, файл web.xml,
необязательным.
Сервлеты могут быть сконфигурированы с помощью аннотаций вместо
использования XML.
Если веб-приложение конфигурируется и с помощью аннотаций и с помощью дескриптора
развертывания web.xml, то настройки, указанные в файле web.xml, имеют приоритет.
@WebServlet(name=”simpleservlet”, urlPatterns = {”/simple”})
Простая JSP
• JSP – это страница, содержащая и статическую HTML-разметку, и
динамический контент.
• Динамический контент может быть сгенерирован путем
использования фрагментов кода Java, называемых
скриптлетами(scriptlets), или путем использования стандартных или
пользовательских JSP-тегов.
<%@ page language=”java” contentType=”text/html; charset=UTF-8”
pageEncoding=”UTF-8” %>
<%@ page import=”java.util.Date” %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”>
<title>Дата и время сервера</title>
</head>
<body>
<h1>Дата и время сервера: <% out.print(new Date()); %></h1>
</body>
</html>
Жизненный цикл JSP
1. Translation
2. Compilation
3. Class Loading
4. Instantiation
5. Initialization
6. Request Processing
7. Destroy
Жизненный цикл JSP
1. Translation – JSP контейнер проверяет код
JSP страницы, парсит ее для создания кода
сервлета.
2. Compilation – JSP контейнер компилирует
исходный код jsp класса и создает класс на этой
фазе.
3. Class Loading – контейнер загружает классы
в память на этой фазе.
4. Instantiation – внедрение конструкторов без
параметров созданных классов для
инициализации в памяти классов.
Жизненный цикл JSP
5. Initialization – в контейнере вызывается init
метод объекта JSP класса и инициализируется
конфигурация сервлета с init параметрами,
которые указаны в дескрипторе развертывания
(web.xml). После этой фазы JSP способен
обрабатывать запросы клиентов.
Обычно фазы 1-5 происходят после первого
запроса клиента (т.е. ленивая загрузка), но
можно настроить загрузку и инициализацию JSP
на старте приложения по аналогии с
сервлетами.
Жизненный цикл JSP
6. Request Processing – длительный этап
жизненного цикла - обработка запросов клиента
JSP страницей.
Обработка является многопоточной и
аналогична сервлетам — для каждого запроса
создается новый поток, создаются
объекты ServletRequest и ServletResponse и
происходит внедрение сервис методов JSP.
7. Destroy – последняя фаза жизненного цикла
JSP на которой JSP класс удаляется из памяти.
Обычно это происходит при выключении
сервера или андеплое приложения.
Взаимодействие сервлета и JSP
в рамках шаблона MVC
Реализация MVC при помощи
RequestDispatcher
1. Разработать JavaBeans-объекты, которые будут
представлять данные
2. Использовать сервлет для обработки запросов
– Сервлет считывает параметры запроса, проверяет
входные данные и т.д.
3. Поместить данные в JavaBeans-объекты
– Сервлет тем или иным способом вызывает код бизнес-
логики приложения. Результаты помещаются в
JavaBeans-объекты
4. Сохранить JavaBean в объекте request, session, или
servletContext
– Сервлет вызывает метод setAttribute объекта request,
session, или servletContext, чтобы сохранить ссылку на
бин
Реализация MVC при помощи
RequestDispatcher
5. Перенаправить (forward) запрос к JSP-странице
– Сервлет определяет, какая JSP –страница нужна в
данной ситуации и использует метод forward() объекта
RequestDispatcher для передачи управления этой
странице.
6. Извлечь данные из JavaBeans.
– JSP страница извлекает данные из бинов при помощи
директивы jsp:useBean с соответствующим параметром
scope. Затем страница использует jsp:getProperty или
выражения Expression Language, чтобы вывести
свойства бина
– JSP не создает и не изменяет бин; она просто
извлекает и отображает данные, созданные сервлетом
Сервлеты + JSP
Вопросы?
Web-технологии и
web-дизайн
Сервлеты и JSP
Беркунский Е.Ю., кафедра ИУСТ, НУК
eugeny.berkunsky@gmail.com
http://www.berkut.mk.ua

More Related Content

PDF
servlets1.pdf
PDF
Baseof servletsjava intro
PDF
Bloch, bodoff руководство. сервлеты
PPT
Сервлеты
PPT
Введение в Spring
PDF
08-170327133157.pdf
PDF
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
servlets1.pdf
Baseof servletsjava intro
Bloch, bodoff руководство. сервлеты
Сервлеты
Введение в Spring
08-170327133157.pdf
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)

Similar to servlets.pdf (20)

PDF
Java весна 2014 лекция 2
PPTX
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
ODP
Web Interface
PDF
JavaScript Базовый. Занятие 09.
PDF
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
PPT
The Best Portlet
PDF
Java осень 2013 лекция 1-2
PPT
Средства разработки web приложений (Web frameworks)
PDF
The Old New ASP.NET
PPTX
Основы Java. 4. Web
PPT
Selenium 2.0: обзор новых возможностей
PDF
JavaScript Базовый. Занятие 08.
ODP
Документирование исходных текстов (javadoc)
PDF
C# Web. Занятие 01.
PPTX
ASP.NET, MVC, ASP.NET MVC
PPTX
ASP.NET MVC
PPT
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
PDF
Разработка мобильного и веб интерфейса для Caché
Java весна 2014 лекция 2
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Web Interface
JavaScript Базовый. Занятие 09.
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
The Best Portlet
Java осень 2013 лекция 1-2
Средства разработки web приложений (Web frameworks)
The Old New ASP.NET
Основы Java. 4. Web
Selenium 2.0: обзор новых возможностей
JavaScript Базовый. Занятие 08.
Документирование исходных текстов (javadoc)
C# Web. Занятие 01.
ASP.NET, MVC, ASP.NET MVC
ASP.NET MVC
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Разработка мобильного и веб интерфейса для Caché
Ad

More from ssuser0562f1 (16)

PDF
Алгоритмы - перебор вариантов и простые задачи
PPTX
Jakarta Persistence (JPA) - Web Technologies
PDF
Algorithms and programming in Kotlin - 3
PDF
Algorithms and programming - lecture no 2
PDF
Алгоритмизация и программирование С/С++
PDF
Algorithms and programming lecture in ru
PDF
Geometry algorithms and formulas calculation
PDF
Algorithms in number theory presentation
PDF
jpa_nus.pdf
PDF
0808.pdf
PDF
Курсовая (1).pdf
PDF
springdatajpatwjug-120527215242-phpapp02.pdf
PDF
springdatajpa-up.pdf
PDF
waits.pdf
PDF
waits.pdf
PDF
geometry.pdf
Алгоритмы - перебор вариантов и простые задачи
Jakarta Persistence (JPA) - Web Technologies
Algorithms and programming in Kotlin - 3
Algorithms and programming - lecture no 2
Алгоритмизация и программирование С/С++
Algorithms and programming lecture in ru
Geometry algorithms and formulas calculation
Algorithms in number theory presentation
jpa_nus.pdf
0808.pdf
Курсовая (1).pdf
springdatajpatwjug-120527215242-phpapp02.pdf
springdatajpa-up.pdf
waits.pdf
waits.pdf
geometry.pdf
Ad

servlets.pdf

  • 1. Web-технологии и web-дизайн Сервлеты и JSP Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua
  • 2. Что такое Servlet? • Сервлет является классом Java, который используется для расширения возможностей серверов, предназначенных для размещения приложений. Сервлеты могут отвечать на запросы и генерировать отклики. • Базовым классом для всех сервлетов является javax.servlet.GenericServlet. Этот класс определяет обобщенный, независимый от протокола сервлет. • Наиболее распространенный тип сервлета – HTTP- сервлет. Этот тип сервлета используется в обработке HTTP-запросов и генерировании HTTP-откликов. HTTP- сервлет представляет собой класс, который расширяет класс javax.servlet.http.HttpServlet, являющийся подклассом базового класса javax.servlet.GenericServlet.
  • 3. Контейнер сервлетов Servlet Container • Контейнер сервлетов – это часть Web сервера. • Контейнер сервлетов обеспечивает сетевые сервисы, посредством которых отправляются запросы (requests) и ответы (responses), декодирует запросы основанные на MIME, и форматирует основанные на MIME ответы. • Контейнер сервлетов также управляет сервлетами на протяжении их жизненного цикла.
  • 5. HTTP запросы • Сервлет должен реализовывать один или более методов для ответов на определенные HTTP-запросы. • Эти переопределяемые методы определены в родительском классе HttpServlet. • Эти методы названы таким образом, чтобы можно было интуитивно понять, какой метод использовать в том или ином случае: HTTP-запрос Метод HTTP-сервлета GET doGet(HttpServletRequest request, HttpServletResponse response) POST doPost(HttpServletRequest request, HttpServletResponse response) PUT doPut(HttpServletRequest request, HttpServletResponse response) DELETE doDelete(HttpServletRequest request, HttpServletResponse response) Разработчики приложений никогда не вызывают эти методы напрямую. Их автоматически вызывает сервер приложений всякий раз, когда получает соответствующий HTTP-запрос.
  • 6. HTTP запросы • HTTP-запрос GET генерируется всякий раз, когда пользователь вводит URL сервлета в адресной строке обозревателя, либо щелкает по ссылке, указывающей на URL сервлета, либо отправляет HTML-форму с использованием метода GET, в которой атрибут action указывает на URL сервлета. • В любом из этих случаев код сервлета внутри метода doGet() запускается на выполнение. • HTTP-запрос POST обычно генерируется, когда пользователь отправляет HTML-форму с использованием метода POST и ее атрибут action указывает на URL сервлета. В этом случае код сервлета внутри метода doPost()запускается на выполнение.
  • 7. Простой сервлет public class SimpleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType(”text/html”); PrintWriter printWriter = response.getWriter(); printWriter.println(”<h2>”); printWriter.println( ”Если вы читаете это, ваш сервер приложений работает нормально!”); printWriter.println(”<h2>”); } catch (IOException ex) { ex.printStackTrace(); } } }
  • 8. Простой сервлет <?xml version=”1.0” encoding=”UTF8”?> <webapp xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchemainstance” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webapp_3_0.xsd” version=”3.0”> <servlet> <servletname>SimpleServlet</servletname> <servletclass>server.SimpleServlet</servletclass> </servlet> <servletmapping> <servletname>SimpleServlet</servletname> <urlpattern>/simple</urlpattern> </servletmapping> </webapp> Дескриптор развертывания – web.xml (v 3.0)
  • 9. Простой сервлет Сервлет 3.0 делает дескриптор развертывания приложения, файл web.xml, необязательным. Сервлеты могут быть сконфигурированы с помощью аннотаций вместо использования XML. Если веб-приложение конфигурируется и с помощью аннотаций и с помощью дескриптора развертывания web.xml, то настройки, указанные в файле web.xml, имеют приоритет. @WebServlet(name=”simpleservlet”, urlPatterns = {”/simple”})
  • 10. Простая JSP • JSP – это страница, содержащая и статическую HTML-разметку, и динамический контент. • Динамический контент может быть сгенерирован путем использования фрагментов кода Java, называемых скриптлетами(scriptlets), или путем использования стандартных или пользовательских JSP-тегов. <%@ page language=”java” contentType=”text/html; charset=UTF-8” pageEncoding=”UTF-8” %> <%@ page import=”java.util.Date” %> <!DOCTYPE html> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”> <title>Дата и время сервера</title> </head> <body> <h1>Дата и время сервера: <% out.print(new Date()); %></h1> </body> </html>
  • 11. Жизненный цикл JSP 1. Translation 2. Compilation 3. Class Loading 4. Instantiation 5. Initialization 6. Request Processing 7. Destroy
  • 12. Жизненный цикл JSP 1. Translation – JSP контейнер проверяет код JSP страницы, парсит ее для создания кода сервлета. 2. Compilation – JSP контейнер компилирует исходный код jsp класса и создает класс на этой фазе. 3. Class Loading – контейнер загружает классы в память на этой фазе. 4. Instantiation – внедрение конструкторов без параметров созданных классов для инициализации в памяти классов.
  • 13. Жизненный цикл JSP 5. Initialization – в контейнере вызывается init метод объекта JSP класса и инициализируется конфигурация сервлета с init параметрами, которые указаны в дескрипторе развертывания (web.xml). После этой фазы JSP способен обрабатывать запросы клиентов. Обычно фазы 1-5 происходят после первого запроса клиента (т.е. ленивая загрузка), но можно настроить загрузку и инициализацию JSP на старте приложения по аналогии с сервлетами.
  • 14. Жизненный цикл JSP 6. Request Processing – длительный этап жизненного цикла - обработка запросов клиента JSP страницей. Обработка является многопоточной и аналогична сервлетам — для каждого запроса создается новый поток, создаются объекты ServletRequest и ServletResponse и происходит внедрение сервис методов JSP. 7. Destroy – последняя фаза жизненного цикла JSP на которой JSP класс удаляется из памяти. Обычно это происходит при выключении сервера или андеплое приложения.
  • 15. Взаимодействие сервлета и JSP в рамках шаблона MVC
  • 16. Реализация MVC при помощи RequestDispatcher 1. Разработать JavaBeans-объекты, которые будут представлять данные 2. Использовать сервлет для обработки запросов – Сервлет считывает параметры запроса, проверяет входные данные и т.д. 3. Поместить данные в JavaBeans-объекты – Сервлет тем или иным способом вызывает код бизнес- логики приложения. Результаты помещаются в JavaBeans-объекты 4. Сохранить JavaBean в объекте request, session, или servletContext – Сервлет вызывает метод setAttribute объекта request, session, или servletContext, чтобы сохранить ссылку на бин
  • 17. Реализация MVC при помощи RequestDispatcher 5. Перенаправить (forward) запрос к JSP-странице – Сервлет определяет, какая JSP –страница нужна в данной ситуации и использует метод forward() объекта RequestDispatcher для передачи управления этой странице. 6. Извлечь данные из JavaBeans. – JSP страница извлекает данные из бинов при помощи директивы jsp:useBean с соответствующим параметром scope. Затем страница использует jsp:getProperty или выражения Expression Language, чтобы вывести свойства бина – JSP не создает и не изменяет бин; она просто извлекает и отображает данные, созданные сервлетом
  • 20. Web-технологии и web-дизайн Сервлеты и JSP Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua