Cookie登陆

在做登陆的时候,需要记住我这一功能,这样可以记录用户之前登陆的帐户和密码,下次登陆时就不用在输入用户密码,直接登陆,这样可以免了不少步骤。那么怎么实现记住我这一功能?
首先需要了解Cookie的机制,是通过什么样的方式来保存数据:Cookie是由web程序发送的请求(要符合HTTP协议),在servlet层接收数据时再通过响应将需要保存的信息保存到浏览器中(也就是cookie),当浏览器再次请求该网页时,浏览器会将该请求的信息以及保存的信息一起发送给服务器。服务器就可以检查Cookie信息是否存在。
还有一点需要注意也就是Cookie的不可跨域性:不同的浏览器保存的Cookie信息不是共享的。
更多关于Cookie的信息可以查看
接下来看servlet代码:这是保存和删除Cookie的代码
1.

	// 判断是否记住我  
2.	            if (chekd != null) {  
3.	                // 保存值到Cookie//创建Cookie是键值对的方式  
4.	                Cookie cname = new Cookie("StaffCode", StaffCode);  
5.	                Cookie cpwd = new Cookie("Password", Password);  
6.	                // 保存7天  
7.	                cname.setMaxAge(7 * 24 * 3600);  
8.	                cpwd.setMaxAge(7 * 24 * 3600);  
9.	                // 同一服务器内所有应用都可访问到该Cookie  
10.	                cname.setPath("/");  
11.	                cpwd.setPath("/");  
12.	                // 添加到response  
13.	                response.addCookie(cname);  
14.	                response.addCookie(cpwd);  
15.	            } else {  
16.	                // 删除Cookie  
17.	                Cookie cname = new Cookie("StaffCode", "");  
18.	                Cookie cpwd = new Cookie("Password", "");  
19.	                // 强制是cookie过期  
20.	                cname.setMaxAge(-1);  
21.	                cpwd.setMaxAge(-1);  
22.	                // 同一服务器内所有应用都可访问到该Cookie  
23.	                cname.setPath("/");  
24.	                cpwd.setPath("/");  
25.	                // 添加到response  
26.	                response.addCookie(cname);  
27.	                response.addCookie(cpwd);  
28.	            } 

Jsp代码:在jsp页面写伪代码,for遍历保存保存到session的值,
再把遍历出来的值放到变量中,这样方便获取值。
1.

	<%  
2.	    String StaffCode3 = "";  
3.	    String Password3 = "";  
4.	    boolean checked = false;  
5.	    Cookie[] cookie = request.getCookies();//获取的是请求里的所有cookie组成的数组  
6.	    if (cookie.length > 0) {  
7.	        for (int i = 0; i < cookie.length; i++) {  
8.	            if ("StaffCode".equals(cookie[i].getName())) {  
9.	                StaffCode3 = cookie[i].getValue();  
10.	                checked = true;  
11.	            }  
12.	            if ("Password".equals(cookie[i].getName())) {  
13.	                Password3 = cookie[i].getValue();  
14.	            }  
15.	        }  
16.	    }  
17.	%>  

再把变量的值存入c:set标签中;

<c:set var="str" value="<%=StaffCode3%>" scope="page"></c:set>
<c:set var="str1" value="<%=Password3%>" scope="page"></c:set>

Html在通过el表达式获取值
在这里插入图片描述

Js代码:记住我是否需要打勾

/*  记住我 */
		$(function() {
			if ('${str}' != "" && '${str}' != null)
				$("#pitch").attr("checked", "checked");
		});

第一执行过程图:运行web程序输入jsp登陆对外访问的路径,查询Cookie为空(因为此时Cookie并没有信息)(用户密码正确)执行servlet保存Cookie信息跳转jsp主界面
在这里插入图片描述
第二次执行过程图:第一次和第二次以及第二次以上,唯一的区别就是在jsp登陆时查询Cookie时有值和没值。
在这里插入图片描述
效果图:
在这里插入图片描述

作者:吴耀存
撰写日期:2019-6-5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值