解决方案 »

  1.   

    我很奇怪你的理解,理解完全有问题啊,建议理解好java基础再去看源码。直接上代码,里面有注释,如下:
    // 首先我们来看HttpServletResponseWrapper的父类ServletResponseWrapper
    public class ServletResponseWrapper implements ServletResponse {
    private ServletResponse response;// 这个只是ServletResponseWrapper的一个变量,可以当做他的一个属性,只不过属性类型就是该类 public ServletResponseWrapper(ServletResponse response) {
    if (response == null) {
    throw new IllegalArgumentException("Response cannot be null");
    }
    this.response = response;
    } public ServletResponse getResponse()// 普通的get方法,不多做解释,获取response这个属性
    {
    return this.response;
    }
    // 其他省略
    } // 然后再看HttpServletResponseWrapper
    public class HttpServletResponseWrapper extends ServletResponseWrapper
    implements HttpServletResponse {
    public HttpServletResponseWrapper(HttpServletResponse response) {
    super(response);
    } private HttpServletResponse _getHttpServletResponse() {// 该方法只是通过父类的get方法获取了response属性
    return ((HttpServletResponse) super.getResponse());
    } public void addCookie(Cookie cookie) {
    _getHttpServletResponse().addCookie(cookie);// response添加cookie,不知道你说的循环从何而来,云里雾里
    }
    // 其他省略
    } // 我不知道你的想法是什么,很怪异,我估计你是不是不太理解类似于下面这个类
    public class A {
    private A a; public A setA(A a) {
    return this.a = a;
    } public A getA() {
    return this.a;
    } }写了这么多才发现只有20分
      

  2.   


    不好意思,我问的不是这个。我的意思是,ServletResponseWrapper类实现了ServletResponse接口,但我在这个包里找不到别的与Response相关的类了,当初就以为ServletResponseWrapper就是tomcat对我们通过browser向服务器请求时所生成的具体对象所对应的类。而现在找到了答案,在org.apache.coyote.Request和org.apache.catalina.Request都是我要的答案。前者通过门面模式、适配器模式转换为后者,其中封装了socket。。