Сервлет — интерфейс, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.
Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах
javax.servlet и javax.servlet.http.Основные методы сервлета:
public void init(ServletConfig config) throws ServletException — запускается сразу после загрузки сервлета в память; public ServletConfig getServletConfig() — возвращает ссылку на объект, который предоставляет доступ к информации о конфигурации сервлета; public String getServletInfo() — возвращает строку, содержащую информацию о сервлете, например: автор и версия сервлета; public void service(ServletRequest request, ServletResponse response) throws ServletException — java.io.IOException вызывается для обработки каждого запроса;public void destroy() — выполняется перед выгрузкой сервлета из памяти.Please open Telegram to view this post
VIEW IN TELEGRAM
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.
Класс, от которого производится наследование, называется предком, базовым или родительским. Новый класс — потомком, наследником или производным классом.
Объяснение кода:
Общие свойства автомобилей выделяем в общий класс-родитель — Car. У любой машины есть год выпуска, название модели и максимальная скорость. Эти свойства выносим в поля model, maxSpeed, yearOfManufacture.
Что касается поведения, любая машина может газовать и тормозить. Это поведение мы определяем в методах gas() и brake().
Конечно, можем обойтись и без родительского класса. Но поскольку каждая машина должна уметь газовать и тормозить, нам придется создавать методы gas() и brake() в классе Truck, в классе Sedan и во всех остальных классах машин.
Please open Telegram to view this post
VIEW IN TELEGRAM
Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный веб-сервер, быть поставщиком страниц для другого веб-сервера, или интегрироваться в Java EE сервер приложений.
Контейнер сервлетов обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
Наиболее известные реализации контейнеров сервлетов:
Please open Telegram to view this post
VIEW IN TELEGRAM
ServletResponse используется для отправки данных клиенту. Все методы данного инструмента служат именно этой цели:
String getCharacterEncoding() — возвращает MIME тип кодировки (к примеру - UTF8), в которой будет выдаваться информация;void setLocale(Locale locale)/Locale getLocale() — указывают на язык используемый в документе;ServletOutputStream getOutputStream()/PrintWriter getWriter() — возвращают потоки вывода данных;void setContentLength(int len) — устанавливает значение поля HTTP заголовка Content-Length;void setContentType(String type) — устанавливает значение поля HTTP заголовка Content-Type;void reset() — позволяет сбросить HTTP заголовок к значениям по-умолчанию, если он ещё не был отправлени др.
Please open Telegram to view this post
VIEW IN TELEGRAM
ServletRequest — интерфейс, который используется для получения параметров соединения, запроса, а также заголовков, входящего потока данных и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
Модульное тестирование (unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
Модульные тесты можно условно поделить на две группы:
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое race condition?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
LinkedHashSet — структура данных, которая хранит элементы в порядке их добавления, а также не допускает дублирования элементов, как и
HashSet.В отличие от
HashSet, LinkedHashSet сохраняет порядок добавления элементов, что может быть полезно в некоторых случаях.Как видно из примера, элементы были добавлены в множество в порядке их добавления, а дубликат элемента "Java" добавлен не был.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает метод intern() в классе String?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
JDBC, Java DataBase Connectivity (соединение с базами данных на Java) — промышленный стандарт взаимодействия Java-приложений с различными СУБД. Реализован в виде пакета
java.sql, входящего в состав Java SE.JDBC основан на концепции драйверов, которые позволяют получать соединение с базой данных по специально описанному URL. При загрузке драйвер регистрирует себя в системе и в дальнейшем автоматически вызывается, когда программа требует URL, содержащий протокол, за который этот драйвер отвечает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из вариантов является строчным комментарием?
Anonymous Quiz
96%
// комментарий
0%
/* комментарий
2%
/* комментарий */
2%
/** комментарий */
Блокирующий метод — метод, который блокируется до тех пор, пока задание не выполнится.
Например метод
accept() у ServerSocket блокируется в ожидании подключения клиента. Здесь блокирование означает, что контроль не вернётся к вызывающему методу до тех пор, пока не выполнится задание. Так же существуют асинхронные или неблокирующиеся методы, которые могут завершится до выполнения задачи.Please open Telegram to view this post
VIEW IN TELEGRAM
JSP (Java Server Pages) — платформонезависимая переносимая и легко расширяемая технология разработки веб-приложений, позволяющая создавать содержимое, которое имеет как статические, так и динамические компоненты.
Страница JSP содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов
HTML, SVG, WML, или XML, и JSP-элементы, которые конструируют динамическое содержимое. Кроме этого могут использоваться библиотеки JSP-тегов, а также EL (Expression Language), для внедрения Java-кода в статичное содержимое JSP-страниц.Код JSP-страницы транслируется в Java-код сервлета с помощью компилятора JSP-страниц Jasper, и затем компилируется в байт-код JVM.
JSP-страницы загружаются на сервере и управляются Java EE Web Application. Обычно такие страницы упакованы в файловые архивы .war и .ear.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какое из перечисленных имён является простым?
Anonymous Quiz
2%
MyClass.name.toString().hashCode()
11%
MyClass.name.toString()
22%
54%
MyClass
12%
Ни один из перечисленных
😁1 1
Queue — это интерфейс в Java Collections Framework, который представляет собой коллекцию элементов, организованных в соответствии с принципом FIFO (First In, First Out). Это означает, что элементы добавляются в конец очереди и извлекаются из начала очереди.
Queue используется в ситуациях, когда необходимо управлять порядком обработки элементов.
В примере мы создаем очередь строк и добавляем в нее три элемента. Затем извлекаем элементы из очереди с помощью метода
poll(), который возвращает и удаляет элемент из начала очереди. Элементы извлекаются в том же порядке, в каком и добавляются.Please open Telegram to view this post
VIEW IN TELEGRAM
FutureTask — отменяемое асинхронное вычисление в параллельном Java приложении. Этот класс предоставляет базовую реализацию Future, с методами для запуска и остановки вычисления, методами для запроса состояния вычисления и извлечения результатов. Результат может быть получен только когда вычисление завершено, метод получения будет заблокирован, если вычисление ещё не завершено.
Объекты FutureTask могут быть использованы для обёртки объектов
Callable и Runnable. Так как FutureTask реализует Runnable, его можно передать в Executor на выполнение.Please open Telegram to view this post
VIEW IN TELEGRAM
Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы
java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.
В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.Обратите внимание, что вы должны использовать формат даты "yyyy-MM-dd" для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
Please open Telegram to view this post
VIEW IN TELEGRAM
Инверсия контроля (inversion of control, IoC) — принцип проектирования, по которому контроль над потоком управления передается фреймворку. Управляющий и прикладной код разделяются. При разработке модуля этот подход избавляет от необходимости знать о других модулях программы и деталях их взаимодействия. Такой код становится более переиспользуемым и модульным, уменьшает связность.
Внедрение зависимостей (Dependency Injection, DI) — одна из реализаций IoC. При взаимодействии с другими модулями, программа оперирует высокоуровневыми абстракциями, тогда как конкретная её реализация поставляется фреймворком.
Стандартная реализация DI — фреймворк инстанциирует все сервисы, и складывает их в IoC-контейнер. При этом специальная сущность, Service Locator, занимается поиском соответствия реализаций абстракциям и их внедрением.
Сущности бизнес-логики в Spring, как и в JavaEE называются
beans. Бины объявляются различными способами, корни большинства из них лежат в понятии Configuration. В качестве контейнера бинов выступает ApplicationContext. Чтобы передать инициализацию зависимости контексту, она помечается аннотацией @Autowired.Please open Telegram to view this post
VIEW IN TELEGRAM