使用Cookie存储登录数据并且实现用户自动登录
Cookie的几点说明:1.单个cookie大小不超过4kb2.同一个域名下cookie的数量一般不超过20个(浏览器不同,会不同)3.cookie用于存储少量不敏感的数据4.cookie可以用来区分不同的客户端(在不登录时候,配合session)
一、Cookie的介绍
什么是Cookie?
Cookie是Web项目在客户端保存的一些小数据
广泛运用于,在已经登录的网站保存用户名与密码,或者,在有过搜索记录的网站点击搜索框弹出搜索记录
1.单个cookie大小不超过4kb
2.同一个域名下cookie的数量一般不超过20个(浏览器不同,会不同)
3.cookie用于存储少量不敏感的数据
4.cookie可以用来区分不同的客户端(在不登录时候,配合session)
二、Cookie的创建
1.Cookie对象是以键值对形式创建的:
Cookie cookie = new Cookie("name","value");
2.设置Cookie的存活时间(单位:秒):
cookie.setMaxAge(60);
对于时间参数的不同设置:
1.为正数时Cookie存在在客户端中,时间到了就自动清除
2.为负数时(此方法时间参数默认值为-1),Cookie存在在内存中,浏览器关闭就消失
3.为0时,Cookie立即被清除
3.设置Cookie的作用域:
cookie.setPath("/");//所有webapps都可以看到这个Cookie
cookie.setPath("/web01");//只有web01可以看到这个Cookie
tip:
这里小小提一句,如果范围设置为“/项目名”,前端的网页接收不到Cookie那就试试去掉“/”,
如果还不行那就直接使用“/”
4.保存Cookie到客户端:
resp.addCookie(cookie);
一次可以创建和保存多个Cookie对象
如果有中文字符就需要转码储存:
Cookie c = new Cookie("name",URLEncoder.encode("四川周杰伦", "utf-8") );
5.读取Cookie:
通常读取是在前端网页执行:
Cookie[] cookies = request.getCookies();
三、代码
1、网页代码
图片代码:
代码:
<html>
<body>
<%
Cookie[] cookies = request.getCookies();//读取Cookie数组
String username = null;
String password = null;
for (Cookie cookie : cookies){//迭代获取每个Cookie
if (cookie.getName().equals("username")){//有相同名字的Cookie就执行赋值
username = cookie.getValue();
}
if (cookie.getName().equals("password")){//有相同名字的Cookie就执行赋值
password = cookie.getValue();
}
}
%>
<form>
用户名:<input type="text" name="username" placeholder="请输入用户名" value="<%=username==null?"":username%>"><br><br>
密码:<input type="password" name="password" value="<%=password==null?"":password%>"><br><br>
<input type="submit" value="登录" style="text-align: center"><br><br>
<input type="checkbox" name="autologin" value="yes" >30天自动登录//获取多选框的值判断是否使用30天自动登录
</form>
</body>
</html>
2、控制器代码
图片代码:
思路:
在验证完用户名密码合法性之后,验证登录,登录成功后再进行保存Cookie数据
3、Cookie类代码
图片代码:
将添加Cookie方法写一个类可以增加代码的可读性,易维护
代码:
public class Cookies {
public static void autoLogin(HttpServletRequest req, HttpServletResponse resp,User user) throws IOException {
System.out.println(user.getUsername());
Cookie cookie = new Cookie("username",user.getUsername());
Cookie cookie1 = new Cookie("password",user.getPassword());
cookie.setMaxAge(2592000);
cookie1.setMaxAge(2592000);
cookie.setPath("javaweb_jdbc");
cookie1.setPath("javaweb_jdbc");
resp.addCookie(cookie);
resp.addCookie(cookie1);
resp.sendRedirect("loginsuccess.jsp?username="+user.getUsername());//设置跳转地址
}
}
这样一个利用Cookie实现自动登录的功能就做出来了
以上,就是使用Cookie存储登录数据并且实现用户自动登录的全部内容了,如有不同意见欢迎评论区讨论,如果这篇文章对你有帮助的话,还请三连支持一下,你的支持就是我更新的最大动力,886~
更多推荐
所有评论(0)