Java Servlet API Flashcards

1
Q

Что такое web приложение?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Чем отличается web сервер от сервера приложений?

A

Web server принимает HTTP запросы от браузера клиента и отправляет ответ в виде HTML(Tomcat)
Сервер приложений это web сервер, но еще предоставляет дополнительные средства такие как менеджмент транзаций, JMS, EJB.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое Java Servlet?

A

Это приложение Java, запускаемое и выполняемое в контейнере сервера приложений:

  • загружается веб-сервером в контейнер
  • выполняется на стороне сервера
  • обрабатывает запросы клиентов
  • принимает запросы от других сервлетов
  • динамически генерирует ответы на запросы
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какой интерфейс описывает жизненный цикл сервлета?

A

javax.servlet.Servlet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какой класс представляет методы POST и GET протокола HTTP?

A

HttpServlet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Перечислите методы класса HttpServlet

A
doDelete()
doGet()
doHead()
doOptions()
doPost()
doPut()
doTrace()
getLastModified()
service()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое ServletConfig объект?

A

ServletConfig используется для передачи конфигураций в сервлет.
Каждый сервлет имеет свой собственный ServletConfig.
Может конф игурировать параметры инициализации сервлета

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как получить ServletConfig?

A

Использовать getServletConfig() метод

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие способы задания конфигурации сервлета?

A

Webxml
@WebInitParam
init() метод

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое ServletContext?

A

Это интерфейс, который предоставляет сервлету доступ к параметрам веб приложения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Сколько ServletContext может быть в одном web приложении?

A

Только один

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как получить доступ к ServletContext?

A

Используя метод getServletContext() экземпляра ServletContext.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как установить параметры в ServletContext?

A

Используя тег в файле web.xml

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Чем отличается ServletConfig от ServletContext?

A
один на все сервлет и один на приложение
init параметры для конкретного сервлета
Параметры уровня приложения для всех сервлетов
config нельзя добавлять атрибуты 
context можно добавлять атрибуты
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое RequestDispatcher?

A

Это интерфейс, который используется для перенаправления запроса пользователя на другой ресурс (сервлет, jsp, HTML)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какие есть два метода в RequestDispatcher?

A
void forward(ServletRequest request, ServletResponse response)
void include(ServletRequest request, ServletResponse response)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как получить RequestDispatcher?

A

Используя метод ServletContext:

getRequestDispatcher(String path)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Что такое ServletOutputStream?

A

Это байтовый поток, предназначенный для записи данных ответа сервлета.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Чем отличаются PrintWriter от ServletOutputStream и как их получить?

A

PrintWriter - это символьный поток
ServletOutputStream - байтовый
Чтобы получить их, нужно вызвать метод getOutputStream() или getWriter() из объекта ServletResponse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Возможен ли deadlock в серлетах?

A

Да, возможен. Если одновременно сделать вызвать метод doGet() из метода doPost() и наоборот.

21
Q

Что такое service() метод в сервлете?

Когда он вызывается?

A

Когда контейнер сервлетов получает запрос от клиента, он вызывает service() метод, который основываясь на запросе вызывает метод doGet() или doPost()

22
Q

Как предварительно обработать запросы сервлетов?

A

Использовать фильтры или листенеры для предварительной обработки запросов.

23
Q

Почему не рекомендуется переопределять метод service()

A

service() обрабатывает стандартные запросы HTTP посылая их на методы-обработчики для каждого типа HTTP запроса.

24
Q

Стоит ли использовать конструктор сервлета для конфигураций сервлета?

A

Нет, потому что конструктор не будет иметь доступа к экземпляру ServletConfig.
Для начальной конфигурации сервлета нужно использовать метод init()

25
Q

Чем отличает GenericServlet и HttpServlet?

A

GenericServlet - протокол-независимая реализация сервлетов, когда HttpServlet - использует HTTP протокол для коммуникации.
HttpServlet наследует от GenericServlet и переопределяет некоторые методы, специфические для HTTP протокола.

26
Q

Реализация каких методов сервлетов должны быть потокобезопасными?

A

Init(), destroy вызываются всего один раз за жизненный цикл сервлета, их можно не синхронизировать.
doGet(), doPost() - эти методы вызываются при каждом запросе клиента, и должны быть потокобезопасными.

27
Q

Какие есть области видимости атрибутов сервлетов?

A

Request
Session
Application

28
Q

Что делает метод sendRedirect() из класса ServletResponse?

A

перенаправляет запрос другому приложению, используя конкретный URL.

29
Q

Чем отличается sendRedirect() от forward()?

A
RequestDispatcher forward() используется для перенаправления запроса другому ресурсу, когда ServletRespose sendRedirect() это двухшаговый процесс. Сначала web приложение возвращает код 302(redirect) с URL для посылки запроса.
forward обрабатывается сервлетом, а sendRedirect браузером.
30
Q

Почему класс HttpServlet объявлен как absract?

A

Потому что реализуется паттерн шаблонный метод.
Методы doXxx() имеют default реализацию, которая возвращает 405 Method not implemented ошибку.
Если методы doXxx() были бы абстрактные, пользователю нужно было бы раелизовать их все, а не те, которые нужно.

31
Q

Какие стадии жизненного цикла сервлета?

A

Servlet Class Loading
Servlet Class Initialization
Request Handling
Removal from Service

32
Q

Что такое фильтры в сервлетах?

A

Servlet Filters это подключаемые компоненты Java, которые можно использовать что бы перехватить и обработать запросы и ответы сервлетов.

33
Q

Что такое servlet listeners?

A

Это механизм прослушки и реагирования на события в веб приложении.
Делятся на две категории:
события изменения жизненого цикла сервлета;
события изменения атрибутов.
Имеют два уровня:
уровень контекста;
уровень сессии.

34
Q

Для каких целей используются фильтры?

A

Логирование;
Аутентификация и авторизация запросов к ресурспм;
Форматирование тела запроса перед тем как он попадает в сервлет;
Сжатие данных ответа для пересылки клиенту;
Для добавления cookies и другой информации к ответу.

35
Q

Как создать servlet filter?

A

Унаследовать интерфейс javax.servlet.Filter

init, destroy, doFilter

36
Q

Как работает цепочка фильтров?

A

С помощью метода doFilter() каждый фильтр получает текущий запрос и ответ а также список фильтров FilterChain, предназначенных для обработки. Для передачи управления следующему фильтру вызывается метод экземпляра FilterChain doFilter()

37
Q

Какие есть типы servlet listeners?

A
ServletContextListener
ServletContextAttributeListener
HttpSessionListener
HttpSessionAttributeListener
HttpSessionActivationListener
HttpSessionBindingListener
ServletRequestListener
ServletRequestAttributeListener
38
Q

Как обрабатываются исключительные ситуации, брошенные методами doPost и doGet?

A

Используя обработчик исключений.

Что бы создать такой обработчик нужно унаследоваться от javax.servlet.ServletException

39
Q

Что такое deployment descriptor?

A

Это конфигурационный файл для web приложения, называется web.xml, и находиться в папке WEB-INF. Контейнер сервлетов использует его для конфигураций сервлетов, найстройки контекста, фильтров, листенеров и обработчиков событий

40
Q

За что отвечает параметр load-on-startup у дескриптора развертки?

A

Отвечает за порядок загрузки сервлетов. Если параметр меньше или равно 0, тогда контейнер загрузит сервлет при первом клиентском запросе. Если от 1 и выше тогда в этом порядке: от меньшего к большему.

41
Q

Как получить IP адрес клиента в сервлете?

A

request.getRemoteAddr()

42
Q

Что нового появилось в 3 версии Servlet API?

A

Аннотации;
Веб фрагменты;
Добавление веб компонентов динамически;
Асинхронные процессы.

43
Q

Что такое URL encoding?

A

Это процесс преобразования пользовательского ввода в CGI форму, которая может передаваться через сеть

44
Q

Что такое URL Rewritng?

A

Это техника сохранения состояния информации в браузере пользователя при переходе между страницами. Это как cookies только информация передается через URL как дополнительный параметр.

45
Q

Можно ли выгрузить сервлет из памяти веб сервера без перезапуска сервера?

A

Нет, нельзя

46
Q

Почему GenericServlet и HttpServlet реализуют Serializable интерфейс?

A

Что бы движок сервлетов мог перевести сервлеты в состояние hybernate когда он не используется, и потом возобновить в том же состоянии когда он понадобиться. Также для копирования, что бы повысить баланс загрузки сервера

47
Q

Чем сервлеты отличаются от RMI?

A

Servlets это “серверная” технология, которая работает только на сервере.
RMI это вызов методов, которые исполняются на другой, удаленной JVM, будто бы их вызывают локально. RMI используется для общения между приложениями, а servlets между сервером и клиентом.

48
Q

Что такое контейнер сервлетов?

A

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

49
Q

Можно ли отправить несколько ответов на один запрос?

A

Нет