You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text/web/forget.jsp

119 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 这是JSPJava Server Pages页面的指令标签具体作用如下
- contentType="text/html;charset=UTF-8"指定该页面响应内容的类型为HTML格式同时将字符编码设置为UTF-8确保页面能正确处理和显示各种字符像中文等特殊字符不会出现乱码现象。
- language="java"表明在这个JSP页面中使用的脚本语言是Java后续可以在页面里嵌入Java代码片段来实现诸如与服务器端交互、业务逻辑处理等功能。不过从当前整个页面来看主要还是以HTML、CSS和JavaScript实现前端相关功能为主 -->
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 设置HTML页面的字符编码为UTF-8与上面JSP指令中的字符编码设置相呼应保证页面内容能正确解析和显示 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 指示浏览器以IE的最高版本或者Chrome 1的模式来渲染页面用于解决不同浏览器之间的兼容性问题尽量保证页面在不同浏览器下呈现的效果相对一致 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- 设置视口相关属性让页面宽度等于设备宽度初始缩放比例为1最大缩放比例也为1意味着页面在移动端等设备上初始显示时按设备宽度自适应并且用户不能进行缩放操作 -->
<title>忘记密码</title>
<!-- 设置HTML页面的标题这个标题会显示在浏览器的标签栏上让用户清楚当前页面的主要功能是用于“忘记密码”相关操作 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入外部样式表文件layui.css通常这是Layui前端框架的核心样式文件用于应用该框架预定义的各种UI组件、布局等样式 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的style.css样式文件可能用于覆盖Layui框架的部分默认样式或者添加页面特定的样式规则 -->
<link rel="stylesheet" href="./css/login.css">
<!-- 引入专门针对登录相关功能此处是忘记密码功能可能和登录共用部分样式逻辑的login.css样式文件进一步定制页面的外观样式 -->
<script src="layui.js"></script>
<!-- 引入Layui框架的JavaScript核心文件通过这个文件可以使用Layui框架提供的各种JavaScript组件和功能比如表单验证、弹出层等功能 -->
</head>
<body>
<div class="frame-main">
<!-- 这可能是整个页面主体内容的一个外层框架容器,用于整体布局,通过类名"frame-main"可以在CSS样式表中对其设置宽度、高度、边距等布局相关的样式属性 -->
<div class="login-main">
<!-- 可能是专门用于放置登录相关内容(此处是忘记密码相关元素)的容器,通过类名"login-main"可以进一步定制其内部元素的排列、样式等 -->
<header class="layui-elip">找回密码</header>
<!-- 使用了layui-elip类的<header>元素可能是应用了Layui框架中特定的样式类来实现文本的某种排版效果比如省略显示等不过具体要看对应样式定义用于显示页面的主要标题“找回密码” -->
<form class="layui-form">
<!-- 创建一个表单元素并且应用了layui-form类表明这个表单会应用Layui框架提供的表单相关的样式和验证等功能 -->
<div class="layui-input-inline">
<!-- 创建一个行内块级的<div>元素,用于在表单内布局输入框等元素,使得它们可以在同一行显示(具体布局还取决于样式设置) -->
<label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
<!-- 创建一个<label>标签应用了多个类名其中layui-icon类表明它是Layui框架中的图标元素layui-icon-username类指定了具体的图标样式这里推测是代表用户名相关的图标用于在输入框前面显示一个特定的图标作为提示 -->
<input type="text" name="account" required lay-verify="required" placeholder="请输入注册时的ID" autocomplete="off"
class="layui-input">
<!-- 创建一个文本输入框,设置了以下属性:
- type="text":表明是文本类型的输入框,用于用户输入文本信息。
- name="account":为输入框设置一个名称,方便后续在表单提交等操作中识别和获取该输入框的值。
- requiredHTML5的属性表明这个输入框是必填项浏览器会进行相应的验证提示。
- lay-verify="required"Layui框架的验证属性再次强调这个输入框是必填的当用户提交表单时如果该输入框为空会触发验证提示。
- placeholder="请输入注册时的ID":在输入框为空时显示的提示文本,提示用户应该输入的内容。
- autocomplete="off":关闭浏览器的自动填充功能,避免浏览器自动填充一些不合适的信息到该输入框。
- class="layui-input"应用Layui框架中针对输入框的样式类使输入框呈现出相应的外观样式。 -->
</div>
<div class="layui-input-inline">
<label class="layadmin-user-login-icon layui-icon layui-icon-email"></label>
<input type="password" name="password" required lay-verify="required" placeholder="用于找回的邮箱" autocomplete="off"
class="layui-input">
<!-- 与上面的输入框类似不过这里是一个密码类型的输入框type="password"),用于用户输入找回密码所需要的邮箱地址,同样设置了必填、验证、提示文本等相关属性 -->
</div>
<div class="layui-input-inline login-btn">
<!-- 又是一个行内块级的<div>元素用于放置提交按钮并且应用了login-btn类可能用于对按钮设置特定的样式比如大小、颜色等 -->
<button lay-submit lay-filter="login" class="layui-btn">找回</button>
<!-- 创建一个按钮元素应用了layui-btn类使其呈现Layui框架中按钮的默认样式lay-submit属性表示这个按钮可以触发表单提交操作lay-filter="login"属性用于为按钮绑定一个特定的事件过滤器方便后续在JavaScript代码中对按钮的点击事件进行监听和处理 -->
</div>
<hr/>
<!-- 创建一个水平分割线元素,用于在页面上划分不同的区域,起到视觉上的分隔作用 -->
<p><a href="login.jsp" class="fl">登录&emsp;&emsp;&emsp;&emsp;</a><a href="https://yoyling.com" class="fl">如果你未绑定邮箱请联系我</a><a href="register.jsp" class="fr">注册</a></p>
<!-- 创建一个段落元素,里面包含了三个链接元素:
- 第一个链接href="login.jsp"指向登录页面login.jsp并应用了fl类可能用于设置左浮动等样式布局相关操作显示文本“登录”方便用户在忘记密码页面可以直接跳转到登录页面。
- 第二个链接href="https://yoyling.com"指向一个外部网站yoyling.com同样应用了fl类显示文本“如果你未绑定邮箱请联系我”用于提示用户在未绑定邮箱的情况下如何寻求帮助。
- 第三个链接href="register.jsp"指向注册页面register.jsp应用了fr类可能用于设置右浮动等样式布局相关操作显示文本“注册”方便用户进行注册相关操作。 -->
</form>
</div>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<!-- 创建一个<footer>元素通过内联样式设置其绝对定位在页面底部bottom:0宽度占满整个页面width:100%高度为30px并且文本居中对齐text-align: center用于显示版权相关的声明信息“© 2018-2019.YOYLING.COM” -->
<script type="text/javascript">
layui.use(['form','layer','jquery'], function () {
// 使用Layui框架的模块加载机制加载名为'form'(用于表单操作和验证等功能)、'layer'(用于弹出层提示等功能)、'jquery'虽然这里写的是加载但实际上可能是Layui内部已经集成了jQuery或者对其进行了适配用于进行DOM操作、AJAX请求等常见的JavaScript操作的模块加载完成后执行回调函数。
// 操作对象
var form = layui.form;
// 获取Layui框架中表单模块的实例对象后续可以通过这个对象调用表单相关的方法比如进行表单验证、监听表单提交事件等操作。
var $ = layui.jquery;
// 获取Layui框架中经过适配后的jQuery对象或者就是原生的jQuery对象如果Layui是基于它来集成的方便后续进行各种DOM操作和AJAX请求等操作。
form.on('submit(login)',function (data) {
// 使用表单模块的on方法来监听表单提交事件这里监听的是lay-filter="login"的按钮点击提交表单时触发的事件。当事件触发时会传入一个包含表单数据等信息的参数data执行回调函数内的代码。
// console.log(data.field);
// 这行代码如果取消注释,可以在控制台打印出表单中各个输入框等元素提交的数据,用于调试查看用户输入的内容是否正确获取到了,此处是获取到以对象形式存储的表单数据(字段名为键,用户输入的值为对应的值)。
$.ajax({
url:'login.php',
// 设置AJAX请求的目标URL地址这里是向名为login.php的服务器端脚本文件发送请求通常这个文件会用于处理登录相关的业务逻辑此处是忘记密码的验证逻辑可能存在复用情况比如验证用户输入的账号和邮箱是否匹配等操作。
data:data.field,
// 将获取到的表单数据前面提到的data.field作为请求的数据发送给服务器端服务器端可以根据这些数据进行相应的处理。
dataType:'text',
// 设置期望从服务器端返回的数据类型为文本类型,意味着服务器端返回的内容会被当作普通文本进行处理。
type:'post',
// 设置AJAX请求的方式为POST方式相比于GET方式POST方式更适合用于提交表单数据等需要传递较多数据或者敏感数据的情况数据会放在请求体中发送给服务器端。
success:function (data) {
// 这是AJAX请求成功后的回调函数当服务器端正确响应并返回数据后会执行这个函数参数data就是服务器端返回的数据内容。
if (data == '1'){
location.href = "../index.php";
// 如果服务器端返回的数据内容是'1'则认为验证通过通过修改浏览器的地址栏将页面重定向到上级目录下的index.php页面这里推测index.php可能是系统的主页面或者登录成功后的欢迎页面等。
}else{
layer.msg('登录名或密码错误');
// 如果服务器端返回的数据不是'1'则认为验证失败使用Layui框架的layer模块弹出一个提示消息框显示“登录名或密码错误”的提示信息告知用户验证未通过的原因。
}
}
})
return false;
// 返回false阻止表单的默认提交行为因为这里已经通过AJAX方式手动向服务器端发送了请求不需要浏览器再进行默认的表单提交操作了避免页面刷新等不必要的情况发生。
})
});
</script>
</body>
</html>