Cookie
1.COOKIE机制
1)Cookie的基本特点
Cookie保存在客户端
只能保存字符串对象,不能保存对象类型
需要客户端浏览器的支持:客户端可以不支持,浏览器用户可能会禁用Cookie
2)采用Cookie需要解决的问题
Cookie的创建
通常是在服务器端创建的(当然也可以通过javascript来创建)
服务器通过在http的响应头加上特殊的指示,那么浏览器在读取这个指示后就会生成相应的cookie了
Cookie存放的内容:业务信息("key","value")
浏览器是如何通过Cookie和服务器通信?
通过请求与响应,cookie在服务器和客户端之间传递
每次请求和响应都把cookie信息加载到响应头中;依靠cookie的key传递。
2.jsp中的cookie中存放中文时候的问题
jsp中的cookie中时不支持的中文的,所以在里面放入中文时首先要对中文内容进行编码,然后再放入, 而取出的时候也是先对其进行解码,然后在取出.
首先是建立cookie和编码的过程,在这一部中用到了一个包 java.net.URLEncoder具体代码如下:
String
text=URLEncoder.encode("第一个编写的cookie","utf-8"); //对中文内容进行编码,注意英文和字母不会进行编码
Cookie cook=new
Cookie("aaa",text.toString());
cook.setMaxAge(30*60);//规定cookie的存活时间
response.addCookie(cook);//将建立的cookie对象放入到response中在之后可以被request获取。
获取cookie的过程 ,在这个过程中用到了一个包 java.net.URLDecoder 具体的实现代码如下:
Cookie [] cookie=request.getCookies();//获取所有的cookie
for(Cookie cok:cookies){
String
content=URLDecoder.decode(cok.getValue());//对得到的coolie中的值进行解码
out.println(content);//输出编码后的cookie的内容
out.println(request.getName());//输出得到的cookie的名字
}
* cookie的value可以设置多少个字符:4kb
Session
服务器在服务器端创建一个内存区域,用来存放当前用户的所有信息,通过cookie关联(前提:必须使用cookie)
每次客户端发送请求,服务断都检查是否含有JSessionId。
如果有,则根据sessionId检索出session并处理;如果没有,则创建一个session,并绑定一个不重复的sessionId。
1)基本特点
u 状态信息保存在服务器端。这意味着安全性更高
u 通过类似与Hashtable的数据结构来保存 //?
u 能支持任何类型的对象(session中可含有多个对象) //?
2)保存会话id的技术
Cookie
这是默认的方式,在客户端与服务器端传递JSeesionId
缺点:客户端可能禁用Cookie(可以用到TagLib代替此缺点?)
表单隐藏字段
在被传递回客户端之前,在 form 里面加入一个hidden域,设置JSeesionId:
<input type=hidden name=jsessionid value="3948E432F90932A549D34532EE2394" />
URL重写
直接在URL后附加上session id的信息