過濾器中獲取返回信息


自定義過濾器(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() {

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM