关于Session

    今天指导实习生,让他们编程的时候多思考,有不会的地方就查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文档了吧。。。

 

    

 

posted @ 2016-03-19 00:49  贝勒爷888  阅读(176)  评论(0编辑  收藏  举报