我正在尝试为客户端访问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。
答案 0 :(得分:0)
您可以调用getOutputStream()并读取它,但我会担心它搞砸了流。有一些重置方法,但我不熟悉他们自己做的事情。