ServletRequestWrapper или ServletResponseWrapper в производстве? - PullRequest
3 голосов
/ 17 февраля 2010

Привет, вы видели что-нибудь действительно полезное, расширяющее HttpServletResponseWrapper / HttpServletRequestWrapper или ServletRequestWrapper / ServletResponseWrapper в производственной среде?

Ответы [ 5 ]

3 голосов
/ 17 февраля 2010
  • Обрезать пробелы из сгенерированного HTML, может сэкономить более 50% пропускной способности. У меня был проект, который отображает большие табличные данные (с хорошо выделенным исходным кодом HTML), размер ответа изменился с ~ 200 КБ до ~ 70 КБ, просто обрезав все пробелы.
  • Прозрачно обрабатывает запросы multipart / form-data, помещая данные составной формы обратно в карту параметров запроса, чтобы вы могли использовать request.getParameter() и снова обрабатывать обычным способом ( Servlet <= 2.5 пример </a>, Servlet> = 3.0 пример ).
  • Захватите выходной поток, чтобы иметь копию или MD5-хэш it.
  • Отключение перезаписи URL .

Etcetera .. Etcetera .. Все просто для переопределения и изменения поведения по умолчанию некоторых HttpServletRequest / HttpServletResponse методов.

3 голосов
/ 17 февраля 2010

Я использовал его для «захвата» вывода JSP, чтобы он мог быть преобразован контроллером пересылки. Это было сделано путем переопределения методов getWriter() / getOutputStream().

SiteMesh делает то же самое, захватывая «цель», чтобы украсить ответ.

2 голосов
/ 17 февраля 2010

Я использовал его совсем недавно для захвата заголовков исходящих ответов в целях отладки (getHeaderNames() и getHeader() были добавлены только на стороне ответа в спецификации Servlet 3.0.

Мы также использовали его для сбора метрик в наших сервлетах, переопределив getOutputStream() для возврата реализации OutputStream, которая увеличивает счетчик для каждого проходящего через него байта, чтобы мы могли сказать, каков наш высокий сетевой трафик сервлеты есть.

2 голосов
/ 17 февраля 2010
  • Многие фреймворки (по крайней мере, richfaces, myfaces в моем текущем classpath) используют оболочку запроса для обработки многочастных запросов

  • Spring имеет ContextExposingHttpServletRequest, поэтому бобы Spring доступны в качестве атрибутов запроса.

  • оркестр myfaces использует оболочку ответа для перезаписи URL-адреса, чтобы обеспечить контекст диалога с несколькими окнами

2 голосов
/ 17 февраля 2010

Мы используем его для

  • перезаписать getRemoteAddr() для возврата значений из X-Forwarded-For или X-Real-IP (устанавливается нашим прокси-сервером nginx)

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

  • gzip response

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...