1环境的搭建
(1)创建包
(2)导入jar包
JSP:
- jstl包
web:
- beanutils
dao:
- c3p0
- 数据库连接
- Dbutils
(3)导入配置文件
- C3p0.xml
(4) 导入工具
1 连接池工具DataSource
2 邮件工具
3 MD5加密工具
(5)导入数据库脚本
2 用户模块
2.1注册基本功能实现
-
先找前台页面register.jsp
- Register.jsp提交数据到web层的Servlet,使用BeanUtils进行接收。BeanUtils把对象的属性数据封装到对象中。(需要注册一个转换器,当日期出现的时候自动转为要求的格式)
getPatameterMap是获取jsp提交的键值对,而一个键可能有多个值,所以返回的MAP是key=String和value=String[]
BeanUtils.populate BeanUtils.populate(bean,Map),其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。由于有的属性不是jsp页面提供的,所以要另外生成这些属性的值。
Uid state checkCode都没有,所以都要重新生成,由于id每次都要用到,所有把它放在了一个公共的工具类里。
(3)servlet数据提交到service层
(4)dao层数据库访问使用DBUtils
2.2 邮箱激活
业务分析:
- 用户注册成功,通过邮箱服务器给用户发送激活邮件。
- 用户点击邮箱会激活这个用户(状态码从0变为1),要想找到指定用户的状态码,必须有用户的id,所以,激活码为用户id。
Web层:激活码为用户id
dao层:根据id,改变用户的状态
关于邮箱的工具类,可以查看另一个博客
https://blog.csdn.net/A1342772/article/details/82183850
2.3 表单校验
分成前台校验和后台校验
前台校验:
(1)引入插件
- 编写验证的规则
$(function(){
$("#myform").validate({
rules:{
"username":{
"required":true,
"checkUsername":true
},
"password":{
"required":true,
"rangelength":[6,12]
},
"repassword":{
"required":true,
"rangelength":[6,12],
"equalTo":"#password"
},
"email":{
"required":true,
"email":true
},
"sex":{
"required":true
}
},
messages:{
"username":{
"required":"用户名不能为空",
"checkUsername":"用户名已存在"
},
"password":{
"required":"密码不能为空",
"rangelength":"密码长度6-12位"
},
"repassword":{
"required":"密码不能为空",
"rangelength":"密码长度6-12位",
"equalTo":"两次密码不一致"
},
"email":{
"required":"邮箱不能为空",
"email":"邮箱格式不正确"
}
}
});
});
如果预定义的校验规则尚不能满足需求的话可以进行自定义校验规则(在原来的校验的基础上加入新的校验):
自定义校验规则步骤如下:
(1) 使用$.validator.addMethod("校验规则名称",function(value,element,params)){}
对象
params是校验规则的参数
ajax可以查看另一个博客:
https://blog.csdn.net/A1342772/article/details/82183825
自定义校验可查看另一个博客:
https://blog.csdn.net/A1342772/article/details/82183835
//自定义校验规则
$.validator.addMethod(
//规则的名称
"checkUsername",
//校验的函数
function(value,element,params){
//定义一个标志
var flag = false;
//value:输入的内容
//element:被校验的元素对象
//params:规则对应的参数值
//目的:对输入的username进行ajax校验
$.ajax({
"async":false, "url":"${pageContext.request.contextPath}/checkUsername",
"data":{"username":value},
"type":"POST",
"dataType":"json",
"success":function(data){
flag = data.isExist;
}
});
//返回false代表该校验器不通过
return !flag;
}
);