看下图:只要是多个不同的用户在这台电脑上用了他们的账号登录成功了,就记住他们的账号信息,但是为了安全起见,密码就不写入到Cookie中了,就算是加密了的密码也不要写入到Cookie中!我们只向Cookie中写入账号!然后用下拉列表框把这些登录成功了的账号加载出来!

可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为了偷懒简单点,我这里暂时不用json格式了,就使用-中划线分隔

rememberUserNameCookie.jsp页面

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录页面,把用户名写入到Cookie中,使用Cookie记住用户名</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/body.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/mark.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/console.css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/console.js"></script>
</head>
<body>
<center><h1>登录页面,把用户名写入到Cookie中,使用Cookie记住用户名</h1><h2>可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为了偷懒简单点,我这里暂时不用json格式了,就使用-中划线分隔</h2><h4>1.记住用户名(如果在同一个浏览器中,有多个用户使用不同的用户名登录网站,我们要把这些用户名都记住,下次网站的登录页面用下拉列表框加载这些用户名)为了安全考虑,我们只记住用户名,不记住密码,就算是加密了的密码我们也不要记住(如果时间充裕的话,把记住多长时间的功能也做一下,可以让用户自己勾选,勾选记住1分钟,记住1周,记住1年等等)</h4><h4>2.Cookie的名字是可以一样的,只要是不同的Web应用程序就可以,浏览器不会混淆这些相同名称的Cookie,因为domain(域)不一样。如果是同一个Web应用程序中,Cookie的名字如果一样的话,会覆盖掉同名的Cookie</h4><input type="button" value="关闭本页面" οnclick="closeMe()"><%Date now = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:sss");out.print("<h2>当前时间:" + df.format(now) + "</h2>");%><%Cookie[] cookies = request.getCookies();boolean flag = false;Cookie accountCookie = null;if (cookies != null) {for (Cookie cookie : cookies) {String cookieName = cookie.getName();if ("account".equals(cookieName)) {// 有名字叫account的Cookieflag = true;accountCookie = cookie;break;}}if (flag) {String cookieValue = accountCookie.getValue();String[] accounts = cookieValue.split("-");//将Cookie中的用户名数组设置到request作用域范围中request.setAttribute("accounts", accounts);for (int index = 0; index < accounts.length; index++) {System.out.println("我是rememberUserNameCookie.jsp页面,用户名:" + accounts[index]);}}}%><h3><font color="red">测试的时候,尽量使用英文来测试,暂时别使用中文测试</font></h3><form action="${pageContext.request.contextPath}/Login" method="get">用户名(账号):<input type="text" id="userName" name="account"><br><br>在此台电脑上登录过的用户列表:<c:if test="${empty requestScope.accounts}" var="result"><input type="text" id="userName" name="account"><br><br></c:if><c:if test="${!result}"><select name="account"><c:forEach var="account" items="${requestScope.accounts}"><option value="${account}">${account}</option></c:forEach></select><br><br></c:if>密码:<input type="password" id="password" name="password"><br><br>记住用户名<input type="checkbox" id="isRemember" name="isRemember" οnclick="rememberUserName()"><!-- visibility: hidden;仍然会占位置,display: none;不会占位置 --><span id="rememberTimeSpan" style="display: none;">1分钟<input type="radio" name="rememberTime" value="60">    1周<input type="radio" name="rememberTime" value="604800">    1年<input type="radio" name="rememberTime" value="31536000">    </span><br><br><input type="submit" value="写入Cookie"></form></center><c:forEach begin="0" end="10" varStatus="statu">下标索引:${statu.index} -数量:${statu.count}<br></c:forEach><hr><c:forEach var="s" begin="1" end="30">${s}
</c:forEach><br><br>
<center>
<h2>使用javaScript编写带编辑输入功能的下拉列表框</h2>
<input type="button" value="显示下拉列表框中的值" οnclick="showSelectNodeValue()">
<input name="homeTown" type="text" id="inputAndEdit" style="width:121px;position: absolute;"/>
<select οnchange="document.getElementById('inputAndEdit').value=this.options[this.selectedIndex].value" style="width:138px;clip: rect(auto auto auto 120px); position: absolute"><option value=""></option>
<option value="于都县">江西省赣州市于都县</option>
<option value="兴国县">江西省赣州市兴国县</option>
<option value="会昌县">江西省赣州市会昌县</option>
<option value="赣县">江西省赣州市赣县</option></select>
<br><br>
<div id="showWindowInfo" class="testDiv3" style="height: auto;">
Window对象中的属性和方法和子对象<br>
</div>
</center>
<br><br><br><br>
</body>
<script type="text/javascript">/*JavaScript中定义数组的三种方式第1种var cars=new Array();cars[0]="奥迪";cars[1]="宝马";cars[2]="兰博基尼";第2种var cars=new Array("奥迪","宝马","兰博基尼");第3种var cars=["奥迪","宝马","兰博基尼"];*///记住用户名function rememberUserName() {
//      var time1 = 60;//1分钟(1分钟主要是为了测试)
//      var time2 = 7 * 24 * 60 * 60;//7天
//      var time3 = 365 * 24 * 60 * 60;//365天
//      var rememberAccountTime = new Array();
//      rememberAccountTime[0] = time1;
//      rememberAccountTime[1] = time2;
//      rememberAccountTime[2] = time3;var checkboxNode = document.getElementById("isRemember");var spanNode = document.getElementById("rememberTimeSpan");
//      var radioNodes = document.getElementsByName("rememberTime");if (checkboxNode.checked) {spanNode.style.display = "inline";
//          for (var index = 0; index < radioNodes.length; index++) {
//              radioNodes[index].value = rememberAccountTime[index];
//          }} else {spanNode.style.display = "none";//          for (var index = 0; index < radioNodes.length; index++) {//               radioNodes[index].checked = false;//           }}}function showSelectNodeValue(){var inputNode = document.getElementById("inputAndEdit");alert(inputNode.value);}function closeMe(){window.location.href="about:blank";window.close();}var divNode = document.getElementById("showWindowInfo");for(var nodeInfo in window){divNode.innerHTML += nodeInfo + "<br>";}</script>
</html>

名字叫Login的servlet

package com.jiongmeng.servlet;import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 测试把用户名写入Cookie中*/
@WebServlet("/Login")
public class Login extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 把用户名写入Cookie中,所以我这里只获取用户名,就不获取密码了String account = request.getParameter("account");//注意:写入和读取Cookie时,如果有中文,容易导致报错account = URLEncoder.encode(account, "utf-8");// 是否记住用户名(账号)的标识 (如果checkbox的value值没有写,那么获取checkbox的value时,就会得到on)String isRemember = request.getParameter("isRemember");System.out.println("是否记住用户名(账号)标识" + isRemember);if (isRemember != null) {// 复选框勾选了记住用户名//记住用户名的时间String rememberTime = request.getParameter("rememberTime");if (rememberTime != null) {int rememberTime_int = Integer.parseInt(rememberTime);System.out.println("记住账号时间" + rememberTime_int);Cookie cookie = new Cookie("account", account);
//               cookie.setMaxAge(2 * 365 * 24 * 60 * 60); //在客户端(浏览器)中保存2年cookie.setMaxAge(rememberTime_int); // 设置在客户端(浏览器)中保存的时间response.addCookie(cookie); // 写COOKIE}}// 使用javascript无法读取HttpOnly=true的cookie,安全性更高// 在cookie中设置了HttpOnly属性=true,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击// javascript无法读取到HttpOnly=true的cookie信息,但是服务器端仍然可以使用java语言读取到cookie信息// cookie.setHttpOnly(true);//      showCookies(request, response);setCookies(request, response);//转发
//      request.getRequestDispatcher("/rememberUserNameCookie.jsp").forward(request, response);//重定向response.sendRedirect(request.getContextPath() + "/rememberUserNameCookie.jsp");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void showCookies(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Cookie[] cookies = request.getCookies();if (cookies != null) {for (Cookie cookie : cookies) {String cookieName = cookie.getName();String cookieValue = cookie.getValue();cookieValue = URLDecoder.decode(cookieValue, "utf-8");System.out.println("cookieName=" + cookieName + " cookieValue=" + cookieValue);}}}protected void setCookies(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {Cookie[] cookies = request.getCookies();boolean flag = false;Cookie accountCookie = null;if (cookies != null) {for (Cookie cookie : cookies) {String cookieName = cookie.getName();if ("account".equals(cookieName)) {// 有名字叫account的Cookieflag = true;accountCookie = cookie;break;}}if (flag) {String cookieValue = accountCookie.getValue();System.out.println("*********" + cookieValue + "*********");/*** 可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为* 了偷懒简单点,我这里暂时不用json格式了,就使用-中划线分隔*/
System.out.println("account=" + request.getParameter("account") + "=======================");cookieValue += "-" + request.getParameter("account");System.out.println("------" + cookieValue + "------");String isRemember = request.getParameter("isRemember");if (isRemember != null) {// 复选框勾选了记住用户名// 记住用户名的时间String rememberTime = request.getParameter("rememberTime");if (rememberTime != null) {int rememberTime_int = Integer.parseInt(rememberTime);Cookie cookie = new Cookie("account", cookieValue);cookie.setMaxAge(rememberTime_int); // 设置在客户端(浏览器)中保存的时间response.addCookie(cookie); // 写COOKIE}}}}}}

使用Cookie记住多个登录账号!相关推荐

  1. Java实现登录时cookie记住密码

    前言 Java实现登录时cookie记住密码,下次登录不用重新输入密码,自动记住密码进行登录 编写代码 首先写一个页面登录表单,还有它对应的js <%--Created by IntelliJ ...

  2. 关于电商网站购物车功能如何与登录账号相关联的一点想法

    最近在试着做电商网站,自然也需要涉及到实现购物车的功能.然后就想到去用cookie来完成购物车的功能. 实现过程是新建一个cookie,把购物车实体类的list放进去,每次给购物车新增商品和删除商品的 ...

  3. JavaWeb利用cookie记住账号

    JavaWeb利用cookie记住账号. 首先,来看看界面什么样子. 记住账号最普遍的做法,就是在点击登录时,将账号保存到cookie中. 材料准备 <script src="${ct ...

  4. php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery

    本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法.分享给大家供大家参考,具体如下: 需要导入的js有jquery.js和jquery.cookie.js 在页面加载时首先尝 ...

  5. Android编写一个登录界面,利用数据库实现记住密码,注册账号,强制下线,以及类似QQ的下拉列表登录功能

    首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧! 1.建立一个所有活动的父类,继承自Appcompat ...

  6. python-web自动化测试-验证码的处理(通过记录cookie,实现自动登录)

    验证码是一种随机生成的信息(图片.数字.字母.汉字.算术题)等为了防止恶意的请求行为,增加应用的安全性. 验证码的判定优先级高于账号和密码. 一.验证码的处理方法 (1)取消验证码----->找 ...

  7. Vue+Spring Boot实现图片验证码、邮箱验证码以及Cookie记住我功能(前后端代码详解)

    Vue实现图片验证码.邮箱验证码以及Cookie记住我功能 前言 图片验证码实现 Vue前端实现 Spring Boot后端实现 邮箱验证码实现 Vue前端实现 Spring Boot后端实现 Coo ...

  8. JWT的使用及登录账号

    Django REST framework JWT 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT. 关于签发和核验JWT,我们 ...

  9. jsp 通过cookie 记住用户名

    2019独角兽企业重金招聘Python工程师标准>>> jsp 通过cookie 记住用户名 博客分类: Java Web 记住用户名记住密码remember mecookie会话 ...

最新文章

  1. Centos7 网络yum
  2. [HDOJ4006]The kth great number
  3. python资料书-史上最全Python从入门到资深书籍资料分享!
  4. tensorflow实现梯度累计,再回传
  5. springmvc 注解总结
  6. java 哈希算法_选择Java密码算法第1部分-哈希
  7. PHP之wampserver修改根目录与默认页面
  8. layui 可以商用吗_layui框架的优缺点是什么
  9. 【luogu P2831 愤怒的小鸟】 题解
  10. paip.简化字-手写参考二简字..共98个
  11. MacBook Pro 开机密码忘记的解决办法
  12. html那个代码看不到内容,IE浏览器 查看不了HTML源代码的问题解决!
  13. 错误: 找不到符号 java
  14. 核心价值观与企业文化管理实践---基于华为的企业文化的管理实践-林 安老师
  15. 获取图片上任意一点的颜色值
  16. AR行业报告:甩掉VR,5年内AR将迎来大爆发 | 报告
  17. 这次一定弄懂完全图、连通图、连通分量、强连通图、强连通分量、极大连通分量、极小联通分量、生成树、生成森林的区别
  18. 拓嘉启远:拼多多虚拟产品相关分享
  19. labelshop更改打印机_条形码生成器签赋LabelShop打印流程
  20. 击碎数据标注五大误解,这门生意真不是你想象的“富士康” | 钛媒体深度

热门文章

  1. 【推荐系统论文精读系列】(二)--Factorization Machines
  2. 大规模多智能体路径规划
  3. 十年风雨,一个普通程序员的成长之路(七)膨胀、骄傲,程序员转项目经理的原罪...
  4. Flink任务链Operator Chains
  5. 解密mysql导出的ncx文件内的加密密码
  6. Otter.ai创始人Sam Liang:智能记录你的生活对话
  7. 计算机网络技术项目成果,计算机网络技术专业建设预期成效
  8. Luogu 3371【模板】单源最短路径
  9. 爸爸,男人最温柔的名字
  10. JavaScript代码在哪里放置?