您是否看到在生产环境中延伸HttpServletResponseWrapper
/ HttpServletRequestWrapper
或ServletRequestWrapper
/ ServletResponseWrapper
非常有用的内容?
答案 0 :(得分:3)
我用它来“捕获”JSP的输出,以便转发控制器可以对其进行转换。这是通过覆盖getWriter()
/ getOutputStream()
方法完成的。
SiteMesh执行类似的操作,捕获“目标”以装饰响应。
答案 1 :(得分:3)
request.getParameter()
并再次采用常规方式(Servlet <=2.5 example,Servlet >=3.0 example) Etcetera .. Etcetera ..只是为了覆盖和更改某些HttpServletRequest
/ HttpServletResponse
方法的默认行为。
答案 2 :(得分:2)
我们用它来
覆盖getRemoteAddr()
以返回X-Forwarded-For
或X-Real-IP
的值(由我们的nginx代理设置)
过滤某些标题,例如避免第三方servlet中的内容协商
gzip回复
答案 3 :(得分:2)
许多框架(richfaces,myfaces至少在我当前的类路径上)使用请求包装器来处理多部分请求
Spring有ContextExposingHttpServletRequest
,因此可以将spring bean作为请求属性访问。
myfaces orchestra使用响应包装器重写URL以确保多窗口对话上下文
答案 4 :(得分:2)
我最近才使用它来捕获传出响应头以进行调试(getHeaderNames()
和getHeader()
仅在Servlet 3.0规范的响应端添加。
我们还使用它来收集我们的servlet上的指标,方法是重写getOutputStream()
以返回OutputStream
实现,这会在每个通过它的字节上增加一个计数器,这样我们就可以知道我们的高点了-network-traffic servlets是。