Servlet Cookie实现记住密码,自动登录

本案例重点讲解Servlet如何利用Cookie实现密码记录的功能,勾选自动登录的情况下系统会自动进行登录。

//login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
<%
    String username = "";
    String password = "";
    //获取当前站点的所有Cookie
    Cookie[] cookies = request.getCookies();
    for (int i = 0; i < cookies.length; i++) {//对cookies中的数据进行遍历,找到用户名、密码的数据
        if ("username".equals(cookies[i].getName())) {
            username = cookies[i].getValue();
        } else if ("password".equals(cookies[i].getName())) {
            password = cookies[i].getValue();
        }
    }
%>
</head>
<body>
    <form action="login_handler.jsp" method="post">
        username:<input type="text" name="name" value="<%=username%>" /><br/>
        password:<input type="password" name="pwd" value="<%=password%>" /><br/>
        <input type="checkbox" value="y" name="isLogin">自动登录<br/> 
        <input type="submit" value="登录" />
    </form>
</body>
</html>
//login_handler.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");
    String flag = request.getParameter("isLogin");

    if (!"admin".equals(name) && !"123".equals(pwd)) {
        response.sendRedirect("error.jsp");
    } else {
        if ("y".equals(flag)) {
            //创建两个Cookie对象
            Cookie nameCookie = new Cookie("username", name);
            //设置Cookie的有效期为3天
            nameCookie.setMaxAge(60 * 60 * 24 * 3);
            Cookie pwdCookie = new Cookie("password", pwd);
            pwdCookie.setMaxAge(60 * 60 * 24 * 3);
            response.addCookie(nameCookie);
            response.addCookie(pwdCookie);
        }
        response.sendRedirect("success.jsp");
    }
%>
//success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Succes成功</title>
</head>
<body>success.
</body>
</html> 
//error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>error错误</title>
</head>
<body>error.
</body>
</html>

运行程序,当输入正确的用户名密码进行登录,并勾选“记住密码”后,下次再回到登录界面,就是下面的这个样子:

Servlet Cookie实现记住密码,自动登录例子

当用户第一次登录网站的时候,网站向客户端发送一个包含有用户名的Cookie。当用户在之后的某个时候再次访问,浏览器就会向网站服务器回送这个Cookie,于是,我们可以从这个Cookie中读取到用户名,然后调用Servlet登录的方法,从而实现自动为用户登录。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。