在登录时根据记住密码框单选框的值来设置cookie和销毁cookie
登录页面,使用ajax实现的,已加载就调用loadCookie方法
$(function(){ //记住密码 $.get("/crowdfunding/user/loadCookie",function(map){ if(map!=null){ $("input[name=remember]").attr("checked",true) $("input[name=us_phone]").val(map.us_phone) $("input[name=us_password]").val(map.us_password) } }, "json" ) })
表单,手机号、密码、记住密码三个input
<form id="frm"> <fieldset> <label class="block clearfix"> <span class="block input-icon input-icon-left"> <i class="ace-icon fa fa-user"></i> <input name="us_phone" type="text" class="form-control" placeholder="手机号码" /> </span> </label> <label class="block clearfix"> <span class="block input-icon input-icon-left"> <i class="ace-icon fa fa-lock"></i> <input name="us_password" type="password" class="form-control" placeholder="请输入密码" /> </span> </label> <div class="space"></div> <div class="clearfix"> <label class="inline"> <input name="remember" type="checkbox" class="ace" value="true" /> <span class="lbl"> 记住密码</span> </label> <button onclick="login()" type="button" class="width-35 pull-right btn btn-sm btn-primary"> <i class="ace-icon fa fa-key"></i> <span class="bigger-110">登录</span> </button> </div> <div class="space-4"></div> </fieldset> </form>
controller层,登录时,调用addCookie方法
@RequestMapping("login") @ResponseBody public Boolean login(String us_phone, String us_password,boolean remember, HttpSession session,HttpServletRequest request,HttpServletResponse response) { User user = userService.login(us_phone, us_password); if(user != null) { session.setAttribute("user", user); addCookie(request,response,us_phone,us_password,remember); return true; } return false; } //添加一个cookie private void addCookie(HttpServletRequest request, HttpServletResponse response, String us_phone, String us_password, boolean remember) { if(remember==true) { Cookie cookie1=new Cookie("us_phone", us_phone); Cookie cookie2=new Cookie("us_password", us_password); //cookie.setPath("/");//设置cookie在服务器中共享 response.addCookie(cookie1); response.addCookie(cookie2); } else { Cookie[] cookies = request.getCookies(); if(cookies!=null) { for(Cookie c:cookies) { c.setMaxAge(0);//销毁cookie response.addCookie(c); } } } }
页面加载时
//加载cookie @RequestMapping("loadCookie") @ResponseBody public Map<String,Object> loadCookie(@CookieValue(value="us_phone",required=false)String us_phone,@CookieValue(value="us_password",required=false)String us_password) { if(us_phone!=null&&us_password!=null) { Map<String, Object> map=new HashMap<>(); map.put("us_phone", us_phone); map.put("us_password", us_password); return map; } return null; }
这样就完成了简单的记住密码功能(不能记住多个账号密码 )