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]