关闭

记住我 功能实现

247人阅读 评论(0) 收藏 举报

大家都知道pc端在系统登录时有一个类似于【记住我】的功能 ,做开发半年我没有接触过cookie,觉得可能很难,今天刚好自己抽几分钟时间学习了一下,发现很基本,在这里也就算给一些学习者写一个实现方法吧,分享出来大家批评指教:

登录页面,记住我复选框


 

<td>

<input type="checkbox" name="remeberMe" id="remeberMe" value="yes"/>

</td>

 

首先登录需要用户名和密码,创建一个vo对象 MenuForm 

 

public class MenuForm {

 

private String name;

private String password;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

第二步,登录的Action中获取到页面传递的用户名和密码,并调用记住我的方法:

 

public String menuHome(){

//获取用户名和密码

String name = menuForm.getName();

String password = menuForm.getPassword();

/**  其他方法事件*/


/**记住我*/

LogonUtils.remeberMe(name,password,request,response);


}

第三步:Action代码的处理,创建LoginUtils

public class LogonUtils {

 

/**记住我功能*/

public static void remeberMe(String name, String password,

HttpServletRequest requestHttpServletResponse response) {

//1:创建2Cookie,存放指定值

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

Cookie passwordCookie = new Cookie("password",password);

//2:设置Cookie的有效路径(指定当前项目)

nameCookie.setPath(request.getContextPath()+"/");

passwordCookie.setPath(request.getContextPath()+"/");


//获取页面复选框的值(用作判断)

String remeberMe = request.getParameter("remeberMe");

//此时表示复选框选中

//3:设置Cookie的有效时间(1周)

if(remeberMe!=null && remeberMe.equals("yes")){

nameCookie.setMaxAge(7*24*60*60);

passwordCookie.setMaxAge(7*24*60*60);

}

//此时表示复选框没有被选中

else{

nameCookie.setMaxAge(0);

passwordCookie.setMaxAge(0);

}

//4:将Cookie存放到response

response.addCookie(nameCookie);

response.addCookie(passwordCookie);

}

}

 

第四步:在index.jsp页面中读取Cookie中的数据,jsp中嵌套java代码

<%

String name = "";

String password = "";

String checked = "";

Cookie [] cookies = request.getCookies();

if(cookies!=null && cookies.length>0){

for(Cookie cookie:cookies){

if(cookie.getName().equals("name")){

name = cookie.getValue();

checked = "checked";

}

if(cookie.getName().equals("password")){

password = cookie.getValue();

}

}

}

%>

这样的缺点:将java代码放置到jsp上,要求jsp先要执行编译java代码,然后再执行。效率会降低

分析:在跳转到index.jsp页面之前先从Cookie中获取数据,放置到HttpRequest对象中进行显示,这样可以使用过滤器(filter)完成,过滤器在这因为时间原因就暂时不写了。谢谢!

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25235次
    • 积分:999
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:45篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论