当前位置: 首页 > news >正文

网站3天免输入登录页面编程

网站3天免输入登录页面编程


1.实验目的

掌握JSP的内置对象技术以及表单验证在服务器端的实现技术

2.实验内容

编写网站的登录页面,要求能保存用户登录成功时输入的用户名及密码信息,当同一用户 3天内再次登录网站首页时,能自动读取之前保存的用户信息判断身份是否合法,如果合法自动完成登录。如果当同一用户超过3天再次登录网站首页时,则需要重新输入用户名及密码进行身份验证,通过验证方能登录并显示欢迎信息。否则提示:身份验证失败,必须重新输入输入。

3.设计思想

整体流程:

1). 页面加载 → 读取 Cookie。
2). Cookie 存在且未过期 → 自动提交登录请求。
3). 后端 JSP 校验 → 返回 JSON(成功 / 失败)。
4). 前端根据结果渲染:登录页 / 欢迎页 / 错误提示。
5). 退出 → 清空 Cookie,回到登录页。

前后端分工:

前端(index.html):Cookie 读写、自动登录判断、AJAX 请求、页面渲染。
后端(login.jsp):参数接收、账号校验、JSON 返回、Session 保存。

其他:

因服务器未安装数据库,因此将以预设账户来代替从数据库中新增与读取数据库信息

4.核心代码实现

1).后端:login.jsp
<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*, java.io.*" %>
<%response.setContentType("application/json");response.setCharacterEncoding("UTF-8");String username = request.getParameter("username");String password = request.getParameter("password");boolean success = false;String msg = "";if (username == null || password == null || username.trim().equals("") || password.trim().equals("")) {msg = "用户名和密码不能为空";} else if (("admin".equals(username) && "123456".equals(password)) ||("test".equals(username) && "123456".equals(password)) ||("user".equals(username) && "123456".equals(password))) {success = true;msg = "登录成功";session.setAttribute("loginUser", username); // 保存登录态} else {msg = "用户名或密码错误,请重新输入";}String json = "{\"success\":" + success + ",\"message\":\"" + msg + "\"}";out.print(json);
%>
2).前端:index.html

(a).Cookie 相关核心代码

const THREE_DAYS = 3 * 24 * 60 * 60 * 1000;
function saveCookie(username, password) {let date = new Date();date.setTime(date.getTime() + THREE_DAYS);let expires = date.toUTCString();document.cookie = "username=" + encodeURIComponent(username) + "; expires=" + expires + "; path=/";document.cookie = "password=" + encodeURIComponent(password) + "; expires=" + expires + "; path=/";document.cookie = "loginTime=" + Date.now() + "; expires=" + expires + "; path=/";
}
function getCookie() {let cookies = document.cookie.split("; ");let user = "", pwd = "", time = 0;cookies.forEach(c => {let [k, v] = c.split("=");if (k === "username") user = decodeURIComponent(v);if (k === "password") pwd = decodeURIComponent(v);if (k === "loginTime") time = Number(v);});if (user && pwd && time) {return { username: user, password: pwd, loginTime: time };}return null;
}
// 清除Cookie
function clearCookie() {document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";document.cookie = "password=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";document.cookie = "loginTime=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
}
// 判断是否在3天内
function is3DayValid(t) {return Date.now() - t <= THREE_DAYS;
}

(b).AJAX 登录请求

async function login(username, password) {let fd = new FormData();fd.append("username", username);fd.append("password", password);let res = await fetch("login.jsp", { method: "POST", body: fd });return await res.json();
}

(c).页面初始化逻辑(自动登录核心)

async function init() {let ck = getCookie();if (ck && is3DayValid(ck.loginTime)) {//Cookie有效:自动登录let ret = await login(ck.username, ck.password);if (ret.success) {renderWelcome(ck.username);return;}}//Cookie无效/过期/登录失败:显示登录页clearCookie();renderLogin();
}

5.运行效果

1.初始登录界面
2.登录成功欢迎页
3.账号密码错误提示
http://www.jsqmd.com/news/823805/

相关文章:

  • OpenRGB终极指南:3步告别RGB软件混乱,免费统一控制所有设备灯光
  • 苹果设备iCloud激活锁免费解锁终极指南:iOS 15-16系统快速绕过教程
  • 年均增长9.15%!2024-2031年全球汽车铁芯市场狂飙
  • 用盲水印技术守护你的数字创作:从原理到实战的完整指南
  • 如何彻底解决《恶霸鲁尼》Windows兼容性问题:SilentPatchBully技术架构深度解析
  • Python SciPy实现标准频带FIR滤波器:从原理到实战应用
  • Python零基础如何快速调用大模型API,使用Taotoken实现分钟级接入
  • 3分钟掌握音频频谱分析:Spek免费工具完全指南
  • 国产第二代碳化硅MOSFET如何革新直流充电桩电源设计
  • 告别ICMP被墙!用TCP Traceroute精准探测服务器路径(附Win/Mac/Linux三平台保姆级教程)
  • VR-Reversal:3步实现3D VR视频转2D播放的高效解决方案
  • 基于PyGamer/PyBadge与Arcada库的体感弹跳游戏开发全解析
  • 佛山 CPPM 证书报考常见问题(含金量 / 通过率和费用) - 众智商学院课程中心
  • 对比直接使用官方 API,通过 Taotoken 管理多模型密钥的便利性
  • python电子考场与nacos运行监控
  • 3分钟掌握Layerdivider:智能PSD分层工具的完整指南
  • 用 Servlet 实现商城系统用户登录
  • 南昌考点 SCMP 证书关于(含金量和通过率及费用)详细解读 - 众智商学院课程中心
  • Arduino SAMD/M4开发板Bootloader详解:UF2与BOSSA原理、烧录与排错指南
  • 免缝LED腕带:用导电布胶带轻松入门电子织物制作
  • 基于ESP32与3D打印的48km/h开源遥控赛车全栈开发指南
  • 个人冲刺第一阶段 培训管理子系统——课程管理与培训管理模块典型用户与场景分析
  • FModel终极指南:免费快速提取虚幻引擎游戏资源的完整解决方案
  • 基于 Simulink 的载波移相(PS-SPWM)级联 H 桥(CHB)双向 DC/AC 逆变器实战教程
  • ENS160气体传感器:从MOX原理到物联网空气质量监测实战
  • 论文初稿完成后才是真正的开始
  • 在VS Code中结合Taotoken API快速构建AI代码助手插件
  • 开源GPT-4 API客户端深度解析:架构、实现与生产实践
  • STM32智能小车开发实战:从硬件设计到PID算法与物联网控制
  • 2026年05月锦州豆制品热销榜:口碑五香豆制品经销推荐,豆干/豆腐/绢豆腐/内酯豆腐/五香豆干/千张,豆制品公司推荐 - 品牌推荐师