当客户端首次请求session对象时候,服务器会为其创建一个session,并计算出具有唯一性的sessionId,用来标识该session对象,并将被其包含在本次请求响应中返回给客户端,客户端一般采用cookie对其进行保存。在session有效期,当浏览器下次请求时,浏览器会自动将sessionId添加到请求头中,服务器可在接收到的请求中得到sessionId查询服务端的session,用于判断用户状态与身份等。
有时,cookie会在客户端被禁用,此时解决方法一般是采用URL重写(作为查询参数或是URL路径的附加信息)或是使用隐藏表单字段进行处理。
Session用户会话对象,代表用户在本站点的访问信息。
Session的失效机制,分为自动失效和手动失效。
使用session和不使用session的区别:
不使用session,那么我们可以不用登录账号直接输入网址,进入用户界面,只有通过session,才可以使得用户的session的值为空的情况下,进入不了用户的网页。
自动失效
在web.xml文件中配置,单位是分钟,一般自动失效默认为30分钟
<session-config>
<session-timeout>10</session-timeout>
</session-config>
手动失效
调用session.invalidate()直接销毁session对象
session手动失效 session保存的信息清空
Cookie
cookie对象,运行在客户端浏览器,不安全,用户可以伪造,可以保存一些不重要的信息。
设置cookie过期时间 负数表示永久保存 setMaxAge()
Cookie保存中文会出现乱码 需要用URLEncoder.encode设置支持中文 然后用URLDecoder.decode进行解码
Cookie不支持中文,但是可以通过转化的方法,让他可以支持中文【Cookie是不支持中文的】
当触发选中记住密码的时候触发on事件,后台将创建一个Cookie对象,保存账号密码,setMaxAge设置的时间为负数表示永久保存。
那么Session和Cookie的区别在于哪里呢?
Session保存当前登录用户的状态信息,session是运行在服务器端,安全的,占用服务器端的内存空间。
Cookie对象,运行在客户端浏览器,不安全,可以伪造,可以保存一些不中啊哟的信息。