我在一个Filter里面拦截对jsp页面的请求,
处理完成后在header里面写入两个参数 appid和resid
然后向下传递下面这段数据是我ieHttpHeader抓取的,说明appid和resid已经写入到了header里面
HTTP/1.1 200 OK
appid: 0
resid: 11111
Content-Type: text/html
Content-Length: 577
Date: Tue, 15 Jan 2008 10:48:42 GMT
Server: Apache-Coyote/1.1现在问题是,我通过request.getHeader("appid")取不出来,为什么呢?我应该如何取得这个值呢?谢谢

解决方案 »

  1.   

    request 里面没有 setHeader 这个方法吧?
    所以你应该是对 response 调用的 setHeader。
    但是 response 又不是 request,你跑到 request 里面怎么可能取得到呢?
      

  2.   

    是啊,不过request又没有setHeader方法,所以就没办法了....不过这个问题我自己解决了,解决的办法是建立一个类
    public class MyServletRequest implements HttpServletRequest{        public UAAPServletRequest(HttpServletRequest req, Hashtable responseList) {
    this.req = req;//当前serlvet的request
    this.responseList = responseList;//要添加到header内的属性列表
    }  
            //里面实现所有的方法,返回的值就是req的值,除了以下两个方法
            public String getHeader(String arg0) {
                    //从header取值,先看看responselist有没有,有就返回,没有就从真正的header里面取值返回
    if (this.responseList.get(arg0.toLowerCase()) != null) {
    return (String) this.responseList.get(arg0.toLowerCase().trim());
    } else {
    return req.getHeader(arg0);
    }
    } public Enumeration getHeaderNames() {
                    //返回header的所有名称,这个方法是吧responselist和真正的header属性加在一起返回的
    Hashtable hash=new Hashtable();
    Enumeration enum=req.getHeaderNames();
    while(enum.hasMoreElements()){
    hash.put(enum.nextElement(),"1");
    }
    hash.putAll(this.responseList);
    return hash.keys();
    }
    }然后在servlet里面往下继续传递的时候         MyServletRequest uaapreq=new MyServletRequest(req,responselist);
    filterChain.doFilter(uaapreq, resp);
    恩,然后,在jsp那边,一切都按照原来的方法取就好了...