Java Servlet API Flashcards
Что такое web приложение?
Это программные модули, которые работает на сервере и предоставляют статический и динамический контент браузеру.
Чем отличается web сервер от сервера приложений?
Web server принимает HTTP запросы от браузера клиента и отправляет ответ в виде HTML(Tomcat)
Сервер приложений это web сервер, но еще предоставляет дополнительные средства такие как менеджмент транзаций, JMS, EJB.
Что такое Java Servlet?
Это приложение Java, запускаемое и выполняемое в контейнере сервера приложений:
- загружается веб-сервером в контейнер
- выполняется на стороне сервера
- обрабатывает запросы клиентов
- принимает запросы от других сервлетов
- динамически генерирует ответы на запросы
Какой интерфейс описывает жизненный цикл сервлета?
javax.servlet.Servlet
Какой класс представляет методы POST и GET протокола HTTP?
HttpServlet
Перечислите методы класса HttpServlet
doDelete() doGet() doHead() doOptions() doPost() doPut() doTrace() getLastModified() service()
Что такое ServletConfig объект?
ServletConfig используется для передачи конфигураций в сервлет.
Каждый сервлет имеет свой собственный ServletConfig.
Может конф игурировать параметры инициализации сервлета
Как получить ServletConfig?
Использовать getServletConfig() метод
Какие способы задания конфигурации сервлета?
Webxml
@WebInitParam
init() метод
Что такое ServletContext?
Это интерфейс, который предоставляет сервлету доступ к параметрам веб приложения.
Сколько ServletContext может быть в одном web приложении?
Только один
Как получить доступ к ServletContext?
Используя метод getServletContext() экземпляра ServletContext.
Как установить параметры в ServletContext?
Используя тег в файле web.xml
Чем отличается ServletConfig от ServletContext?
один на все сервлет и один на приложение init параметры для конкретного сервлета Параметры уровня приложения для всех сервлетов config нельзя добавлять атрибуты context можно добавлять атрибуты
Что такое RequestDispatcher?
Это интерфейс, который используется для перенаправления запроса пользователя на другой ресурс (сервлет, jsp, HTML)
Какие есть два метода в RequestDispatcher?
void forward(ServletRequest request, ServletResponse response) void include(ServletRequest request, ServletResponse response)
Как получить RequestDispatcher?
Используя метод ServletContext:
getRequestDispatcher(String path)
Что такое ServletOutputStream?
Это байтовый поток, предназначенный для записи данных ответа сервлета.
Чем отличаются PrintWriter от ServletOutputStream и как их получить?
PrintWriter - это символьный поток
ServletOutputStream - байтовый
Чтобы получить их, нужно вызвать метод getOutputStream() или getWriter() из объекта ServletResponse
Возможен ли deadlock в серлетах?
Да, возможен. Если одновременно сделать вызвать метод doGet() из метода doPost() и наоборот.
Что такое service() метод в сервлете?
Когда он вызывается?
Когда контейнер сервлетов получает запрос от клиента, он вызывает service() метод, который основываясь на запросе вызывает метод doGet() или doPost()
Как предварительно обработать запросы сервлетов?
Использовать фильтры или листенеры для предварительной обработки запросов.
Почему не рекомендуется переопределять метод service()
service() обрабатывает стандартные запросы HTTP посылая их на методы-обработчики для каждого типа HTTP запроса.
Стоит ли использовать конструктор сервлета для конфигураций сервлета?
Нет, потому что конструктор не будет иметь доступа к экземпляру ServletConfig.
Для начальной конфигурации сервлета нужно использовать метод init()
Чем отличает GenericServlet и HttpServlet?
GenericServlet - протокол-независимая реализация сервлетов, когда HttpServlet - использует HTTP протокол для коммуникации.
HttpServlet наследует от GenericServlet и переопределяет некоторые методы, специфические для HTTP протокола.
Реализация каких методов сервлетов должны быть потокобезопасными?
Init(), destroy вызываются всего один раз за жизненный цикл сервлета, их можно не синхронизировать.
doGet(), doPost() - эти методы вызываются при каждом запросе клиента, и должны быть потокобезопасными.
Какие есть области видимости атрибутов сервлетов?
Request
Session
Application
Что делает метод sendRedirect() из класса ServletResponse?
перенаправляет запрос другому приложению, используя конкретный URL.
Чем отличается sendRedirect() от forward()?
RequestDispatcher forward() используется для перенаправления запроса другому ресурсу, когда ServletRespose sendRedirect() это двухшаговый процесс. Сначала web приложение возвращает код 302(redirect) с URL для посылки запроса. forward обрабатывается сервлетом, а sendRedirect браузером.
Почему класс HttpServlet объявлен как absract?
Потому что реализуется паттерн шаблонный метод.
Методы doXxx() имеют default реализацию, которая возвращает 405 Method not implemented ошибку.
Если методы doXxx() были бы абстрактные, пользователю нужно было бы раелизовать их все, а не те, которые нужно.
Какие стадии жизненного цикла сервлета?
Servlet Class Loading
Servlet Class Initialization
Request Handling
Removal from Service
Что такое фильтры в сервлетах?
Servlet Filters это подключаемые компоненты Java, которые можно использовать что бы перехватить и обработать запросы и ответы сервлетов.
Что такое servlet listeners?
Это механизм прослушки и реагирования на события в веб приложении.
Делятся на две категории:
события изменения жизненого цикла сервлета;
события изменения атрибутов.
Имеют два уровня:
уровень контекста;
уровень сессии.
Для каких целей используются фильтры?
Логирование;
Аутентификация и авторизация запросов к ресурспм;
Форматирование тела запроса перед тем как он попадает в сервлет;
Сжатие данных ответа для пересылки клиенту;
Для добавления cookies и другой информации к ответу.
Как создать servlet filter?
Унаследовать интерфейс javax.servlet.Filter
init, destroy, doFilter
Как работает цепочка фильтров?
С помощью метода doFilter() каждый фильтр получает текущий запрос и ответ а также список фильтров FilterChain, предназначенных для обработки. Для передачи управления следующему фильтру вызывается метод экземпляра FilterChain doFilter()
Какие есть типы servlet listeners?
ServletContextListener ServletContextAttributeListener HttpSessionListener HttpSessionAttributeListener HttpSessionActivationListener HttpSessionBindingListener ServletRequestListener ServletRequestAttributeListener
Как обрабатываются исключительные ситуации, брошенные методами doPost и doGet?
Используя обработчик исключений.
Что бы создать такой обработчик нужно унаследоваться от javax.servlet.ServletException
Что такое deployment descriptor?
Это конфигурационный файл для web приложения, называется web.xml, и находиться в папке WEB-INF. Контейнер сервлетов использует его для конфигураций сервлетов, найстройки контекста, фильтров, листенеров и обработчиков событий
За что отвечает параметр load-on-startup у дескриптора развертки?
Отвечает за порядок загрузки сервлетов. Если параметр меньше или равно 0, тогда контейнер загрузит сервлет при первом клиентском запросе. Если от 1 и выше тогда в этом порядке: от меньшего к большему.
Как получить IP адрес клиента в сервлете?
request.getRemoteAddr()
Что нового появилось в 3 версии Servlet API?
Аннотации;
Веб фрагменты;
Добавление веб компонентов динамически;
Асинхронные процессы.
Что такое URL encoding?
Это процесс преобразования пользовательского ввода в CGI форму, которая может передаваться через сеть
Что такое URL Rewritng?
Это техника сохранения состояния информации в браузере пользователя при переходе между страницами. Это как cookies только информация передается через URL как дополнительный параметр.
Можно ли выгрузить сервлет из памяти веб сервера без перезапуска сервера?
Нет, нельзя
Почему GenericServlet и HttpServlet реализуют Serializable интерфейс?
Что бы движок сервлетов мог перевести сервлеты в состояние hybernate когда он не используется, и потом возобновить в том же состоянии когда он понадобиться. Также для копирования, что бы повысить баланс загрузки сервера
Чем сервлеты отличаются от RMI?
Servlets это “серверная” технология, которая работает только на сервере.
RMI это вызов методов, которые исполняются на другой, удаленной JVM, будто бы их вызывают локально. RMI используется для общения между приложениями, а servlets между сервером и клиентом.
Что такое контейнер сервлетов?
Контейнер сервлетов - программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определенными в спецификациях. Может работать как самостоятельный веб-сервер быть поставщиком страниц для другого веб-сервера, например Apache, или интегрироваться с Java EE сервер приложением.
Можно ли отправить несколько ответов на один запрос?
Нет