JSP状态管理
HTTP协议的无状态性
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端的请求。但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚刚的那个浏览器。
简单的说,服务器不会记住哪个浏览器访问过自己,所以称为无状态协议。
保存用户状态的两个机制
服务端技术:Session
客户端技术:Cookie
Cookie:Web服务器保存在客户端的一系列文本信息。
典型用法:判断注册用户是否登录网站,信息的相关推荐和记住用户名(xx天内免登录)
JSP创建与使用Cookie
创建Cookie对象
写入Cookie对象
读取Cookie对象
Cookie对象的常用方法
- void setMaxAge(int expiry) 设置Cookie的有效期,秒/单位
- int getMaxAge() 获取Cookie的有效时间
- void setValue(String value) 在Cookie创建后,对Cookie进行赋值
- String getName() 获取Cookie的名称
- String getValue() 获取Cookie的值
使用Cookie实现登录
这个实例使用了三个jsp页面,分别是登录页面login.jsp、处理登录页面dologin.jsp和显示用户信息users.jsp。
login.jsp页面,脚本语言里实现的是如果上次有保存用户名和密码的Cookie,那么就在表单里显示出来。
处理登录页面dologin.jsp
如果点击了有相应的Cookie被保存,那么就可以查看到我们的用户名和密码
Session和Cookie的对比
共同点:用来保存用户的状态信息且都会过期
不同点:
- Session在服务端内存中保存用户信息,Cookie以文本形式保存在客户端
- Session保存在Object类型,Cookie保存的是String类型
- Session随会话的结束而将其存储的数据销毁,Cookie可以长期保存在客户端
- Session安全性较高,保存重要的信息,Cookie保存不重要的用户信息