在做登陆的时候,需要记住我这一功能,这样可以记录用户之前登陆的帐户和密码,下次登陆时就不用在输入用户密码,直接登陆,这样可以免了不少步骤。那么怎么实现记住我这一功能?
首先需要了解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