2010-10-10 2 views
2

Я смотрю на декоратора HttpServletResponseWrapper, и мне интересно, в чем польза от использования этой оболочки или просто расширения HttpServletResponse и переопределения того, что вам нужно? Какая польза от наличия этой промежуточной оболочки, которая просто делегирует все свои методы?Зачем использовать HttpServletResponseWrapper vs расширение HttpServletResponse напрямую

ТНХ

ответ

4

Это избавляет вас от реализации большого количества шаблонов, если вы в основном обертываете другой HttpServletResponse. Но что более важно, это означает, что ваш фильтр по-прежнему будет работать, когда новая версия спецификации JavaEE будет выпущена с новыми методами на интерфейсе httpServletResponse, вместо сбоя во время выполнения (и времени компиляции), поскольку вы не реализуете новый интерфейс.

2

HttpServletResponse является интерфейсом, * Упаковочный класс реализует этот интерфейс.

Путем расширения * Обертки, вам не нужно выполнять всю плиту котла, только несколько бит, которые вы хотите.

2

Хотя ответ Кэри правильный, это не самая важная причина для класса обертки.

Спецификация Servlet говорит, что если вы пересылаете запрос или ответ внутри сервлета/фильтра/JSP, то объекты запроса и ответа должны быть теми же объектами запроса/ответа, которые первоначально были переданы контейнером или должны быть обертки вокруг их, используя предоставленные классы обертки.

Так что для фильтров, которые хотят переопределить поведение предоставленных объектов запроса/ответа, они должны расширять оболочку, а не просто создавать новый класс запроса/ответа с интерфейсов.

Обратите внимание, что некоторые контейнеры сервлетов (например, более старые версии Tomcat) игнорируют эту часть спецификации.

+0

спасибо. Это тот ответ, который я искал давно. Я также задавался вопросом, зачем создавать обертку или почему бы не изменять сами исходные объекты! Похоже, что оболочка является обязательной, если мы хотим каких-либо изменений в объектах запроса/ответа. –

+0

Любые ссылки на спецификации, упоминающие это? –

Смежные вопросы