• 后台获取 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

  • 相关阅读:
    poj1141
    poj1260
    poj1080
    poj1221
    用Microsoft Office SharePoint Designer 2007开发aspx
    在Web Part中使用User Control
    MOSS中的WebPart开发
    在MOSS中开发一个模块化的feature
    SharePoint Web Service的身份验证
    MOSS中对列表的一些操作(创建,查询等)
  • 原文地址:https://www.cnblogs.com/xueershewang/p/15400595.html
Copyright © 2020-2023  润新知