请问我该如何取出HTTP header的值呢?

littleholly 2008-01-15 06:54:04
我在一个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")取不出来,为什么呢?我应该如何取得这个值呢?谢谢
...全文
672 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
littleholly 2008-01-16
  • 打赏
  • 举报
回复 1
是啊,不过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那边,一切都按照原来的方法取就好了...
捏造的信仰 2008-01-15
  • 打赏
  • 举报
回复
request 里面没有 setHeader 这个方法吧?
所以你应该是对 response 调用的 setHeader。
但是 response 又不是 request,你跑到 request 里面怎么可能取得到呢?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧