servlets.pdf

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
1 sur 20

Recommandé

servlets1.pdf par
servlets1.pdfservlets1.pdf
servlets1.pdfssuser0562f1
4 vues20 diapositives
Baseof servletsjava intro par
Baseof servletsjava introBaseof servletsjava intro
Baseof servletsjava introalexey1991
754 vues24 diapositives
Bloch, bodoff руководство. сервлеты par
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлетыalexey1991
2K vues33 diapositives
Сервлеты par
СервлетыСервлеты
СервлетыUnguryan Vitaliy
3.8K vues72 diapositives
Введение в Spring par
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
3.1K vues67 diapositives
08-170327133157.pdf par
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdfssuser0562f1
1 vue67 diapositives

Contenu connexe

Similaire à servlets.pdf

Java весна 2014 лекция 2 par
Java весна 2014 лекция 2Java весна 2014 лекция 2
Java весна 2014 лекция 2Technopark
689 vues26 diapositives
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API par
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
570 vues29 diapositives
Web Interface par
Web InterfaceWeb Interface
Web Interfacescassau
451 vues20 diapositives
JavaScript Базовый. Занятие 09. par
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
413 vues25 diapositives
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения par
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложенияСтажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения7bits
630 vues31 diapositives
The Best Portlet par
The Best PortletThe Best Portlet
The Best PortletAlexey Zavizionov
942 vues50 diapositives

Similaire à servlets.pdf(20)

Java весна 2014 лекция 2 par Technopark
Java весна 2014 лекция 2Java весна 2014 лекция 2
Java весна 2014 лекция 2
Technopark689 vues
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API par Ekaterina Kuchinskaya
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Web Interface par scassau
Web InterfaceWeb Interface
Web Interface
scassau451 vues
JavaScript Базовый. Занятие 09. par Igor Shkulipa
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
Igor Shkulipa413 vues
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения par 7bits
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложенияСтажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
7bits630 vues
Java осень 2013 лекция 1-2 par Technopark
Java осень 2013 лекция 1-2Java осень 2013 лекция 1-2
Java осень 2013 лекция 1-2
Technopark453 vues
Средства разработки web приложений (Web frameworks) par Fedor Malyshkin
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)
Fedor Malyshkin1K vues
Selenium 2.0: обзор новых возможностей par Paul Stashevsky
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
Paul Stashevsky2.8K vues
JavaScript Базовый. Занятие 08. par Igor Shkulipa
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
Igor Shkulipa201 vues
Документирование исходных текстов (javadoc) par Fedor Malyshkin
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
Fedor Malyshkin6.8K vues
C# Web. Занятие 01. par Igor Shkulipa
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
Igor Shkulipa1.1K vues
ASP.NET, MVC, ASP.NET MVC par GetDev.NET
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET2.6K vues
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB par Fedor Malyshkin
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Fedor Malyshkin2.2K vues
Разработка мобильного и веб интерфейса для Caché par InterSystems CEE
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE253 vues

Plus de ssuser0562f1

jpa_nus.pdf par
jpa_nus.pdfjpa_nus.pdf
jpa_nus.pdfssuser0562f1
1 vue23 diapositives
0808.pdf par
0808.pdf0808.pdf
0808.pdfssuser0562f1
2 vues53 diapositives
Курсовая (1).pdf par
Курсовая (1).pdfКурсовая (1).pdf
Курсовая (1).pdfssuser0562f1
13 vues51 diapositives
springdatajpatwjug-120527215242-phpapp02.pdf par
springdatajpatwjug-120527215242-phpapp02.pdfspringdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdfssuser0562f1
13 vues33 diapositives
springdatajpa-up.pdf par
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdfssuser0562f1
4 vues32 diapositives
waits.pdf par
waits.pdfwaits.pdf
waits.pdfssuser0562f1
4 vues8 diapositives

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