状态管理
1 复习
跳转到一个显示内容页面,思考一下这个页面的数据是否来源数据库的数据?
如果不需要直接跳转过去.
如果需要,则要进入处理页(servlet,控制器)查数据,将查出来的数据放入请求域中(request.setAttribute),转发到相应的显示数据的页面.
如果当前页面正在执行添加数据的操作,表单将提交的数据发送给后台处理页,处理页通过request.getParameter方式获取,并进行数据库添加数据操作.
2 session
session会话:一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 .
session生命周期:指一个浏览器开始,到浏览器关闭这段时间,session都是有效的.
转发和重定向都不影响session的值的传递.
在服务器启动期间,浏览器没有关闭期间,Session保存的数据是同一个浏览器的所有页面共享.
Session和request一样,其域中的数据都是保存在服务器上.
Session默认有效时间是半个小时
常用的方法
Invalidate方法通常用于退出登录
Session 只保存一些重要的数据,并且这些数据在大多数的页面上都能使用得到.比如说登录的用户对象,或者图形验证码.
3 application
类似”全局变量”,不管哪个用户都能访问的对象.
生命周期:服务器开启到服务器关闭这段时间都有效
常用方法:
使用场景:
在线投票
网站访问次数
在线人数
设置思路:将所有的用户保存在Map中,map中key指user_id,value指当前用户对象.第一次访问当前网页时,从session中取出当前用户对象,创建map,将用户保存到map中,再将map保存到application中.第二次之后的访问,先从application中取出map,判断map中是否已经存在当前的用户,如果有则将原来的用户删除,将当前用户加入map中.如果没有则直接加入.
建议少使用application.
4 Cookie
A Cookie不是内置对象
B Cookie是保存在浏览器中的
C Cookie不能用于保存重要信息,不能直接存储中文字符串.
D Cookie中只能保存字符串数据.
常用方法
如果要在cookie保存中文数据内容,那么使用
如果需要将Cookie内容取出来并转换成原来的中文内容,那么使用