利用Cookie实现记住用户名的功能

本文介绍了一种利用Servlet实现客户端与服务器间通过Cookie管理用户登录状态的方法。文章详细展示了如何在用户登录时根据用户的选择(是否记住用户名)来设置Cookie的有效期,并在用户下次访问时读取Cookie以填充用户名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里我们是在servlet中实现的,客户端也是servlet
下面客户端,我们有一个简单的登陆界面。
我们会在登陆一次后接收到服务器端传来的cookie。

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String v = "";
        String checked = "";
        Cookie[] cks = request.getCookies();
        if(cks!=null)
        {
            for(int i=0;i<cks.length;i++){
                if("uName".equals(cks[i].getName())){
                    v = cks[i].getValue();
                    checked="checked=checked";
                }
            }
        }

        out.println("<form action='/day35_cookie/servlet/dologin' method='post'>");
        out.println("用户名:<input type='text' name='username' value='"+v+"'>");
        out.println("密码:<input type='password' name='pwd'>");
        out.println("记住用户名:<input type='checkbox'  name='rem' "+checked+">");
        out.println("<input type='submit' value='登陆'>");
        out.println("</form>");
    }

下面我们在看一下服务器端是如何实现的
我们接收到客户端传过来的数据,然后为用户名穿件cookie,但是其生命周期我们需要看其是否选择了记住用户名。
当用户选择了记住用户名那么我们就将cookie的存活时间蛇者为最大,否则设置为立即销毁。

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        String name = request.getParameter("username");
        String pass = request.getParameter("pwd");
        String rem = request.getParameter("rem");

        Cookie cookie = new Cookie("uName",name);
        cookie.setPath(request.getContextPath());
        if("admin".equals(name) && "123".equals(pass))
        {
            //复选框被选中
            if(rem!=null){
                cookie.setMaxAge(Integer.MAX_VALUE);
            }
            else
                cookie.setMaxAge(0);

            response.addCookie(cookie);
            out.println("<h2>登陆成功<h2>");
        }
        else
        {
            out.println("用户名或密码错误,3秒后回到登陆页面");
            response.setHeader("refresh", "3;url='"+request.getContextPath()+"/servlet/login'");
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值