Cookie实现记住用户名密码

前言

本文提供使用cookie实现记住用户名、密码的代码实例、难点注释。
文末有完整项目代码下载地址。

实现界面

初始登录界面
Cookie实现记住用户名密码_第1张图片
输入:
张三
123456
点击登录之后跳转界面:
Cookie实现记住用户名密码_第2张图片
可查看用户信息:
Cookie实现记住用户名密码_第3张图片
关闭所有页面,重新打开登录页面后保留上一次登录信息:
Cookie实现记住用户名密码_第4张图片

实现代码

login.jsp

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*,java.net.*" language="java" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
 
%>


    
    login page


用户登录


<% request.setCharacterEncoding("utf-8"); String userName = ""; String passWord = ""; //以下表示找到已存在的Cookie对象 Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { if (c.getName().equals("usernameC")) { userName = URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码 } if (c.getName().equals("passwordC")) { passWord = URLDecoder.decode(c.getValue(), "utf-8"); } } } %>
用户名:
密码:
十天内记住我的登录状态

dologin.jsp

<%@ page import="java.text.CollationKey" %>
<%@ page import="java.net.*" %>
<%@ page import="sun.nio.cs.UTF_32" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>


    
    dologin page


登录成功!





<% //作用是用指定的编码集去覆盖request对象中的默认的"ISO-8859-1"编码集, // 这样request.getParameter("")方法就会用新的编码集去解码, // 但是这个方法有一个条件,就是必须在第一次使用request时就要调用这个方法来设置编码集,否则该方法就会无效。 //这里设置的是编码,之后在user中取值还需要解码(或者转码):URLDecoder.decode(c.getValue(),"utf-8");//使用URLDecoder解码 request.setCharacterEncoding("utf-8"); //首先判断用户是否选择了记住登录状态 String[] isUseCookie = request.getParameterValues("isUseCookie"); if (isUseCookie != null && isUseCookie.length > 0) { //把用户名和密码保存在Cookie对象中 String username = URLEncoder.encode(request.getParameter("username"), "utf-8"); //使用URLEncoder解决中文报错问题,在net包中 String password = URLEncoder.encode(request.getParameter("password"), "utf-8"); Cookie usernameCookie = new Cookie("usernameC", username); Cookie passwordCookie = new Cookie("passwordC", password); //保存上面两个对象 usernameCookie.setMaxAge(864000); passwordCookie.setMaxAge(864000);//该Cookie对象保存多少秒(在这里是设置生存期限为十天) response.addCookie(usernameCookie); response.addCookie(passwordCookie); } else {//未选择记住,将Cookie对象置为失效 //以下表示找到已存在的Cookie对象 Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { if (c.getName().equals("usernameC") || c.getName().equals("passwordC")) { c.setMaxAge(0);//设置Cookie失效 response.addCookie(c);//重新保存 } } } } %> 查看用户信息

users.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>


    
    用户信息page


用户信息





<% request.setCharacterEncoding("utf-8"); String userName = ""; String passWord = ""; //以下表示找到已存在的Cookie对象 Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { if (c.getName().equals("usernameC")) { userName = URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码 } if (c.getName().equals("passwordC")) { passWord = URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码 } } } %> 用户名:<%=userName%>
密码:<%=passWord%>

博主使用(intellij idea+tomcat)
github项目地址:https://github.com/StathamWYJ/cookieDemo

你可能感兴趣的:(JSP,Java,Web)