httpclient学习

Session和cookie是有关系的,但是是两码事。
Session 是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取 服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionId 提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。

(又在CSDN上看到,服务器也可以通过URL重写的方式来传递SessionId的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明)


可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。

Cookie是客户端的存储空间,由浏览器来维持。

Apache 的HttpClient工具,在一个应用(应用A)内调用另外一个应用(应用B)的JSP时,如果只打开一个连接,然后在这个连接内,执行B应用的 JSP,则这些JSP之间的SESSION可以保持,但A应用的JSP不能读取B应用的JSP的Session,B应用的JSP同样也不能读取A应用的 JSP的Session。

但是,在使用HttpClient时,可以将A应用的JSP中的Cookie读取出来,然后写入到B应用中,或者 将B应用的JSP中的Cookie读取出来,然后写入到A应用中,这样可以实现Cookie在两个不同应用之间的互相访问。(另:HttpClient中 的Cookie和Request中的Cookie是两种不同的对象,需要对它们进行转换—把数据取出来然后重新写入)

这样,在处理JSP模板时,主程序只能用Cookie和模板JSP交换数据。

详细:http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html
JSOUP html解析API: http://www.open-open.com/jsoup/dom-navigation.htm

HttpClient API:http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/HttpParams.html?is-external=true

你可能感兴趣的:(java,html,浏览器,session,cookie)