使用Cookie记住多个登录账号!
看下图:只要是多个不同的用户在这台电脑上用了他们的账号登录成功了,就记住他们的账号信息,但是为了安全起见,密码就不写入到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记住多个登录账号!相关推荐
- Java实现登录时cookie记住密码
前言 Java实现登录时cookie记住密码,下次登录不用重新输入密码,自动记住密码进行登录 编写代码 首先写一个页面登录表单,还有它对应的js <%--Created by IntelliJ ...
- 关于电商网站购物车功能如何与登录账号相关联的一点想法
最近在试着做电商网站,自然也需要涉及到实现购物车的功能.然后就想到去用cookie来完成购物车的功能. 实现过程是新建一个cookie,把购物车实体类的list放进去,每次给购物车新增商品和删除商品的 ...
- JavaWeb利用cookie记住账号
JavaWeb利用cookie记住账号. 首先,来看看界面什么样子. 记住账号最普遍的做法,就是在点击登录时,将账号保存到cookie中. 材料准备 <script src="${ct ...
- php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery
本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法.分享给大家供大家参考,具体如下: 需要导入的js有jquery.js和jquery.cookie.js 在页面加载时首先尝 ...
- Android编写一个登录界面,利用数据库实现记住密码,注册账号,强制下线,以及类似QQ的下拉列表登录功能
首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧! 1.建立一个所有活动的父类,继承自Appcompat ...
- python-web自动化测试-验证码的处理(通过记录cookie,实现自动登录)
验证码是一种随机生成的信息(图片.数字.字母.汉字.算术题)等为了防止恶意的请求行为,增加应用的安全性. 验证码的判定优先级高于账号和密码. 一.验证码的处理方法 (1)取消验证码----->找 ...
- Vue+Spring Boot实现图片验证码、邮箱验证码以及Cookie记住我功能(前后端代码详解)
Vue实现图片验证码.邮箱验证码以及Cookie记住我功能 前言 图片验证码实现 Vue前端实现 Spring Boot后端实现 邮箱验证码实现 Vue前端实现 Spring Boot后端实现 Coo ...
- JWT的使用及登录账号
Django REST framework JWT 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT. 关于签发和核验JWT,我们 ...
- jsp 通过cookie 记住用户名
2019独角兽企业重金招聘Python工程师标准>>> jsp 通过cookie 记住用户名 博客分类: Java Web 记住用户名记住密码remember mecookie会话 ...
最新文章
- Centos7 网络yum
- [HDOJ4006]The kth great number
- python资料书-史上最全Python从入门到资深书籍资料分享!
- tensorflow实现梯度累计,再回传
- springmvc 注解总结
- java 哈希算法_选择Java密码算法第1部分-哈希
- PHP之wampserver修改根目录与默认页面
- layui 可以商用吗_layui框架的优缺点是什么
- 【luogu P2831 愤怒的小鸟】 题解
- paip.简化字-手写参考二简字..共98个
- MacBook Pro 开机密码忘记的解决办法
- html那个代码看不到内容,IE浏览器 查看不了HTML源代码的问题解决!
- 错误: 找不到符号 java
- 核心价值观与企业文化管理实践---基于华为的企业文化的管理实践-林 安老师
- 获取图片上任意一点的颜色值
- AR行业报告:甩掉VR,5年内AR将迎来大爆发 | 报告
- 这次一定弄懂完全图、连通图、连通分量、强连通图、强连通分量、极大连通分量、极小联通分量、生成树、生成森林的区别
- 拓嘉启远:拼多多虚拟产品相关分享
- labelshop更改打印机_条形码生成器签赋LabelShop打印流程
- 击碎数据标注五大误解,这门生意真不是你想象的“富士康” | 钛媒体深度