用户注册 - 快速安全注册账号
<p><%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%></p>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>用户注册</title>
<pre><code> <!--全局JS-->
<script src="/js/jquery-2.1.4.min.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/bootstrap-dialog.js" type="text/javascript"></script>
<script src="/js/bootstrapValidator.min.js" type="text/javascript"></script>
<!--全局CSS-->
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/bootstrap-dialog.css" rel="stylesheet" type="text/css" />
<link href="/css/bootstrapValidator.min.css" rel="stylesheet" type="text/css" />
<link href="/css/register.css" rel="stylesheet" type="text/css" />
<!--插件CSS-->
<link href="/static/plugins/bootstrap_login/css/style.css" rel="stylesheet" media="screen">
<link href="/static/plugins/bootstrap_login/css/reset.css" rel="stylesheet" type="text/css" />
<!-- 全局CSS -->
<link href="/static/plugins/bootstrap_cms/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/plugins/bootstrap_cms/css/font-awesome.min.css?v=4.4.0" rel="stylesheet">
<link href="/static/plugins/bootstrap_cms/css/animate.css" rel="stylesheet">
<link href="/static/plugins/bootstrap_cms/css/style.css?v=4.1.0" rel="stylesheet">
<!-- 对等js -->
<script src="${pageContext.request.contextPath}/static/js/index/register.js" type="text/javascript"></script>
</head>
</code></pre>
<body style="background: #D6E4FF;">
<div class="dataEye">
<div class="loginbox registbox">
<div class="login-content reg-content">
<div class="loginbox-title">
<h3>注册</h3>
</div>
<form id="form" <%--method="post" action="${pageContext.request.contextPath }/user/register1"--%>>
<div class="form-group" style="padding-left: 20px;">
<input placeholder="用户昵称" class="form-control"
id="nickName" name="nickName" style="width: 300px;" />
</div>
<div class="form-group" style="padding-left: 20px;">
<input placeholder="邮箱地址" type="text" class="form-control"
id="email" name="email" style="width: 300px;" />
</div>
<div class="form-group" style="padding-left: 20px;">
<input placeholder="密码" type="password" class="form-control"
id="password" name="password1" style="width: 300px;" />
</div>
<div class="form-group" style="padding-left: 20px;">
<input placeholder="确认密码" type="password" class="form-control"
id="passwordACK" name="passwordACK" style="width: 300px;" />
</div>
<div class="row tips form-group">
<input type="checkbox" name="checkBox" id="checkBox">
<label>
我已阅读并同意
<a href="#" target="_blank">隐私政策、服务条款</a>
</label>
</div>
<div class="form-group" style="padding-left: 40px;line-height:80px;">
<button type="submit" name="submit" class="btn btn-primary" style="width: 300px;">注册</button>
</div>
</form>
</div>
<div class="go-regist">
已有帐号,请<a href="${pageContext.request.contextPath}/login.jsp" class="link">登录</a>
</div>
</div>
</div>
</body>
<script type="text/javascript">
</script>
</html>
<p>//初始化参数
var nickName;
var email;
var password1;
var ctx="http://localhost:6060/";</p>
<p>$(function () {
//注册选项验证
formValidator();
console.log("register");
});</p>
<p>//参数值收集
function collectParams(){
nickName = $("#nickName").val();
email = $("#email").val();
password = $("#password1").val();
}</p>
<p>//注册选项验证
function formValidator(){
$("#form").bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
nickName: {
message: '用户名验证失败',
validators: {
notEmpty: {
message: '用户名不能为空'
},
stringLength: {
min: 3,
max: 18,
message: '用户名长度必须在3到18位之间'
}
}
},
email: {
validators: {
notEmpty: {
message: '邮箱不能为空'
},
emailAddress: {
message: '邮箱地址格式有误'
},
//ajax后端校验
remote: { // 需求一个json数据({'valid': true or false})
url: ctx+'/user/checkOne.do', //验证地址
message: '该用户已存在', //提示信息
delay: 2000,//ajax刷新的时间是2秒一次,这个值过小会对服务器造成压力
type: 'POST', //请求方式
data: function(validator){ //自定义提交数据,默认为当前input name值
return {
act: 'is_registered',
email: $("input[name='email']").val()
};
}
}
}
},
//一次密码不能为空,并符合复杂度
password: {
validators: {
notEmpty: {
message: '密码不能为空'
},
regexp : {
regexp : /^(?:(?=.<em>[A-Z])(?=.</em>[a-z])(?=.<em>[0-9])|(?=.</em>[A-Z])(?=.<em>[a-z])(?=.</em>[^A-Za-z0-9])|(?=.<em>[A-Z])(?=.</em>[0-9])(?=.<em>[^A-Za-z0-9])|(?=.</em>[a-z])(?=.<em>[0-9])(?=.</em>[^A-Za-z0-9])).{6,16}$/,
message : '用户新密码长度为6至16位,并且需要包含数字、小写字母、大写字母、符号(至少三种)'
}
}
},
//二次密码不能为空,和一次密码保持一致
passwordACK: {
validators: {
notEmpty: {
message: '密码不能为空'
},
regexp : {
regexp : /^(?:(?=.<em>[A-Z])(?=.</em>[a-z])(?=.<em>[0-9])|(?=.</em>[A-Z])(?=.<em>[a-z])(?=.</em>[^A-Za-z0-9])|(?=.<em>[A-Z])(?=.</em>[0-9])(?=.<em>[^A-Za-z0-9])|(?=.</em>[a-z])(?=.<em>[0-9])(?=.</em>[^A-Za-z0-9])).{6,16}$/,
message : '用户新密码长度为6至16位,并且需要包含数字、小写字母、大写字母、符号(至少三种)'
},
identical: { //比较是否相同
field: 'password1', //需要进行比较的input name值
message: '两次密码不一致'
},
}
},
checkBox: {
validators: {
notEmpty: {
message: '请同意用户注册须知'
},
//前端JS校验
callback: {
callback: function (value, validator){
if(value == "on"){
return true;
}
else{
return false;
}
}
}
}
}
}
}).on('success.form.bv',function(){
console.log("register success!");
//参数收集
collectParams();
//发送Ajax
$.ajax({
url: ctx+"/user/register.do",
type:"POST",
data:{"nickName":nickName,"email":email,"password1":password1},
success:function(data){
if(data == true){
//模态框
BootstrapDialog.show({
title: '',
closable: false,//是否显示关闭图表 X
message: '注册成功!',
//添加按钮动作
buttons: [{
label: '确定',//按钮名称
action: function(dialog) {
//注册成功,跳转到登录界面
window.location.href=ctx+"/static/page/index/login.jsp";
}
}]</p>
<pre><code> });
}
},
dataType:"json"
});
});
</code></pre>
<p>}
//注册json逻辑
@RequestMapping("/user/checkOne.do")
@ResponseBody
public Map<String, Boolean> checkUserRegistered(String email,HttpServletResponse response, HttpSession session, HttpServletRequest request) {
boolean isRegistered = adminService.JDBCSelectEmail2(email);
Map<String, Boolean> result = new HashMap<>();
result.put("valid", !isRegistered);
return result;
}
//注册ajax
@RequestMapping( "/user/register.do")
@ResponseBody
public void registerAjax(String email, String password1, String nickName, HttpServletResponse response, HttpSession session, HttpServletRequest request) throws IOException {
System.out.println("this is registerAjax");
/* List<admin> list = adminService.JDBCselectEmail(email,password1);
boolean result=false;
if(list.size()>0){
session.setAttribute("nickname",list.get(1));
result=true;
}
String jsonString = JSON.toJSONString(result);
response.getWriter().write(jsonString);*/
//生成4位盐值
String salt = GeneralUtil.generateCode();
//盐值+密码
String codepass = salt + password1;
String md5Digest = MD5.getMD5Digest(codepass);
admin admin = new admin();
admin.setAdmin_email(email);admin.setAdmin_nickname(nickName);admin.setAdmin_password(md5Digest);
//添加盐值
admin.setAdmin_salt(salt);
boolean bl = admin.insert();
boolean result=false;
if (bl == true){
result=true;
}
String jsonString = JSON.toJSONString(result);
response.getWriter().write(jsonString);
}
2023-04-05 03:46:26,128 [WARN] [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=55s228ms149µs700ns).</p>
原文地址: https://www.cveoy.top/t/topic/m2vh 著作权归作者所有。请勿转载和采集!