一、Cookie的介绍

什么是Cookie?

Cookie是Web项目在客户端保存的一些小数据

广泛运用于,在已经登录的网站保存用户名与密码,或者,在有过搜索记录的网站点击搜索框弹出搜索记录

 

Cookie的几点说明:

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>

    &nbsp;&nbsp;&nbsp;密码:<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~

Logo

欢迎大家加入成都城市开发者社区,“和我在成都的街头走一走”,让我们一起携手,汇聚IT技术潮流,共建社区文明生态!

更多推荐