【问题标题】:Getting the body and response code from an HTTPServletResponse从 HTTPServletResponse 获取正文和响应代码
【发布时间】:2011-11-30 06:48:00
【问题描述】:

我正在尝试为我们的客户端访问 API 时构建一个简单的日志记录系统。我们使用 Spring 连接控制器和处理程序。我正在查看 Spring 的拦截器功能来编写 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。

【问题讨论】:

标签: java spring servlets interceptor


【解决方案1】:

您也许可以调用 getOutputStream() 并阅读它,但我担心它会搞砸流。有一些重置方法,但我自己不熟悉它们的作用。

【讨论】:

    猜你喜欢
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2018-04-21
    • 2013-02-27
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多