因为我们用的是spring security框架,所以我误认为是spring security remember me 功能。
就在配置文件里简单配置了一下,就实现了这个功能。
测试的时候才发现,不是要这种效果。是真的要字面上的意思。
也就是说。记住了密码后。在下次登录的时候是这样的效果:
于是我就在网上搜索
刚开始一种是全用js实现的
"text/javascript"> $(document).ready(function() { var name = getCookie("username"); //$("#username")[0].value=name; $("#username").val(name); $("#sub").click(function() { if ($("#remember").attr("checked") == true) { //获得用户名 var username = $("#username").val(); //设置cookie setCookie("username", username); } else { //删除cookie delCookie("username") } }) function setCookie(name, value) { var Days = 60; //cookie 将被保存两个月 var exp = new Date(); //获得当前时间 exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); //换成毫秒 document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } function getCookie(name) { //取出cookie var strCookie = document.cookie; //cookie的保存格式是 分号加空格 "; " var arrCookie = strCookie.split("; "); for ( var i = 0; i < arrCookie.length; i++) { var arr = arrCookie[i].split("="); if (arr[0] == "username") { return arr[1]; } } return ""; } function delCookie(name) { var exp = new Date(); //当前时间 exp.setTime(exp.getTime() - 1); //删除cookie 只需将cookie设置为过去的时间 var cval = getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires="+ exp.toGMTString(); } }) 可是这个出现了一个问题。确实可以保存,和取出。我弹出来了,值没有任何问题。
当我需要在窗体加载的时候把上次存到cookie的值绑定到文本框是,绑定不了。用的是:
document.getElementByIdx_x("username")value=xxx;
不知道是不是框架问题,这样中是绑定不了。就算我写死的也没用。
最后只能换种方法了。
于是又找了另外一种办法:
(先在控制层保存cookie值)
//记住密码操作
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i
if(cookies[i].getName().equals("isTrue")){
String name=cookies[i].getValue();
if(("true").equals(name)){
Cookie user = new Cookie("user",userDetails.getUsername()+"-"+userDetails.getPassword());
response.addCookie(user);
}else{
Cookie user = new Cookie("user","null");//这里试了很多种方式,我的就只有这种在取值的时候不报错。
response.addCookie(user);
}
}
}
}
(再在页面js中判断是否记住密码,传入控制层处理)
function rememberPassword(){
var checked=document.getElementByIdx_x("rememberme");
if(checked.checked==true){
document.cookie="isTrue=true";
}else{
document.cookie="isTrue=false";
}
}
(最后用java代码在页面取出cookie值)
< %
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i
if(cookies[i].getName().equals("user")){
if(!"null".equals(cookies[i].getValue())){
String name=cookies[i].getValue().split("-")[0];
String passward=cookies[i].getValue().split("-")[1];
request.setAttribute("name",name);
request.setAttribute("pass",passward);
}
}
}
}
% >
(绑死的绑到文本框就ok啦)
< form action="j_spring_security_check" method="POST" οnsubmit="return rememberPassword();" >
< input type="text" name="j_username" id="username"
value="${name}" / >
< input type="password" name="j_password" id="password"
value="${name}" / >
< input type="checkbox" class="noborder" id="rememberme" >
< label for="rememberme" > 记住密码 < / label >
< input type="submit" name="submit" value=" 登 录 " / >
< / form >