cookie是web服务器保存在客户端的一系列文本信息,cookie的作用: - 对特定对象的追踪(如购物车) - 保存用户网页浏览记录与习惯 - 简化登录(自动登录) 安全风险:容易泄露用户信息
创建cookie Cookie newCookie=new Cookie(String key,Object value);
写入Cookie对象 response.addCookie(newCookie);
读取Cookie对象 Cookie[] cookies=request.getCookies();
常用方法:
使用cookie保留登录信息示例: login.jsp
<body> <% request.setCharacterEncoding("utf-8"); String username=""; String password=""; Cookie[] cookies=request.getCookies(); if(cookies.length>0) { for(Cookie c:cookies) { if(c.getName().equals("username")) { username=URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")) { password=URLDecoder.decode(c.getValue(),"utf-8"); } } } %> <form action="dologin.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username" value=<%=username %>></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password" value=<%=password %>></td> </tr> <tr> <td colspan="2" align="center"><input type="checkbox" name="isCookie" checked="checked"/>十天内记录我的登陆信息</td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="登录"/> <input type="reset" value="取消"></td> </tr> </table> </form> </body>dologin.jsp
<body> <% request.setCharacterEncoding("utf-8"); String username=URLEncoder.encode(request.getParameter("username"),"utf-8"); String password=URLEncoder.encode(request.getParameter("password"),"utf-8"); Cookie userCookie=new Cookie("username",username); Cookie passwordCookie=new Cookie("password",password); if(request.getParameter("isCookie")!=null) { userCookie.setMaxAge(10*3600*24); passwordCookie.setMaxAge(10*3600*24); response.addCookie(userCookie); response.addCookie(passwordCookie); } else { Cookie[] cookies=request.getCookies(); if(cookies.length>0&&cookies!=null) { for(Cookie c:cookies) { if(c.getName().equals("username")||c.getName().equals("password")) { c.setMaxAge(0); response.addCookie(c); } } } } %> <h1>欢迎您,<%=request.getParameter("username") %></h1> <a href="user_info.jsp">查看个人信息</a>user_info.jsp
<body> <% request.setCharacterEncoding("utf-8"); Cookie[] cookies=request.getCookies(); String username=""; String password=""; if(cookies.length>0) for(Cookie c:cookies) { if(c.getName().equals("username")) { username=URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")) { password=URLDecoder.decode(c.getValue(),"utf-8"); } } %> 用户名:<%=username %><br> 密码:<%=password %><br> </body>这里为了避免中文乱码,使用了URLEncoder.encode()对提交的内容进行编码,并且使用URLDecoder.decode()进行解码,注意这个需要导入包java.net.*
session解析