cookie的使用
使用说明:
1.未连接数据库,用户名和密码默认为tom和123
2.记住我30天需要正确输入一次账号,并且选中“记住我30天”
3.当Cookie记录完成后,需要输入用户名并选中“记住我30天”实现免密码登录
IE浏览器测试图(按测试顺序):
项目结构:
各项代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>记住密码登录</title> 6 <!-- <script> 7 function getCookie(name){ 8 var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); 9 if(arr=document.cookie.match(reg)) 10 return unescape(arr[2]); 11 else 12 return null; 13 } 14 </script> --> 15 </head> 16 <body> 17 <form action="rLogin" method="post"> 18 <input type="text" name="uid"><br> 19 <input type="password" name="upassword"><br> 20 <input type="checkbox" name="rememberMe" value="yes">记住我30天 21 <input type="submit" value="登录"> 22 </form> 23 </body> 24 </html>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.a; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.annotation.WebServlet; 8 import javax.servlet.http.Cookie; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 import javax.validation.constraints.Null; 13 14 /** 15 * Servlet implementation class rLogin 16 */ 17 @WebServlet("/rLogin") 18 public class rLogin extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 /** 22 * @see HttpServlet#HttpServlet() 23 */ 24 public rLogin() { 25 super(); 26 // TODO Auto-generated constructor stub 27 } 28 29 /** 30 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 31 */ 32 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 33 doPost(request, response); 34 } 35 36 /** 37 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 38 */ 39 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 40 //设置请求和响应的字符集编码 41 response.setContentType("text/html; charset=UTF-8"); 42 request.setCharacterEncoding("UTF-8"); 43 PrintWriter out = response.getWriter(); //获得输出流 44 45 String strID=request.getParameter("uid"); 46 String strPassword=request.getParameter("upassword"); 47 String isRemember=request.getParameter("rememberMe"); 48 49 boolean isExist=false; 50 boolean isLogin=false; 51 //校验Cookie中有无登录名信息 52 Cookie[] cookies=request.getCookies(); 53 if (cookies==null){ 54 out.print("没有Cookie"); 55 } 56 else { 57 for(int i=0;i<cookies.length;i++){ 58 if(cookies[i].getName().equals("uid")); 59 isExist=true; 60 out.println("拥有Cookie"); 61 } 62 } 63 64 //检查登录信息是否正确 65 if("tom".equals(strID)&&"123".equals(strPassword)){ 66 isLogin=true; 67 } 68 69 //若已选择记住我且Cookie中无信息,则写入Cookie信息 70 if("yes".equals(isRemember)&&isExist==false&&isLogin==true){ 71 Cookie user_id=new Cookie("uid", strID); 72 Cookie user_password=new Cookie("upassword", strPassword); 73 user_id.setMaxAge(60*60*24*30); 74 user_password.setMaxAge(60*60*24*30); 75 response.addCookie(user_id); 76 response.addCookie(user_password); 77 } 78 79 80 if(isExist&&!"yes".equals(isRemember)&&isLogin==false){ 81 out.println("且登录失败"); 82 } 83 //登录信息正确或Cookie中有数据,都可登录 84 else if(isExist||isLogin){ 85 out.println("且成功登录"); 86 } 87 else{ 88 out.println("且登录失败"); 89 } 90 } 91 92 }
链接:https://pan.baidu.com/s/1RmNUFVNaTGg7caSCezqK7w
提取码:hwey
复制这段内容后打开百度网盘手机App,操作更方便哦