数据的存储
- Cookie
- Session
- Application
解决乱码问题
设置编码格式 | String URLEncoder.encode(变量 ,编码格式 ) |
---|---|
设置解码格式 | String URLDecoder.decode(变量 ,解码格式 ) |
- 编码和解码通常一起使用
- 适用于多种场合
Cookie
-
什么是Cookie:数据存储对象之一
-
Cookie的作用:临时以文件的形式将数据存储在用户的计算机上
-
保存数据的形式:key-value
-
保存数据的位置:浏览器的temp文件夹(每个浏览器的temp文件夹互相独立)
-
保存数据的种类:账户信息(不存密码)、搜索记录、…
注意:
- 同一个浏览器下,Cookie对于该浏览器中打开的所有网站都是透明的!!!
- 不同浏览器不能获取对方的cookie
-
Cookie的使用:
创建Cookie对象 Cookie cookie = new Cookie(String key,String value) 保存Cookie对象 response.addCookie(Cookie cookie) 设置Cookie的保存时间 cookie.setMaxAge(int time) 读取Cookie对象 Cookie[ ] cookies=request.getCookies() 获取已读取对象中的key cookies.getName() 获取已读取对象中的value cookies.getValue()
注意:
- Cookie保存在客户端,服务器没有权限控制客户端的内存,所以只能以String类型存储键值对
- Cookie对象由response保存
- 保存不能放在转跳之后,因为保存Cookie是浏览器行为,如果保存放在转跳之后,虽然代码会正常执行,但是浏览器不会保存Cookie
- Cookie对象的保存时间以秒为单位
- Cookie对象由request读取
- 使用Cookie数组接收读取到的对象
session(会话)
- 什么是会话:浏览器与服务器之间的一次通话,每次打开浏览器将自动产生一个新的会话对象,在原浏览器不关闭的情况下,访问任何网站都不改变会话对象
注意:重新打开浏览器或者打开新的浏览器,都算一次新的会话
- 会话的作用:可以在多次请求中保存和使用数据
- 如何区别会话:每一次会话,服务器都会给客户端分配一个全服务器唯一的sessionid,客户端向服务器发起请求时会携带该sessionid**(服务器重启时,sessionid才会从服务器上消失)**
注意:因此浏览器无法得到其他浏览器的会话数据,也得不到该浏览器上一次的会话数据
-
session运行在哪里:服务器
-
session的生命周期:通常为20分钟作用(如果用户长时间不进行网页操作)
-
session的使用:
session对象保存数据 session.setAttribute(String key,Object value) session对象获取数据 session.getAttribute(String key,Object value)
注意:由于session运行于服务器,所以session对象有控制内存的权限,也因此session的value能以Object的形式存储(Object—>要开辟空间—>要运行Java代码)
application
-
什么是application: 当网站服务器开启时,application对象就被创建,所有用户访问该网站时共用同一个application对象**(服务器关闭时,application对象被清除)**
-
application的作用:存储所有用户的数据
-
application的缺点:服务器运行时间较长时,application占用的内存较大
-
application运行在哪里:服务器
-
application的使用:
application对象保存数据 application.setAttribute(String key,Object value) application对象保存数据 application.getAttribute(String key)
Cookie、session、application的区别
Cookie | Session | Application | |
---|---|---|---|
程序运行在哪里 | 客户端 | 服务器 | 服务器 |
数据存储在哪里 | 客户端 | 服务器 | 服务器 |
以什么类型存储数据 | String | Object | Object |
数据开放权限 | 存储用户个人数据,浏览器间不通用 | 存储用户个人数据,浏览器只有读权限 | 存储所有用户数据,数据完全公开 |
数据什么时候清除 | 浏览器清除 | 服务器重启 | 服务器重启 |