ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

后台获取 HttpServletResponse 中的值

2021-10-13 09:36:05  阅读:149  来源: 互联网

标签:import writer HttpServletResponse public 获取 wrapperResponse 后台 output response


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

标签:import,writer,HttpServletResponse,public,获取,wrapperResponse,后台,output,response
来源: https://www.cnblogs.com/xueershewang/p/15400595.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有