我在一个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")取不出来,为什么呢?我应该如何取得这个值呢?谢谢
处理完成后在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")取不出来,为什么呢?我应该如何取得这个值呢?谢谢
所以你应该是对 response 调用的 setHeader。
但是 response 又不是 request,你跑到 request 里面怎么可能取得到呢?
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那边,一切都按照原来的方法取就好了...