后台獲取 HttpServletResponse 中的值


1:具體步驟   寫個類繼承HttpServletResponseWrapper 在類里  輸出respopnse中的值

2: 在過濾器哪里引用-----之后在將數據寫入到response中

 

類的寫法

package org.gocom.components.coframe.auth.intercepter;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class DatasWrapper extends HttpServletResponseWrapper {

private class ResponsePrintWriter extends PrintWriter
{
ByteArrayOutputStream output;

public ResponsePrintWriter(ByteArrayOutputStream output)
{
super(output);
this.output = output;
}

public ByteArrayOutputStream getByteArrayOutputStream()
{
return output;
}
}

private ResponsePrintWriter writer;
private ByteArrayOutputStream output;

public DatasWrapper(HttpServletResponse httpServletResponse)
{
super(httpServletResponse);
output = new ByteArrayOutputStream();
writer = new ResponsePrintWriter(output);
}

public void finalize() throws Throwable
{
super.finalize();
output.close();
writer.close();
}

public String getContent()
{
try
{
writer.flush();
return writer.getByteArrayOutputStream().toString("GBK");
}
catch(UnsupportedEncodingException e)
{
return "UnsupportedEncoding";
}
}

public void close() throws IOException
{
writer.close();
}

public PrintWriter getWriter() throws IOException
{
return writer;
}

}

 

過濾器的寫法  , 順序  在 chain 之前創建繼承類wrapperResponse   , 將wrapperResponse 傳入chain ,之后就可以用wrapperResponse 獲取想要得值----最后在將值寫入到reponse中

HttpServletResponse httpRep = (HttpServletResponse) response;  // 傳進的response 

DatasWrapper wrapperResponse = new DatasWrapper(httpRep); //封裝response

chain.doIntercept(httpReq, wrapperResponse);    //  在 chain的時候將封裝的wrapperResponse傳入  

String html = wrapperResponse.getContent();  // 在chain 后 獲取response  中得值  

response.setContentLength(-1);
response.getWriter().write( html);   //  將值重新寫入到 response    這里得response 是傳入過濾器中,不是封裝得wrapperResponse


免責聲明!

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



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