JSP&Servlet(1)——使用JSP实现登录页面使用Cookie记住账号密码功能

使用Cookie实现“记住我”的功能

JSP&Servlet(1)——使用JSP实现登录页面使用Cookie记住账号密码功能_第1张图片

账号是"hello",密码是"world"。

主页面index.jsp的代码如下:

<%@ page import="java.net.URLDecoder" %>
<%--加载静态JSP页面需设置该页的编码格式为UTF-8--%>
<%@ page pageEncoding="utf-8" %>



    
    登录
    


<% // 用户名 String user = ""; // 登录密码 String pass = ""; // 复选框是否选中 String checked = ""; // 获取的是请求里的所有cookie组成的数组 Cookie[] cookies = request.getCookies(); // 如果cookies数组不为空对其进行遍历 if (cookies != null && cookies.length > 0) { // 循环遍历Cookie for (int i = 0; i < cookies.length; i++) { // 获取Cookie对象 Cookie cookie = cookies[i]; // 将创建的cookie名与获取的cookie数组中已经存在的cookie名进行比较 if ("name".equals(cookie.getName())) { // "name"是在另一个jsp文件中创建的cookie名 // 获取名字叫做"name"的cookie的值 user = URLDecoder.decode(cookie.getValue(), "utf-8"); // 将“记住我”设置为勾选 checked = "checked"; } // 将创建的cookie名与获取的cookie数组中已经存在的cookie名进行比较 if ("password".equals(cookie.getName())) { // "password"是在另一个jsp文件中创建的cookie名 // 获取名字叫做"password"的cookie的值 pass = cookie.getValue(); } } } %>

用户登录

<%--<%=user%>指的是将获取的cookie值放进输入框内--%>



记住我     

对登录进行验证的login.jsp内容如下:

<%@ page import="java.net.URLEncoder" %>
<%@ page pageEncoding="utf-8" %>


    


<%
    // 获取输入用户名文本框的值
    String username = request.getParameter("username");
    // 获取输入密码的密码框的值
    String password = request.getParameter("password");
%>
<%
    // 在这里进行用户名和密码匹配,在这里是将用户名和密码规定死了的。
    // 即用户名必须是"hello",密码必须是"world"才能登录成功
    if (username.equals("hello") && password.equals("world")) {// 如果用户名和密码都正确
        // 新建名为name的Cookie
        Cookie nameCookie = new Cookie("name", URLEncoder.encode(username, "utf-8"));
        // 新建名为password的Cookie
        Cookie passwordCookie = new Cookie("password", password);

        // 设置Cookie的使用路径
        nameCookie.setPath(request.getContextPath() + "/");
        passwordCookie.setPath(request.getContextPath() + "/");

        // 获取是否保存Cookie
        String rememberme = request.getParameter("rememberme");
        // 判断复选框是否被选中,如果选中则返回on
        if (rememberme.equals("on")) {
            // 设置保存Cookie的时间长度,单位为秒
            nameCookie.setMaxAge(7 * 24 * 60 * 60);
            passwordCookie.setMaxAge(7 * 24 * 60 * 60);
        } else {
            // 设置将不保存Cookie
            nameCookie.setMaxAge(0);
            passwordCookie.setMaxAge(0);
        }

        // 输出到客户端
        response.addCookie(nameCookie);
        response.addCookie(passwordCookie);

        // 登录成功后跳转到success.jsp
        request.getRequestDispatcher("success.jsp").forward(request, response);
    } else if (!username.equals("hello") && password.equals("world")) {// 如果用户名不正确,密码正确
        // 保存错误提示数据
        session.setAttribute("error", "用户名不正确");
        // 登录失败后将跳转到error.jsp
        request.getRequestDispatcher("error.jsp").forward(request, response);
    } else if (username.equals("hello") && !password.equals("world")) {// 如果用户名正确,密码不正确
        // 保存错误提示数据
        session.setAttribute("error", "密码不正确");
        // 登录失败后将跳转到error.jsp
        request.getRequestDispatcher("error.jsp").forward(request, response);
    } else {// 如果用户名和密码都不正确
        // 保存错误提示数据
        session.setAttribute("error", "用户名和密码都不正确");
        // 登录失败后将跳转到error.jsp
        request.getRequestDispatcher("error.jsp").forward(request, response);
    }
%>

而登录成功后跳转的success.jsp页面内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    登录成功


    

恭喜你,登录成功!

登录失败后跳转的error.jsp页面内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Error


    

Error:<%=session.getAttribute("error")%>

最后成功

JSP&Servlet(1)——使用JSP实现登录页面使用Cookie记住账号密码功能_第2张图片

如果对完整源码有兴趣。

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【CSDN201909260933】可获取本节源码。

你可能感兴趣的:(#,JSP&Servlet)