SSH网上商城---用户激活
在前面的博客中,小编主要结合SSH网上商城这个项目,简单的介绍了如何实现邮件发送的这个功能,邮件发送了,接下来就是激活了,为什么呢?现在大多网站都要通过对账号进行激活,然后才能注册成功,这是防止恶性注册的措施,只要在注册账号时所填写的邮箱找到注册网站发来的邮件,并点击激活链接就可以完成激活。在上篇博客中,激活邮件已经发送完毕,接下来要做的就是点击邮箱里面的激活邮件,完成激活实现登录,那么这个功能该如何实现呢?今天这篇博客,小编就主要简单的来介绍一下如何实现用户激活这个功能,希望对有需要的小伙伴有帮助,还请各位大牛多多指教哦`(*∩_∩*)′!
首先第一步,我们在UserAction.java类里面编写一个用户激活的方法,代码如下所示:
/**
* 用户激活的方法
* author 丁国华
*/
public String active(){
//根据激活码查询用户:
User existUser=userService.findByCode(user.getCode());
//判断
if(existUser==null){
//激活码错误
this.addActionMessage("激活失败:激活码错误!");
}else{
//激活成功
//修改用户的状态
existUser.setState(1);
existUser.setCode(null);
userService.update(existUser);
this.addActionMessage("激活成功:请去登录!");
}
return "msg";
}
接着,第二步,我们来编写UserService.java类中方法,根据激活码查询用户,具体代码如下所示:
package cn.itcast.shop.user.service;
import org.springframework.transaction.annotation.Transactional;
import cn.itcast.shop.user.dao.UserDao;
import cn.itcast.shop.user.vo.User;
import cn.itcast.shop.utils.MailUitls;
import cn.itcast.shop.utils.UUIDUtils;
/**
* 用户模块业务层代码
* @author 丁国华
*
*/
@Transactional
public class UserService {
//注入UserDao
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao =userDao;
}
//按用户名查询用户的方法
public User findByUsername (String username){
return userDao.findByUsername(username);
}
//业务层完成用户注册代码
public void save(User user) {
//将数据存入到数据库
user.setState(0); //0代表用户激活 1代表用户已经激活
String code = UUIDUtils.getUUID()+UUIDUtils.getUUID();
user.setCode(code);
userDao.save(user);
//发送激活邮件
MailUitls.sendMail(user.getEmail(), code);
}
//业务层根据激活码查询用户
public User findByCode(String code) {
return userDao.findByCode(code);
}
//修改用户的状态的方法
public void update(User existUser) {
userDao.update(existUser);
}
}
接着,第三步,我们来编写UserDao.java类中的方法,具体代码如下所示:
package cn.itcast.shop.user.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
import cn.itcast.shop.user.vo.User;
/**
* 用户模块持久层代码
* @author 丁国华
*
*/
public class UserDao extends HibernateDaoSupport {
//按名次查询是否有该用户
public User findByUsername (String username){
String hql ="from User where username= ?";
List <User> list=this.getHibernateTemplate().find(hql,username);
if(list !=null && list.size() > 0){
return list.get(0);
}
return null;
}
//注册用户存入数据库代码实现
public void save(User user) {
// TODO Auto-generated method stub
this.getHibernateTemplate().save(user);
}
//根据激活码查询用户
public User findByCode(String code) {
String hql = "from User where code =?";
List<User> list=this.getHibernateTemplate().find(hql,code);
if(list !=null && list.size() > 0){
return list.get(0);
}
return null;
}
//修改用户状态的方法
public void update(User existUser) {
this.getHibernateTemplate().update(existUser);
}
}
至此,我们的代码部分就已经编写完毕了,我们来看一下运行效果,首先我们来注册一个用户,如下图所示:
点击同意以下协议并注册,出现如下界面:
接着,来看一下小编的邮箱是否收到激活邮件,如下图所示:
点击激活链接,我们来看一下会有怎么样的奇迹nie,如下图所示:
小编寄语:该博文,小编主要简单介绍了如何激活用户,总的来说,实现的思路就是在邮箱客户端中点击激活链接,然后根据传递激活码进行用户查询,如果用户不为空,我们就修改用户的状态;如果用户为空,那就证明激活码被篡改了,SSH网上商城,精彩未完待续~~~~~~
SSH网上商城---用户激活的更多相关文章
- SSH网上商城---邮件发送
注册网站账号的时候,都需要发送激活邮件,然后让注册的用户点击激活链接方可完成注册,不过话说回来,为什么注册的时候需要发送邮件呢?为什么不注册的时候直接激活呢?一定要收一封激活帐号的邮件?网站这样做的好 ...
- SSH网上商城---需求分析+表关系分析
SSH---小编初次接触的时候傻傻的以为这个跟SHE有什么关系呢?又是哪路明星歌手,后来才知道小编又土鳖了,原来SSH是这个样子滴,百度百科对她这样阐述,SSH即 Spring + Struts +H ...
- 《SSH网上商城》-视频目录--代码可以跑起来
本课程是2015年2月份的,就是14年底的. 课程第一天的代码-添加 jsp-api.jar servlet-api.jar就可以跑起来,环境 JDK1.7 和tomcat8, SSH网上商城\S ...
- SSH网上商城一
Java高级项目之SSH网上商城项目实战: 1.采用目前最主流的三大框架开发即Struts2+Spring+Hibernate框架整合开发.2.通过AJAX技术提供良好的用户体验.3.提供了邮箱激活的 ...
- SSH网上商城---使用ajax完成用户名是否存在异步校验
小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她 ...
- [Java]ssh网上商城总结 标签: hibernatessh 2016-05-15 21:03 1099人阅读 评论(32)
前几日敲完了ssh网上商城,虽然现在已经敲完了整个系统,却发现自己对于ssh,了解的一点都不多,什么是struts2,什么是spring,什么是hibernate,自己都是稀里糊涂,然后看了一下后面的 ...
- 【SSH网上商城项目实战25】使用java email给用户发送邮件
转自: https://blog.csdn.net/eson_15/article/details/51475046 当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息, ...
- 【SSH网上商城项目实战30】项目总结
转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...
- 【SSH网上商城项目实战30】项目总结(附源码下载地址)
项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...
随机推荐
- [Codeforces 933B]A Determined Cleanup
Description 题库链接 给你两个正整数 \(p,k\) ,询问是否能够构造多项式 \(f(x)=\sum\limits_{i=0}^{d-1}a_ix^i\) ,使得存在多项式 \(q(x) ...
- [JLOI 2014]松鼠的新家
Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在”树“上. 松鼠想 ...
- 【NOIP2013】华容道 广搜+spfa
题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...
- THUWC逛街记
1/28 这次打算去THUWC划个水,就定了1/29中午的飞机.同校有几个同学去PKUWC,求稳搭今天的飞机.中午时候听说今天飞长沙的飞机全都取消了,明天有没有也不好说( 事实证明29号有飞机:( ) ...
- python 用codecs实现数据的读取
import numpy as np import codecs f=codecs.open('testsklearn.txt','r','utf-8').readlines() print(f) d ...
- 手机上的ROM与RAM
ROM:read only memory翻译为只读存储器. RAM:read access memory翻译为随机存储器. 下面是一张手机的配置参数表. 简单来说,RAM就是真正意义上的内存,而ROM ...
- Python3玩转儿 机器学习(4)
jupyternotebook 的使用方法¶ 最基本的使用¶ In [1]: 1+2 Out[1]: 3 菜单树¶ File¶ |------> New Notebook --- ...
- js删除数组中的元素delete和splice的区别
例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1] 结果为: ...
- easyui datagrid 横向滚动条
要出现横向滚动条则不能有fitColumns:true/false
- 装 ubuntu + win10 出现 grub rescue 并处理之
开机出现 grub rescue 原因:装 ubuntu + win10 双系统时有可能搞坏启动文件. grub rescue 隶属于 ubuntu管理. grub rescue 里可用命令很少,主要 ...