zoukankan      html  css  js  c++  java
  • 过滤器中获取返回信息

    自定义过滤器(Filter), 获取返回值

    public class ResponseWrapper extends HttpServletResponseWrapper {

    private ByteArrayOutputStream buffer;

    private ServletOutputStream out;

    public ResponseWrapper(HttpServletResponse httpServletResponse) {
    super(httpServletResponse);
    buffer = new ByteArrayOutputStream();
    out = new WrapperOutputStream(buffer);
    }

    @Override
    public ServletOutputStream getOutputStream() throws IOException {
    return out;
    }

    @Override
    public void flushBuffer() throws IOException {
    if (out != null) {
    out.flush();
    }
    }

    public byte[] getContent() throws IOException {
    flushBuffer();
    return buffer.toByteArray();
    }

    class WrapperOutputStream extends ServletOutputStream {
    private ByteArrayOutputStream bos;

    public WrapperOutputStream(ByteArrayOutputStream bos) {
    this.bos = bos;
    }

    @Override
    public void write(int b) throws IOException {
    bos.write(b);
    }

    @Override
    public boolean isReady() {
    return false;
    }

    @Override
    public void setWriteListener(WriteListener arg0) {

    }
    }

    自定义过滤器类CustomFilter实现Filter接口;

    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 {
    ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse)response);
    chain.doFilter(request, wrapperResponse);
    byte[] content = wrapperResponse.getContent();
    if(content.length > 0) {
    String str = new String(content, "UTF-8");
    JsonObject fromJson = new Gson().fromJson(str, JsonObject.class);
    if(fromJson.get("status").toString().equals("200")) {
    //do something
    }
    }
    }
    @Override
    public void destroy() {

    }

  • 相关阅读:
    KMeans Algorithm
    [Little Case]Reconstruct Tangent From Point Cloud
    来本有趣的电子书——林产与木材科学导论
    Lafortune Paper In RenderMan
    【AI】人类的记忆是不是差值存储的?
    【AI】关于人工情感的一些随想
    【毕设准备】硬件准备
    《人脑之谜》读书笔记
    【原创】C#生成类属性set get
    【C#入门】第一个C#下windows程序
  • 原文地址:https://www.cnblogs.com/wjlstation/p/13812165.html
Copyright © 2011-2022 走看看