jianchen 发表于 2013-2-6 09:53:24

cookie的使用

同学问我关于cookie的问题,大致知道他的原理,但不知道它内部到底如何存储的。所以写个小程序测试一下:

简单的登录验证,保存用户名和密码以后不用登陆:
在index.jsp下,填写用户名和密码,勾选保存信息。在服务器端检查是否勾选上,然后生成cookie保存到客户端:
index.jsp代码如下:
<form method="post" action="register.jsp">                        username:                        <input type="text" name="username" />                        </BR>                        password:                        <input type="password" name="password" />                        </br>                     <input type="checkbox" name="remember">                        save                        </input>                        <input type="submit" value="提交" />                </form> register.jsp代码如下:
   <%                        String username = request.getParameter("username");                        String password = request.getParameter("password");                        String remember = request.getParameter("remember");                        if (remember == null || "".equals(remember.trim())) {                              out.print("empty info");                              return;                        }                        Cookie c1 = new Cookie("username", username);                        Cookie c2 = new Cookie("password",password);                        response.addCookie(c1);                        response.addCookie(c2);                        c1.setMaxAge(22222); //这是cookie保存的时间,我在这里随便敲了个数字                        c2.setMaxAge(2234343);                        out.println("save it");                %> 测试页test.jsp
<%                String username = null;                String password = null;                Cookie[] cookies = request.getCookies();                for (Cookie cookie : cookies) {                        if(cookie.getName().equals("username")){                              username = cookie.getValue();                        }else if(cookie.getName().equals("password")){                        password = cookie.getValue();                        }                }      if (username != null && password != null){                        out.println("logined");      }      %> 我使用的IE6进行测试,他的cookie保存路径为:C:\Documents and Settings\登录用户名\Cookies
由于是本机测试,所以他的cookie文件名为:administrator@cookie.txt。打开后查看内容为:
username
aa
localhost/cookie/
1024
513019904
30000551
1642879296
30000499
*
password
aa
localhost/cookie/
1024
2641445504
30005701
1642879296
30000499
*

分析:
我在index.jsp上输入了用户名和密码,在服务器端创建了两个cookie对象,但浏览器针对每个站点只会生成一个cookie文件。在服务器端,通过reques对象获得cookie对象,对其进行迭代,依次取出其中保存的值,进行相关操作就可以了。


对不同目录下,保存cookie会生成不同的cookie文件。
比如我在webRoot/jsp/saveCookie.jsp里保存cookie那么保存的cookie对应的域会是localhost/cookie/jsp
可以使用cookie的setDomain方法,指定cookie的域。
页: [1]
查看完整版本: cookie的使用