1.开发准备
1.1导入所需框架对应jar包
友情连接https://github.com/OMGye/upupgogogo/tree/master/WebRoot/WEB-INF/lib
1.2新建框架所需配置文件(和三大框架沟通的桥梁)
第一步:由于采用的是struts2而不是servlet,我们需要把action的类名,方法名,返回值写在struts配置文件中 第二步:spring的核心有两大块,一是ioc(控制反转),我们把数据库的连接,以及用户模块每一层的对象都交给application配置文件来管理,包括action对象,但是action对象必须是多例的,二是aop(面向切面编程),我们需要配置处理数据的事务问题。 第三步:web.xml是实现整个项目的与服务器的连接,所以我们需要把struts和application配置文件配置在web.xml中,可以让服务器识别action以及在服务器启动的时候能够初始化application配置文件。
2.数据准备
2.1设计用户的数据表
hibernate用面向对象的思想来操作数据库,通过编写javabean和相应的user.hbm.xml配置文件来创建数据表,并产生一一对应的关系,我这里编写的配置文件为了方便,属性的大小都是采用缺省值,这里是不可取的。配置一一对应的关系时,我们也要设置其大小,提高可扩展性和避免造成内存的浪费。 下面来介绍一下每个字段 1.date和redate(时间戳) ---->创建时间和修改时间 2.uid(primary key ,not null) ----> 用户id 3.email ---->邮箱,这里用来当作username 4.birthday ---->出生日期 5.state ---->用户状态(因为这里注册的用户需要通过邮件激活,以0,1的数据来展示其状态) 6.code ---->激活码(每个用户注册时都会通过UUID来生成一个唯一的激活码,激活后的用户激活码便变为null,以免重复激活)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`birthday` datetime DEFAULT NULL,
`date` datetime DEFAULT NULL,
`redate` datetime DEFAULT NULL,
`state` int(11) DEFAULT NULL,
`code` varchar(255) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('5', '[email protected]', '147258', '2017-10-18 00:00:00', '2017-10-18 11:49:33', '2017-10-18 11:49:33', '1', null);
3.设计注册功能
3.1前台页面的js设计
我们设计好页面之后,需要对表单里面的文本框进行js的检测,首先email的通过正则表达式检测是否格式正确,密码和重复密码是否一致,密码位数是否大于等于6
3.2后台代码设计
后台我们按照mvc的模式编写好每一层的代码,还有我们需要通过ajax来检测用户名(emali)是否已经存在 function checkEmail(){
var email = document.getElementById("email").value;
var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9][email protected]([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
if(!myreg.test(email)){
document.getElementById('tip').innerHTML = "邮箱格式不正确";
return false;
}
// 1.创建异步交互对象
var xhr = createXmlHttp();
// 2.设置监听
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
document.getElementById("tip").innerHTML = xhr.responseText;
}
}
}
// 3.打开连接
xhr.open("GET","${pageContext.request.contextPath}/user_findByEmail.action?time="+new Date().getTime()+"&email="+email,true);
// 4.发送
xhr.send(null);
}
function createXmlHttp() {
var xmlHttp;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{// Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return xmlHttp;
}
除了前台页面的提醒,我们还需要编写一个拦截器来避免用户提交过来的数据格式不正确。
3.3邮箱的验证 我们保存好用户传递过来的数据的同时,我们还需要去通过163的邮箱服务器(用其他的邮箱服务器也可以)来发送激活邮件修改用户状态和激活码(初始状态为0).java提供了已经封装好了mail.jar来操作邮箱服务器,当用户到自己邮箱中点击激活链接之后便修改了状态的激活码
邮箱服务链接https://github.com/OMGye/upupgogogo/blob/master/src/com/upupgogo/util/MailUtil.java 可以通过访问www.chaoaiyue.cn,点击注册来查看功能演示