Gymterview
junior

Какие классы-обертки для сервлетов вы знаете

Servlet API предоставляет четыре класса-обёртки (Wrapper/Decorator pattern), которые позволяют модифицировать поведение запроса или ответа без изменения оригинальных объектов:

Класс-обёртка Оборачивает
ServletRequestWrapper ServletRequest
HttpServletRequestWrapper HttpServletRequest
ServletResponseWrapper ServletResponse
HttpServletResponseWrapper HttpServletResponse

Обёртки чаще всего используются в фильтрах для модификации запроса или ответа перед передачей следующему звену в цепочке. Например, HttpServletRequestWrapper можно использовать для добавления заголовков, модификации параметров или кэширования тела запроса для повторного чтения.

В Spring Security активно используются обёртки для добавления информации об аутентифицированном пользователе в запрос. SecurityContextHolderAwareRequestWrapper оборачивает запрос, добавляя методы getUserPrincipal() и isUserInRole().

На собеседовании: упомяните паттерн Decorator — это показывает понимание Design Patterns. Практический пример: обёртка для кэширования InputStream запроса, чтобы тело можно было прочитать несколько раз (по умолчанию поток читается один раз).