记住用户名-cookie练习

第一次登录时如果勾选了“记住用记名”选项,cookie里存储用户名
第2-n次登录时 首选判断cookie里有没有用户信息,如果用,从cookie里取得用户名

我们计划向cookie里放置以下信息
用户名:username

cookie的常用操作
新建: Cookie C=new Cookie(key,value)
setMaxAge(0) 不记录cookie
setMaxAge(-1) session级别的cookie,随session失效而失效
setMaxAge(72460*60) 单位为秒
正整数和负整数的区别:
负整数时存在浏览器里
正整数时存在本地磁盘里

setPath("/") 访问路径设置

登录页改造

<form action="loginServlet" method="post">
用户名:<input type="text" name="username" /><br>
密码:<input type="password" name="password" /><br>
记住用户名:<input type="checkbox" name="flag" value="1"/><br>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>

LoginServlet关键代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        ......
        //是否勾选了记住用户名功能
        String[] flags=request.getParameterValues("flag");
        String flag="0";
        if(flags!=null&&!flags.equals("")){
            flag="1";
        }
        ......
        
         //是否用户名错误--->根据用户名查询tab_user表中是否有该条记录
         IUserService service=new UserServiceImpl();
         List<TabUser> userList=service.getUserByName(username);
         if(userList!=null&&userList.size()>0){
             //是否密码错误  ---根据用户名和密码两项进行查询
             TabUser dbuser= service.getUserByNameAndPwd(username, password);
             if(dbuser!=null){//如果查询到用户了。进入登录后的处理
                 //将用户信息存放到session
                ......
                 if("1".equals(flag)){//记住密码
                    //需要向cookie里存储数据
                        //step1 存储用户名
                        Cookie c=new Cookie("username",username);
                        c.setMaxAge(1*24*60*60);
                        c.setPath("/");
                        //将cookie放到响应里
                        response.addCookie(c);
                    }else{//不记住密码,就清除cookie
                        //删除(思路就是替换原来的cookie,并设置它的生存时间为0):
                        Cookie c=new Cookie("username",username);
                        c.setMaxAge(0);
                        c.setPath("/");
                        //将cookie放到响应里
                        response.addCookie(c);
                    }
                 ......
    }

登录页默认密码

<%
//自动登录判断
String username="";
//读取cookie
Cookie[] cookies=request.getCookies();
if(cookies!=null){
    //循环读取cookie
    for(Cookie c:cookies){
        String name=c.getName();
        if(name.equals("username")){
            username=c.getValue();
            request.setAttribute("username",  username);
        }
    }
}
%>

    <form action="loginServlet" method="post">
用户名:<input type="text" name="username" value="${username }"><br>
密码:<input type="password" name="password" /><br>
记住用户名:<input type="checkbox" name="flag" value="1"/><br>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>

在Chrome设置中查看&删除Cookie

在Chrome地址栏中输入:chrome://settings/content/cookies,打开Cookie设置,可以查看&删除Cookie。

image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容