通过cookie记住用户名和密码

1.登陆页面如下:


每个字段对应的属性name如下表:

用户帐号name
登陆密码password
验证码checkNum
记住我rememberMe

2.Action中的处理如下:

在用户第一次登陆后,进行Cookie进行处理

登陆处理

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /**登陆*/  
  2. public String login() throws Exception{  
  3.     //处理验证码:判断验证码输入的是否正确  
  4.     boolean flag=VerificationCodeUtil.isCheckNum(request);  
  5.     if(!flag){  
  6.         this.addFieldError("checkNum""验证码有误");  
  7.         return "loginUI";  
  8.     }  
  9.     User user=userService.findByLoginNameAndPassword(model.getName(),model.getPassword());  
  10.     if(user==null){  
  11.         addFieldError("login""用户名或密码不正确");  
  12.         return "loginUI";  
  13.     }else{  
  14.         ActionContext.getContext().getSession().put("user", user);  
  15.         //处理Cookie  
  16.         addCookie(model.getName(),model.getPassword(),response,request);  
  17.         return "toIndex";  
  18.     }     
  19. }  
Cookie处理:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /**Cookie的实现    **/  
  2. private void addCookie(String name, String password,HttpServletResponse response, HttpServletRequest request) throws UnsupportedEncodingException {  
  3.     if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){  
  4.         //创建Cookie  
  5.         Cookie nameCookie=new Cookie("name",URLEncoder.encode(name,"utf-8"));  
  6.         Cookie pswCookie=new Cookie("psw",password);  
  7.           
  8.         //设置Cookie的父路径  
  9.         nameCookie.setPath(request.getContextPath()+"/");  
  10.         pswCookie.setPath(request.getContextPath()+"/");  
  11.           
  12.         //获取是否保存Cookie  
  13.         String rememberMe=request.getParameter("rememberMe");  
  14.         if(rememberMe==null){//不保存Cookie  
  15.             nameCookie.setMaxAge(0);  
  16.             pswCookie.setMaxAge(0);  
  17.         }else{//保存Cookie的时间长度,单位为秒  
  18.             nameCookie.setMaxAge(7*24*60*60);  
  19.             pswCookie.setMaxAge(7*24*60*60);  
  20.         }  
  21.         //加入Cookie到响应头  
  22.         response.addCookie(nameCookie);  
  23.         response.addCookie(pswCookie);  
  24.     }  
  25. }  


3.JSP页面的处理如下:

在登陆的JSP页面中加入下面代码,以获得用户名和密码并自动填写:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <%  
  2.     String name="";  
  3.     String psw="";  
  4.     String checked="";  
  5.     Cookie[] cookies=request.getCookies();  
  6.     if(cookies!=null&&cookies.length>0){   
  7.         //遍历Cookie  
  8.         for(int i=0;i<cookies.length;i++){  
  9.             Cookie cookie=cookies[i];  
  10.             //此处类似与Map有name和value两个字段,name相等才赋值,并处理编码问题   
  11.             if("name".equals(cookie.getName())){  
  12.                 name=URLDecoder.decode(cookie.getValue(),"utf-8");  
  13.                 //将"记住我"设置为勾选   
  14.                 checked="checked";  
  15.             }  
  16.             if("psw".equals(cookie.getName())){  
  17.                 psw=cookie.getValue();  
  18.             }  
  19.         }  
  20.     }  
  21.  %>  

最后对用户名,密码,记住我字段添加value即可:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <TR>  
  2.     <TD class="td">用户帐号:</TD>  
  3.     <TD class="td"><input name="name" type="text" value="<%=name %>" id="name"/></TD>  
  4. </TR>  
  5. <TR>  
  6.     <TD class="td">登录密码:</TD>  
  7.     <TD class="td"><input name="password" type="password" value="<%=psw %>" id="password"></TD>  
  8. </TR>  
  9. <TR>  
  10.     <TD class="td">记住我:</TD>  
  11.     <TD class="td"><input name="rememberMe" type="checkbox" id="rememberMe" class="checkbox" <%=checked %>></TD>  
  12. </TR>  


4.可能出现的问题

如果出现设置了却没有自动填写用户名和密码,则可能是地址的问题:

解决办法:

1.进入Internet选项,点击浏览历史记录一栏的设置


2.进入浏览记录设置后,点击查看文件


3.在弹出的文件夹里找到Cookie文件,名字为你的项目名+“/”,格式如下图,这个文件一般在文件夹的最后面,将此文件复制到桌面,注:此文件是无法直接在该文件夹里打开的。



4.如下图,第三行为保存项目工程的路径,此时在Action里的Cookie处理中,根据该地址设置对应的Cookie父路径即可,上文已经设置。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值