转发:https://www.cnblogs.com/gluncle/p/8485198.html
1.1用户注册jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>注册页面title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href=" ">
<script type="text/javascript" src=" ">script>
<script type="text/javascript" src=" ">script>
head>
<body>
<div id="divMain">
<div id="divTitle">
<span id="spanTitle">新用户注册span>
div>
<div id="divBody">
<form action=" " method="post" id="registForm">
<input type="hidden" name="method" value="regist"/>
<table id="tableForm">
<tr>
<td class="tdText">用户名:td>
<td class="tdInput">
<input class="inputClass" type="text" name="loginname" id="loginname" value="${form.loginname }"/>
td>
<td class="tdError">
<label class="errorClass" id="loginnameError">${errors.loginname }label>
td>
tr>
<tr>
<td class="tdText">登录密码:td>
<td>
<input class="inputClass" type="password" name="loginpass" id="loginpass" value="${form.loginpass }"/>
td>
<td>
<label class="errorClass" id="loginpassError">${errors.loginpass }label>
td>
tr>
<tr>
<td class="tdText">确认密码:td>
<td>
<input class="inputClass" type="password" name="reloginpass" id="reloginpass" value="${form.reloginpass }"/>
td>
<td>
<label class="errorClass" id="reloginpassError">${errors.reloginpass}label>
td>
tr>
<tr>
<td class="tdText">Email:td>
<td>
<input class="inputClass" type="text" name="email" id="email" value="${form.email }"/>
td>
<td>
<label class="errorClass" id="emailError">${errors.email}label>
td>
tr>
<tr>
<td class="tdText">验证码:td>
<td>
<input class="inputClass" type="text" name="verifyCode" id="verifyCode" value="${form.verifyCode }"/>
td>
<td>
<label class="errorClass" id="verifyCodeError">${errors.verifyCode}label>
td>
tr>
<tr>
<td>td>
<td>
<div id="divVerifyCode"><img id="imgVerifyCode" src=" "/>div>
td>
<td>
<label><a href="javascript:_hyz()">换一张a>label>
td>
tr>
<tr>
<td>td>
<td>
<input type="image" src=" " id="submitBtn"/>
td>
<td>
<label>label>
td>
tr>
table>
form>
div>
div>
body>
html>
1.2 用户注册校验js
$(function() {
/*
* 1. 得到所有的错误信息,循环遍历之。调用一个方法来确定是否显示错误信息!
*/
$(".errorClass").each(function() {
showError($(this));//遍历每个元素,使用每个元素来调用showError方法
});
/*
* 2. 切换注册按钮的图片
*/
$("#submitBtn").hover(
function() {
$("#submitBtn").attr("src", "/goods/images/regist2.jpg");
},
function() {
$("#submitBtn").attr("src", "/goods/images/regist1.jpg");
}
);
/*
* 3. 输入框得到焦点隐藏错误信息
*/
$(".inputClass").focus(function() {
var labelId = $(this).attr("id") + "Error";//通过输入框找到对应的label的id
$("#" + labelId).text("");//把label的内容清空!
showError($("#" + labelId));//隐藏没有信息的label
});
/*
* 4. 输入框失去焦点进行校验
*/
$(".inputClass").blur(function() {
var id = $(this).attr("id");//获取当前输入框的id
var funName = "validate" + id.substring(0,1).toUpperCase() + id.substring(1) + "()";//得到对应的校验函数名
eval(funName);//执行函数调用
});
/*
* 5. 表单提交时进行校验
*/
$("#registForm").submit(function() {
var bool = true;//表示校验通过
if(!validateLoginname()) {
bool = false;
}
if(!validateLoginpass()) {
bool = false;
}
if(!validateReloginpass()) {
bool = false;
}
if(!validateEmail()) {
bool = false;
}
if(!validateVerifyCode()) {
bool = false;
}
return bool;
});
});
/*
* 登录名校验方法
*/
function validateLoginname() {
var id = "loginname";
var value = $("#" + id).val();//获取输入框内容
/*
* 1. 非空校验
*/
if(!value) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("用户名不能为空!");
showError($("#" + id + "Error"));
return false;
}
/*
* 2. 长度校验
*/
if(value.length < 3 || value.length > 20) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("用户名长度必须在3 ~ 20之间!");
showError($("#" + id + "Error"));
false;
}
/*
* 3. 是否注册校验
*/
$.ajax({
url:"/goods/UserServlet",//要请求的servlet
data:{method:"ajaxValidateLoginname", loginname:value},//给服务器的参数
type:"POST",
dataType:"json",
async:false,//是否异步请求,如果是异步,那么不会等服务器返回,我们这个函数就向下运行了。
cache:false,
success:function(result) {
if(!result) {//如果校验失败
$("#" + id + "Error").text("用户名已被注册!");
showError($("#" + id + "Error"));
return false;
}
}
});
return true;
}
/*
* 登录密码校验方法
*/
function validateLoginpass() {
var id = "loginpass";
var value = $("#" + id).val();//获取输入框内容
/*
* 1. 非空校验
*/
if(!value) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("密码不能为空!");
showError($("#" + id + "Error"));
return false;
}
/*
* 2. 长度校验
*/
if(value.length < 3 || value.length > 20) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("密码长度必须在3 ~ 20之间!");
showError($("#" + id + "Error"));
false;
}
return true;
}
/*
* 确认密码校验方法
*/
function validateReloginpass() {
var id = "reloginpass";
var value = $("#" + id).val();//获取输入框内容
/*
* 1. 非空校验
*/
if(!value) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("确认密码不能为空!");
showError($("#" + id + "Error"));
return false;
}
/*
* 2. 两次输入是否一致校验
*/
if(value != $("#loginpass").val()) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("两次输入不一致!");
showError($("#" + id + "Error"));
false;
}
return true;
}
/*
* Email校验方法
*/
function validateEmail() {
var id = "email";
var value = $("#" + id).val();//获取输入框内容
/*
* 1. 非空校验
*/
if(!value) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("Email不能为空!");
showError($("#" + id + "Error"));
return false;
}
/*
* 2. Email格式校验
*/
if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(value)) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("错误的Email格式!");
showError($("#" + id + "Error"));
false;
}
/*
* 3. 是否注册校验
*/
$.ajax({
url:"/goods/UserServlet",//要请求的servlet
data:{method:"ajaxValidateEmail", email:value},//给服务器的参数
type:"POST",
dataType:"json",
async:false,//是否异步请求,如果是异步,那么不会等服务器返回,我们这个函数就向下运行了。
cache:false,
success:function(result) {
if(!result) {//如果校验失败
$("#" + id + "Error").text("Email已被注册!");
showError($("#" + id + "Error"));
return false;
}
}
});
return true;
}
/*
* 验证码校验方法
*/
function validateVerifyCode() {
var id = "verifyCode";
var value = $("#" + id).val();//获取输入框内容
/*
* 1. 非空校验
*/
if(!value) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("验证码不能为空!");
showError($("#" + id + "Error"));
return false;
}
/*
* 2. 长度校验
*/
if(value.length != 4) {
/*
* 获取对应的label
* 添加错误信息
* 显示label
*/
$("#" + id + "Error").text("错误的验证码!");
showError($("#" + id + "Error"));
false;
}
/*
* 3. 是否正确
*/
$.ajax({
url:"/goods/UserServlet",//要请求的servlet
data:{method:"ajaxValidateVerifyCode", verifyCode:value},//给服务器的参数
type:"POST",
dataType:"json",
async:false,//是否异步请求,如果是异步,那么不会等服务器返回,我们这个函数就向下运行了。
cache:false,
success:function(result) {
if(!result) {//如果校验失败
$("#" + id + "Error").text("验证码错误!");
showError($("#" + id + "Error"));
return false;
}
}
});
return true;
}
/*
* 判断当前元素是否存在内容,如果存在显示,不页面不显示!
*/
function showError(ele) {
var text = ele.text();//获取元素的内容
if(!text) {//如果没有内容
ele.css("display", "none");//隐藏元素
} else {//如果有内容
ele.css("display", "");//显示元素
}
}
/*
* 换一张验证码
*/
function _hyz() {
/*
* 1. 获取元素
* 2. 重新设置它的src
* 3. 使用毫秒来添加参数
*/
$("#imgVerifyCode").attr("src", "/goods/VerifyCodeServlet?a=" + new Date().getTime());
}
2.1 用户登录jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>登录title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href=" ">
<script type="text/javascript" src=" ">script>
<script type="text/javascript" src=" ">script>
<script src=" ">script>
<script type="text/javascript">
$(function() {/*Map*/
// 获取cookie中的用户名
var loginname = window.decodeURI("${cookie.loginname.value}");
if("${requestScope.user.loginname}") {
loginname = "${requestScope.user.loginname}";
}
$("#loginname").val(loginname);
});
script>
head>
<body>
<div class="main">
<div><img src=" " />div>
<div>
<div class="imageDiv"><img class="img" src=" "/>div>
<div class="login1">
<div class="login2">
<div class="loginTopDiv">
<span class="loginTop">传智会员登录span>
<span>
<a href=" " class="registBtn">a>
span>
div>
<div>
<form target="_top" action=" " method="post" id="loginForm">
<input type="hidden" name="method" value="login" />
<table>
<tr>
<td width="50">td>
<td><label class="error" id="msg">${msg }label>td>
tr>
<tr>
<td width="50">用户名td>
<td><input class="input" type="text" name="loginname" id="loginname"/>td>
tr>
<tr>
<td height="20"> td>
<td><label id="loginnameError" class="error">label>td>
tr>
<tr>
<td>密 码td>
<td><input class="input" type="password" name="loginpass" id="loginpass" value="${user.loginpass }"/>td>
tr>
<tr>
<td height="20"> td>
<td><label id="loginpassError" class="error">label>td>
tr>
<tr>
<td>验证码td>
<td>
<input class="input yzm" type="text" name="verifyCode" id="verifyCode" value="${user.verifyCode }"/>
<img id="vCode" src=" "/>
<a id="verifyCode">换张图a>
td>
tr>
<tr>
<td height="20px"> td>
<td><label id="verifyCodeError" class="error">label>td>
tr>
<tr>
<td> td>
<td align="left">
<input type="image" id="submit" src=" " class="loginBtn"/>
td>
tr>
table>
form>
div>
div>
div>
div>
div>
body>
html>
2.2 用户登录校验js
"font-size:18px;">$(function() {
/*
* 1. 让登录按钮在得到和失去焦点时切换图片
*/
$("#submit").hover(
function() {
$("#submit").attr("src", "/goods/images/login2.jpg");
},
function() {
$("#submit").attr("src", "/goods/images/login1.jpg");
}
);
/*
* 2. 给注册按钮添加submit()事件,完成表单校验
*/
$("#submit").submit(function(){
$("#msg").text("");
var bool = true;
$(".input").each(function() {
var inputName = $(this).attr("name");
if(!invokeValidateFunction(inputName)) {
bool = false;
}
});
return bool;
});
/*
* 3. 输入框得到焦点时隐藏错误信息
*/
$(".input").focus(function() {
var inputName = $(this).attr("name");
$("#" + inputName + "Error").css("display", "none");
});
/*
* 4. 输入框推动焦点时进行校验
*/
$(".input").blur(function() {
var inputName = $(this).attr("name");
invokeValidateFunction(inputName);
})
});
/*
* 输入input名称,调用对应的validate方法。
* 例如input名称为:loginname,那么调用validateLoginname()方法。
*/
function invokeValidateFunction(inputName) {
inputName = inputName.substring(0, 1).toUpperCase() + inputName.substring(1);
var functionName = "validate" + inputName;
return eval(functionName + "()");
}
/*
* 校验登录名
*/
function validateLoginname() {
var bool = true;
$("#loginnameError").css("display", "none");
var value = $("#loginname").val();
if(!value) {// 非空校验
$("#loginnameError").css("display", "");
$("#loginnameError").text("用户名不能为空!");
bool = false;
} else if(value.length < 3 || value.length > 20) {//长度校验
$("#loginnameError").css("display", "");
$("#loginnameError").text("用户名长度必须在3 ~ 20之间!");
bool = false;
}
return bool;
}
/*
* 校验密码
*/
function validateLoginpass() {
var bool = true;
$("#loginpassError").css("display", "none");
var value = $("#loginpass").val();
if(!value) {// 非空校验
$("#loginpassError").css("display", "");
$("#loginpassError").text("密码不能为空!");
bool = false;
} else if(value.length < 3 || value.length > 20) {//长度校验
$("#loginpassError").css("display", "");
$("#loginpassError").text("密码长度必须在3 ~ 20之间!");
bool = false;
}
return bool;
}
/*
* 校验验证码
*/
function validateVerifyCode() {
var bool = true;
$("#verifyCodeError").css("display", "none");
var value = $("#verifyCode").val();
if(!value) {//非空校验
$("#verifyCodeError").css("display", "");
$("#verifyCodeError").text("验证码不能为空!");
bool = false;
} else if(value.length != 4) {//长度不为4就是错误的
$("#verifyCodeError").css("display", "");
$("#verifyCodeError").text("错误的验证码!");
bool = false;
} else {//验证码是否正确
$.ajax({
cache: false,
async: false,
type: "POST",
dataType: "json",
data: {method: "ajaxValidateVerifyCode", verifyCode: value},
url: "/goods/UserServlet",
success: function(flag) {
if(!flag) {
$("#verifyCodeError").css("display", "");
$("#verifyCodeError").text("错误的验证码!");
bool = false;
}
}
});
}
return bool;
}</span>
3.1用户修改密码jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>pwd.jsptitle>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href=" ">
<link rel="stylesheet" type="text/css" href=" ">
<script type="text/javascript" src=" ">script>
<script type="text/javascript" src=" ">script>
<script src=" ">script>
head>
<body>
<div class="div0">
<span>修改密码span>
div>
<div class="div1">
<form action=" " method="post" target="_top">
<input type="hidden" name="method" value="updatePassword"/>
<table>
<tr>
<td><label class="error">${msg }label>td>
<td colspan="2"> td>
tr>
<tr>
<td align="right">原密码:td>
<td><input class="input" type="password" name="loginpass" id="loginpass" value="${user.loginpass }"/>td>
<td><label id="loginpassError" class="error">label>td>
tr>
<tr>
<td align="right">新密码:td>
<td><input class="input" type="password" name="newpass" id="newpass" value="${user.newpass }""/>