java session 的使用和对状态的保存

web应用为什么要使用状态保存?

因为http协议是无状态协议,http协议是一次请求,一次响应的模式,不会去保存链接状态;

web应用中进行状态保存的方法:

1,在server端处理html:一般我们可以在表单中加入

<INPUT TYPE="hidden" NAME="user"VALUE="Jennifer">

  或者重写URL地址

<A HREF="/orderform.htm?user=Jennifer">Order Now!</A>

  这里的区别在于HTTP协议的请求行使用GET或者POST,可以查看《HTTP协议详解》;

2,使用cookie:cookie是键值对(key,value),且这两者必须是字符串;cookie是保存在客户端的缓存或者文件,cookie的传输主体是浏览器和服务器,在浏览器这边会针对不同的server保存对应的cookie,在每次访问该server时都会把cookie发送给server;cookie是可以设置过期时间的;对于不设置过期时间这个cookie过期时间就是由浏览器决定;浏览器本身可以对cookie做一些相应的设置;

例如chrome:

http://support.google.com/chrome/bin/answer.py?hl=zh-Hans&answer=95647

  他可以默认拦截cookie;

3,关于java中的session保存状态: 本质上session这种机制应该是使用了cookie,但是他把数据保存在了server端,而不像cookie那样每次都要由服务器端传输;它的实现机制是这样子的:对于每个浏览器的访问,用 session ID作为唯一的标识,并且保存在cookie中,有一个session manager 管理每个 session ID所对应的java object,实际上session保存的也键值对,可以这里的值可以使java object而不一定要是string,为什么可以这样的原因是这里保存的数据只在服务器端,传输中唯一使用的标志就是 session ID;session的相关使用可以查看api文档;

 

posted @ 2012-09-09 16:48  elvin'note  阅读(1957)  评论(0编辑  收藏  举报