Cookie&session

cookie&session的出现:

http协议的无状态特性(对业务处理没有记忆能力)导致如果后续处理需要前面的信息,则它必须重传前面的信息,这也导致每次链接传送数据量增大,为了克服http这个缺陷,出现了两种用于保持http链接状态的技术cookie&session;

1.cookie

cookie是有服务器端生成的,发送给User-Agent(web浏览器),浏览器会将cookie的key/value保存到某个目录下的文本文件中,下次请求同一网站时就发送该cookie给服务器(前提是浏览器设置了启用cookie),cookie名称和值可以由服务器端开发自己定义,对于jsp而言可以直接写入sessionId,这样该服务器可以知道该用户是否合法用户,以及是否需要重新登录等

cookie用途

cookie最典型的应用是判断用户是否已经登录此网站,用户可能会得到提示,在下一次登录是否便捷登录,这些都是cookie的作用还有就是类似“购物车”功能使用;用户在不同商场购物,这些信息会被写入cookie中,在付款的时候提交给服务器;

cookie周期

cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就可以登录了(这个是在用户不会手动删除cookie的前提),还有一些在用户退出的时候就会被删除,这样保证了用户信息的安全性;

cookie在生成的时候就会被指定一个Expire的值,这就是cookie的生命周期,在这个周期内cookie 有效,超出这个时间周期cookie就会被清除,有些页面将cookie的周期设置为0或者-1,这样在关闭页面的时候,就会马上清除cookie,不会记录cookie,这样可以更好的保证用户信息的安全;

2.session

session是一个终端用户与交互系统进行通话的时间间隔,通常指从注册进入系统到注销退出系统之间所经过时间以及如果需要的话,还可以是特定时间,session实际上是一个特定的时间观念;

session生成

当客户端访问服务器端时,服务器根据要求设置session,将会话信息保存在服务器上,同时将标识session的sessionId传递给客户端浏览器,浏览器将这个sessionId保存在内存中,我们称之为无过期时间的cookie,浏览器关闭后,这个cookie就会被清掉,他不会存在于cookie的临时文件中,以后浏览器每次请求都会额外加上这个参数值,服务器会根据这个sesionId,就能获取客户端的数据信息;

sesion创建流程

当用户登录到网站服务器时,先找对应的cookie文件,首次访问是没有cookie文件的,所以在请求头部没有cookie的内容,即在请求头部没有类似cookie:JssJsession=**********的内容,这时候;请求到达服务器;看到没有就会生成一个session,并且由某种算法产生一个值赋值给这个session的id,并将sessionid和sesion对象放到hashmap中,然后将这个session发回客户端,在响应头部出现一行,set-cookie:jsession=***********,浏览器解析后,会将jsessionid和值记录在cookie中;

session作用

当浏览器再次访问其他页面时,浏览器检查有没有cookie,这时cookie会自己把其中的内容添加到请求头中,即在请求头加cookie:jsessionId=*****************;服务器接收请求后会根据Jsession的值知道session的值,在tomcat中两个值是一样的,然后根据sessionId找到对应的session的值可由session中登录后设定的某些值是否为空来判断用户是否登录,当用户退出时,会在请求中字段加入新的jsessionId的值发到服务器,这时服务器根据新的jsessionid找不到对应的session,因此知道是一次新的会话,服务器会新生成一个session并且将客户端发过来的jsession的赋值给这个session的id,如果是客户端禁用了cookie那么服务器可就无法将session内容与客户端对应了

你可能感兴趣的:(java,面试宝典)