过滤器获取response结果中的信息
实现功能中碰到需要获取返回信息中的自定义code
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
RequestWrapper requestWrapper = null;
ResponseWrapper responseWrapper = null;
if (request instanceof HttpServletRequest) {
requestWrapper = new RequestWrapper((HttpServletRequest) request);
}
if (response instanceof HttpServletResponse) {
responseWrapper = new ResponseWrapper((HttpServletResponse) response);
}
Date start = new Date();
// 在chain.doFiler方法中传递新的request对象
if (requestWrapper == null || responseWrapper == null) {
chain.doFilter(request, response);
} else {
chain.doFilter(requestWrapper, responseWrapper);
}
//获取传入数据
String bodyString = HttpHelper.getBodyString(requestWrapper);
String requestURI = requestWrapper.getRequestURI();
// 获取缓存的响应数据
String result = responseWrapper.getTextContent();
if (StringUtils.isNotEmpty(result)) {
//将数据会写返回前端(我这是一个json字符串 如果返回的是字符串就写字符串就好了)
response.getOutputStream().write(JSONObject.parseObject(result).toJSONString().getBytes());
}
System.currentTimeMillis() - start.getTime() + "");
}
@Override
public void destroy() {
}
}