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

来源:互联网 发布:数控编程指令 编辑:程序博客网 时间:2024/06/12 00:04

这里我们是在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'");        }    }
0 0
原创粉丝点击