从HTTPServletResponse获取正文和响应代码

时间:2011-10-03 22:32:46

标签: java spring servlets interceptor

我正在尝试为客户端访问API时构建一个简单的日志记录系统。我们使用Spring来连接控制器和处理程序。我正在寻找Spring的Interceptor功能来编写postHandle()方法。不幸的是,与我在这里看到的所有代码示例不同,HttpServletResponse没有,例如,getStatus()方法。我假设我们使用的是错误的Java版本。

我们需要来自HttpServletResponse对象的正文和响应代码:我怎样才能获得这些代码?

编辑:我们选择过滤器:

public void doFilter(
    ServletRequest request,
    ServletResponse response,
    FilterChain chain) throws IOException, ServletException {

    RichHttpServletResponse richResponse=new RichHttpServletResponse((HttpServletResponse)response);
    chain.doFilter(request, richResponse);
}

RichHttpServletResponse在其构造函数中将servlet响应作为参数,并覆盖某些方法,例如sendError(),并将值传递给实际的servlet响应。 webmvc-config XML看起来像这样:

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
  <sec:filter-chain-map path-type="ant">
    <sec:filter-chain pattern="/**"
      filters="requestObjectFilter" />
  </sec:filter-chain-map>
</bean>

使用bean def。

1 个答案:

答案 0 :(得分:0)

您可以调用getOutputStream()并读取它,但我会担心它搞砸了流。有一些重置方法,但我不熟悉他们自己做的事情。