利用cookie实现自动登录

很多网站都有为用户保存登录信息的功能,当用户下次进入网站时,可以帮助用户自动登录。.

下面是利用cookie实现自动登录的原理及示例代码:


在doLogin.jsp页面中,当用户第一次登录验证正确时,将用户名和密码作为cookie保存在本地。

eg:if(rs.next()){

System.out.println("用户登陆成功!!!");

//创建cookie

Cookie nameCookie = new Cookie("name",userName); 

Cookie pwdCookie = new Cookie("pwd",password);

//设置cookie的有效期为三分钟(以秒为单位)。

nameCookie.setMaxAge(3*60);

pwdCookie.setMaxAge(3*60);

//把cookie加入到response中,cookie会随着响应保存到客户端。

response.addCookie(nameCookie);

response.addCookie(pwdCookie);

//重定向

response.sendRedirect("main.jsp");


当用户再次访问这个页面时,服务器端会检测这个cookie是否存在。


eg:request.setCharacterEncoding("UTF-8");
         Cookie[] cookies =  request.getCookies();
         String name = "";
         String pwd = "";
         for(Cookie cookie:cookies){
      if(cookie.getName().equals("name")){
    name = cookie.getValue();
    }
    if(cookie.getName().equals("pwd")){
    pwd = cookie.getValue();
    }
    }
    if(!name.equals("") && !pwd.equals("") ){
        response.sendRedirect("doLogin.jsp?userName="+name+"&passwd="+pwd);
    }
    
   若存在,会自动通过递值将cookie中的用户名和密码又提交到doLogin.jsp页面,让其重新验证并执行后续操作,实现自动登录。


常见问题:

1.java.lang.IllegalArgumentException:Control character in cookie value or attribute. 

原因是有关中文编码的问题,中文采用的是unicode编码,而英文采用的是ASCII编码,所以当COOkie保存中文的时候需要对中文进行编码,而且从Cookie中取出内容的时候也要进行解码,编码和解码可以使用
URLEncoder.encode(name, "utf-8");
URLDecoder.decode(cookies[i].getName(),"utf-8")
2.注意一定要先保存在cookie中再跳转到指定JSP页面,不能先跳转到指定页面再保存,这样cookie会获取不到信息。

错误示例:if(rs.next()){

System.out.println("用户登陆成功!!!");

response.sendRedirect("main.jsp");

Cookie nameCookie = new Cookie("name",userName); 

Cookie pwdCookie = new Cookie("pwd",password);

nameCookie.setMaxAge(3*60);

pwdCookie.setMaxAge(3*60);

response.addCookie(nameCookie);

response.addCookie(pwdCookie);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值