赞
踩
Cookie:客户端对象
1)什么是Cookie
Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户电脑上保存信息并且随后再取回它。
举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。
如果用户使用IE浏览器访问Web,那么用户就会看到所有保存在自己硬盘上的Cookie。它们最常存放的地方是C:\Windows\Cookies。Cookie是以"关键字key=值value"的格式来保存记录的。
基本原理:
1.创建Cookie(服务器端创建)
2.设置存储Cookie(存储到响应头中)
3.发送Cookie
4.读取Cookie
客户端第一次发送请求 --> 服务器接收到请求 --> 创建cookie对象 --> 存储到响应头
--> 以响应的形式发送到客户端 --> 客户端收到响应信息 解析响应信息 保存cookie
--> 客户端再次发送同类请求的时候会携带cookie信息发送请求 --> 服务器 解析cookie
在关闭浏览器之前, cookie变量便一直是有效的,所以能够保证长时间不掉线
2)创建一个Cookie对象
调用Cookie对象的构造函数就可以创建Cookie对象。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。
例如:
Cookie c = new Cookie("username","john");
3)将Cookie对象传送到客户端
在JSP中,如果要将封装好的Cookie对象传送到客户端,可使用Response对象的addCookie()方法。
例如:
response.addCookie(c)
4)读取保存到客户端的Cookie
使用Request对象的getCookie()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。
例如:
- Cookie[] c = request.getCookies();
-
- if(c != null){
-
- for(int i = 0;i < c.length;i++){
-
- if("username".equals(c[i].getName())){
-
- out.println(c[i].getValue());
-
- }
-
- }
-
- }
修改cookie的值
- public Cookie updateCookie(String cookieName, String newValue, Cookie[] cookie) {
-
- if (cookie != null) {
- for (int i = 0; i < cookie.length; i++) {
- if ("cookieName".equals(cookie[i].getName())) {
- cookies[i].setPath("/url");
- cookies[i].setValue(newValue);
- // 将修改后的cookie作为响应返回给客户端
- response.addCookie(cookies[i]);
- }
- }
- }
- }
5)设置Cookie对象的有效时间
调用Cookie对象的setMaxAge()方法便可以设置Cookie对象的有效时间。
例如:
- Cookie c = new Cookie("username","john");
-
- c.setMaxAge(3600);
如何解决Cookie中的中文乱码问题?请写一段程序,在后台servlet中设置cookie,cookie中需要包含中文字符,客户端发送请求后,能够在页面上显示出Cookie中的所有信息
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
-
- //对中文value值进行编码
- String value = java.net.URLEncoder.encode("中文","utf-8");
-
- Cookie cookie = new Cookie("chinese_code",value);
- cookie.setPath("/");
- cookie.setMaxAge(60*60*24*6);
-
- response.addCookie(cookie);
- //解析
- response.getWriter().write(cookie.getName()+" = "+URLDecoder.decode(cookie.getValue(),"utf-8"));
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。