记住我 功能实现

大家都知道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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值