今天指导实习生,让他们编程的时候多思考,有不会的地方就查api,看源码,结果被一位童鞋问住了。
问题是这样的:session.getAttribute("1")是什么意思?
我就直接让她查看jdk的api文档了 。
哈哈,一查,木有。。。
回到家很纠结,不能误导别人啊,于是百度了一番。。。有了下文。
******************************我是分割线*********************************************
1.查看了下tomcat的api:
嗯,看起来已经讲得比较明白了,返回一个绑定了具有特定名字的对象 ,参数是一个指定该对象的名字的字符串。说白了就是根据session里的对象名来获取对象。
2.反编译了tomcat里的servlet-api.jar
啊啊啊啊啊啊。。。。怎么全是抽象方法!!!不服。
于是又百度了一番。。。
3.反编译catalina.jar,查看org.apache.catalina.connector.Request类。
哈哈,终于找到了!!为了弄清真相,研究下coyoteRequest对象的初始化
public void setCoyoteRequest(org.apache.coyote.Request coyoteRequest)
{
this.coyoteRequest = coyoteRequest;
this.inputBuffer.setRequest(coyoteRequest);
}
于是,又百度了一番,反编译了tomcat-coyote.jar包
查看org.apache.coyote.CoyoteAdapter类
找到了getAttribute方法,哈哈,感觉离成功就差一步了!!
public Object getAttribute(String name) {
return this.attributes.get(name);
}
这里的this.attributes是什么?
private final HashMap<String, Object> attributes = new HashMap();
哈哈,原来是一个哈希map。
so,可以查看jdk的api文档了吧。。。